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的方式启动远端的worker
spark-daemon.sh start org.apache.spark.deploy.worker.Worker
Master和Worker是两个Java进程 他们启动的时候会加载一些参数 spark-env.sh这里边的环境变量。
1.如何使用远程Master Debug
在Master端的spark-env.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按钮开始调试
2.如何使用远程Worker Debug
在Worker
所在节点的配置文件中添加一个环境变量
export SPARK_WORKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10001"
start-slave.sh spark://MasterIp:7077
执行jps命令
2891 -- main class information unavailable
2923 Jps
用一个IDE工具连接 建立一个remote application
172.16.0.12 10001
在本地的代码打断点,debug按钮开始调试
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
任务提交流程
spark-submit --class cn.itcast.spark.WordCount
bin/spark-clas -> org.apache.spark.deploy.SparkSubmit
调用这个类的main
方法
doRunMain方法
中传进来一个自定义spark应用程序的main方法class cn.itcast.spark.WordCount
通过反射拿到类的实例的引用mainClass = Utils.classForName(childMainClass)
在通过反射调用class cn.itcast.spark.WordCount的main
方法
用一个IDE工具连接 建立一个remote application
172.16.0.13 10002
在本地的代码打断点,debug按钮开始调试
网友评论