Spark集群中的Master和Worker之间的通信原理

worker是如何知道master在哪台机器上的?在配置文件中也没有配。

配置文件如下:

export JAVA_HOME=/apps/jdk1.8.0_171
export SCALA_HOME=/apps/scala-2.11.7
#export HADOOP_HOME=/apps/hadoop-2.8.0/
#export HADOOP_CONF_DIR=/apps/hadoop-2.8.0/etc/hadoop
#export SPARK_MASTER_IP=master.hadoop
export SPARK_WORKER_MEMORY=512m
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master.hadoop:2181,slave1.hadoop:2181,slave2.hadoop:2181  -Dspark.deploy.zookeeper.dir=/spark"

start-all.sh启动的时候会调用另外的两个脚本,分别是start-master.sh和start-slaves.sh

start-master.sh是启动的本地的master

start-slaves.sh会根据slaves文件里面配置的主机名,通过ssh的方式启动这些机器上的Worker

master启动后会连zookeeper,因为在spark-env.sh中配置了SPARK_DAEMON_JAVA_OPTS。Worker也会连zookeeper,然后通过zookeeper知道master的地址。所以说Worker是间接地通过zookeeper知道master的位置的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章