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