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/

猜你喜欢

转载自blog.csdn.net/zhanglong_4444/article/details/84846971