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的位置的。

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