到目前为止,我只在Linux机器和虚拟机(桥接网络)上运行Spark,但现在我对使用更多计算机作为奴隶感兴趣.在计算机上分发Spark Slave Docker容器并让它们自动连接到硬编码的Spark master ip会很方便.这个缺点已经工作但是我在从属容器上配置正确的SPARK_LOCAL_IP(或start-slave.sh的--host参数)时遇到了问题.
我认为我正确配置了SPARK_PUBLIC_DNS env变量以匹配主机的网络可访问ip(来自10.0.xx地址空间),至少它显示在Spark主Web UI上并且可供所有机器访问.
我还按照http://sometechshit.blogspot.ru/2015/04/running-spark-standalone-cluster-in.html的说明设置了SPARK_WORKER_OPTS和Docker端口转发,但在我的情况下,Spark master正在另一个上运行机器而不是Docker内部.我正在从网络中的其他机器启动Spark作业,可能还运行从机本身.
我试过的事情:
我想知道为什么连接到从设备时没有使用配置的SPARK_PUBLIC_DNS?我以为SPARK_LOCAL_IP只会影响本地绑定但不会泄露给外部计算机.
在https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/troubleshooting/connectivity_issues.html,他们指示"将SPARK_LOCAL_IP设置为驱动程序,主服务器和工作进程的集群可寻址主机名",这是唯一的选择吗?我会避免额外的DNS配置,只需使用ips配置计算机之间的流量.或者有一种简单的方法来实现这一目标吗?
编辑: 总结当前设置: