Spark2.2.2原始碼解析: 3.啟動worker節點啟動流程分析
阿新 • • 發佈:2018-12-07
本文啟動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]) 方法
接下來看如何開啟的
|
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/