用户酶:我在防火墙后面,并且有一个可以访问的远程火花群集,但是这些机器无法直接连接到我。
正如Spark Doc所说,工人有必要达到驾驶员程序:
由于驱动程序在集群上安排任务,因此应运行 接近工人节点,最好在同一局域网上。 如果您想远程发送请求,最好 向驾驶员打开RPC,并从附近提交操作
将驾驶员远离驾驶员。
建议的解决方案是在群集上运行一个服务器进程,并让其在本地执行Spark驱动程序程序。
这样的程序已经存在吗?这样的过程应管理1 RPC,返回异常和处理日志。
在这种情况下,我的本地程序还是必须创建SparkContext的火花驱动程序?
注意:我有一个独立的群集
解决方案1 :
一种简单的方法是使用群集模式(类似于--deploy-mode cluster
(作为独立群集,但是文档说:
当前,独立模式不支持Python的集群模式 应用。
只有几个选项:
- 使用
ssh
,启动screen
,提交Spark应用程序,回去检查结果。 - 在群集上部署中间件,例如作业服务器,利维或雾气,并将其用于提交。
- 在群集上部署笔记本(Zeppelin,Toree(,并从笔记本上提交应用程序。
- 将固定的
spark.driver.port
和ssh
设置为通过一个群集节点转发所有连接,使用其IP作为spark.driver.bindAddress
。