我一直在努力让Spark纱线客户端模式通过VPN工作。更具体地说,火花驱动器将从我的笔记本电脑本地启动,而纱线集群在其自己的专用网络中通过非桥接VPN可到达。 第一个挑战是使火花集群的火花驱动器服务可以到达,因为VPN是单向的,我的笔记本电脑不能从集群中路由。 我设法通过在/ etc / hosts中添加一个条目将公共域名指向我的本地网络IP来实现这一点,例如
192.168.0.6 spark.driver.mydomain
然后我设置spark.driver.host = spark.driver.mydomain。 现在spark驱动程序可以成功绑定到spark.driver.mydomain,并告诉yarn应用程序管理器连接到spark.driver.mydomain。我还需要通过修改我的域的DNS来配置spark.driver.mydomain以指向我的公共IP,并配置防火墙以使该服务公开可用。 现在我可以从我的笔记本电脑中运行火花来驱动集群,几乎就在那里。但是SparkUI不起作用。没有办法连接到SparkUI,尽管消息说它已经在spark.driver.mydomain:4040上完成了。我使用DMZ通过本地网络的防火墙打开了所有端口。我也尝试使用本地网络IP地址。我可以注意到它被重定向到纱线资源管理器链接,http://resourcemanager/proxy/application_id但最终只是超时,我还没有弄清楚代理的工作原理。 火花会议偶尔也会发出警告信息,如
WARN ReliableDeliverySupervisor:与远程系统关联 [akka.tcp:// sparkExecutor @ executor:port]失败了,地址是 现在为[5000] ms门控。原因是:[解除关联]。
尽管有警告信息,基本的火花动作仍然有效。 还有很多问题和疑问
最后,这是一个JIRA问题,可能会导致更一般的解决方案。 https://issues.apache.org/jira/browse/SPARK-5113