start-all.sh -> start-master.sh -> start-slaves.sh
1.Master啟動的腳本
start-master.sh -> spark-daemon.sh start org.apache.spark.deploy.master.Master
2.Worer的啟動過程
salves.sh -> 通過讀取slaves, 通過ssh的方式啟動遠(yuǎn)端的worker
spark-daemon.sh start org.apache.spark.deploy.worker.Worker
Master和Worker是兩個Java進(jìn)程 他們啟動的時候會加載一些參數(shù) spark-env.sh這里邊的環(huán)境變量。
1.如何使用遠(yuǎn)程Master Debug
在Master端的spark-env.sh文件中添加如下參數(shù)
export SPARK_MASTER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10000"
啟動start-master.sh,
jps
4828 -- main class information unavailable
4860 Jps
通過IDE 建立一個remote application
Master主機IP 10000
在本地的代碼打斷點,debug按鈕開始調(diào)試
2.如何使用遠(yuǎn)程Worker Debug
在Worker所在節(jié)點的配置文件中添加一個環(huán)境變量
export SPARK_WORKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10001"
start-slave.sh spark://MasterIp:7077
執(zhí)行jps命令
2891 -- main class information unavailable
2923 Jps
用一個IDE工具連接 建立一個remote application
172.16.0.12 10001
在本地的代碼打斷點,debug按鈕開始調(diào)試
3.Debug App (--driver-java-options)
bin/spark-submit --class cn.itcast.spark.WC --master spark://node-1.itcast.cn:7077 --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10002" /root/bigdata-2.0.jar hdfs://node-1.itcast.cn:9000/words.txt hdfs://node-1.itcast.cn:9000/wordsout
任務(wù)提交流程
spark-submit --class cn.itcast.spark.WordCount
bin/spark-clas -> org.apache.spark.deploy.SparkSubmit調(diào)用這個類的main方法
doRunMain方法中傳進(jìn)來一個自定義spark應(yīng)用程序的main方法class cn.itcast.spark.WordCount
通過反射拿到類的實例的引用mainClass = Utils.classForName(childMainClass)
在通過反射調(diào)用class cn.itcast.spark.WordCount的main方法
用一個IDE工具連接 建立一個remote application
172.16.0.13 10002
在本地的代碼打斷點,debug按鈕開始調(diào)試