1. 程式人生 > >Spark2.2.2原始碼解析: 3.啟動worker節點啟動流程分析

Spark2.2.2原始碼解析: 3.啟動worker節點啟動流程分析

本文啟動worker節點啟動流程分析

 

啟動命令:

${SPARK_HOME}/sbin/start-slave.sh spark://sysadmindeMacBook-Pro.local:7077

 

檢視start-slave.sh

 

執行指令碼:

/workspace/spark-2.2.2/sbin/spark-daemon.sh start org.apache.spark.deploy.worker.Worker 1 --webui-port 8081   spark://sysadmindeMacBook-Pro.local:7077 
 

 

 

 

發現呼叫spark-daemon.sh指令碼

開啟指令碼

發現最終呼叫的執行指令碼為 bin目錄下的 spark-class 指令碼

 

這裡分兩步:

1.呼叫java指令碼構建shell命令

呼叫java類:

org.apache.spark.launcher.Main 

 

 

 

 

 

 

最終輸出到shell指令碼命令如下:

/Library/java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/bin/java -cp /workspace/spark-2.2.2/conf/:/workspace/spark-2.2.2/assembly/target/scala-2.11/jars/* -Xmx1g org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://sysadmindeMacBook-Pro.local:7077

 

 

 

2.shell指令碼執行shell命令

執行org.apache.spark.deploy.worker.Worker類中的方法

類中的內容:

 

先看def main(argStrings: Array[String]) 方法

接下來看如何開啟的

val rpcEnv = startRpcEnvAndEndpoint(args.host, args.port, args.webUiPort, args.cores,
  args.memory, args.masters, args.workDir, conf = conf)


 

 

 

 

createWorkDir 建立工作目錄

 

註冊master

 

sendRegisterMessageToMaster(masterEndpoint)

將work節點資訊傳送給master

sendRegisterMessageToMaster(masterEndpoint)

接下來就要看master裡面recevice方法的

      ReregisterWorker

 

主要關注兩個地方:

1.註冊worker

registerWorker(worker)

2.排程

schedule

 

 

先說:registerWorker(worker) 這裡主要乾的事就是註冊worker

 

schedule 這裡是排程方法,

基本上對叢集資源的變更,節點狀態的改變,任務的提交,都會執行此排程

在work啟動裡面,就可以理解為重新整理資源資訊就好了,後面會做詳細解釋

 

啟動成功可以通過瀏覽器進行觀看

地址: http://192.168.103.188:8080/