我的问题是从其他节点到主节点的从节点之间的连接。 我有3个节点设置如下:
docker-compose打开这些端口:
version: '2'
services:
spark:
image: xxxxxxxx/spark
tty: true
stdin_open: true
container_name: spark
volumes:
- /var/data/dockerSpark/:/var/data
ports:
- "7077:7077"
- "127.0.0.1:8080:8080"
- "7078:7078"
- "127.0.0.1:8081:8081"
- "127.0.0.1:9010:9010"
- "4040:4040"
- "18080:18080"
- "6066:6066"
- "9000:9000"
conf / spark-env.sh如下:
#export STANDALONE_SPARK_MASTER_HOST=172.xx.xx.xx #This is the docker Ip adress on the node
#export SPARK_MASTER_IP=$STANDALONE_SPARK_MASTER_HOST
export SPARK_WORKER_MEMORY=7g
export SPARK_EXECUTOR_MEMORY=6G
export SPARK_WORKER_CORES=4
export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=86400 -Dspark.worker.cleanup.appDataTtl=86400"
我的问题是从其他节点到主节点的从节点之间的连接,所以我首先启动主节点 sbin / start-master.sh 。 在我的第一次尝试中,第2行被评论,主人在这个地址开始 spark:// c96 ____ 37fb:7077。 我使用这些命令连接成功的节点:
之前引用的所有端口都从nodeMaster重定向到相应的docker。
所以webUI告诉我,我的集群有3个连接的节点,不幸的是,当它运行时,只有并置的节点正在工作,其他两个节点不断地断开连接并重新连接到应用程序而没有做任何事情。
接下来,我尝试将 STANDALONE_SPARK_MASTER_HOST = 172.xx.xx.xx 更改为nodeMasterIP的值为1,但是主服务器未启动,而是由172.xxx地址更改为2 masterNode中的docker ip地址。第二次尝试有效,webUi向我显示了以下地址 spark://172.xx.xx.xx:7077 。 然后奴隶成功连接,但两个外部奴隶再次没有任何活动迹象。
Spark SPARK_PUBLIC_DNS and SPARK_LOCAL_IP on stand-alone cluster with docker containers给了我一部分衣服,但不是我想要的那个,因为通过将 network_mode:" host" 添加到docker-compose.yml我成功了在 STANDALONE_SPARK_MASTER_HOST = ipNodeMaster 构建我的群集并将其连接到它。执行没问题但是在收集操作时停止了此错误 org.apache.spark.shuffle.FetchFailedException:无法连接到xxx / yy.yy.yy.yy:36801 这似乎是一个端口问题。
但我真正担心的是,我不想在masterNode的localhost上运行spark master docker,而是在自己的docker网络上运行(" bridge")。
感谢您的明智建议!
答案 0 :(得分:0)
通过触发主从VM容器中的spark-class,我尝试了另一种方法
version: "2"
services:
spark-master:
image: spark/mastertool:2.2.1
command: /opt/spark/bin/spark-class org.apache.spark.deploy.master.Master
hostname: spark-master
environment:
MASTER: spark://localhost:port
SPARK_CONF_DIR: /opt/conf
SPARK_PUBLIC_DNS: xxx.xxx.xxx.xxx
ports:
- 8080:8080
- 7077:7077
- 6066:6066
- 4040:4040
以上是用于主虚拟机的docker-compose
以下是用于从属虚拟机的docker-compose
version: "2"
services:
spark-worker:
image: spark/workertool:2.2.1
command: /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://private-ip-of-master_cluster:xxxx
hostname: spark-worker
environment:
SPARK_CONF_DIR: /conf
SPARK_PUBLIC_DNS: xx.xxx.xx.xxx
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 2g
SPARK_WORKER_PORT: xxxx
SPARK_WORKER_WEBUI_PORT: xxxx
ports:
- 8xxx:xxxx