standalone模式下Spark运行过程总结

在standalone模式下运行时的消息通信过程分以下两个阶段:

一、spark集群启动时的消息通信过程

当启动master后(start-master.sh),随之启动各个worker(start-slave.sh spark://whz:7077)。worker节点向master节点发送注册消息如图所示

master收到消息后需要对worker发送的信息进行验证记录。如果注册成功则发送RegisteredWorker消息给对应的worker,告诉worker已经完成注册,随后注册成功的worker会定时发送心跳消息给master;如果注册失败则会发送RegisterWorkerFailed消息,worker打印出错日志并结束worker的启动。master发送注册成功消息情况如图所示

二、spark集群运行作业时的消息通信过程

用户提交应用程序时,例如启动spark-shell(spark-shell --master spark://whz:7077),应用程序的SparkContext会向master发送应用注册消息,master收到消息如图所示

master处理消息完后会给该应用分配Executor,即向存活的worker发送启动Executor进程的消息(即LaunchExecutor消息),worker收到消息后的动作如图所示

 

可看出worker收到消息后会进行验证记录然后实例化ExecutorRunner对象,在ExecutorRunner启动中会创建进程生成器ProcessBuilder,然后由该生成器使用command创建CoarseGrainedExecutorBackend对象,该对象是Executor运行的容器,最后worker发送ExecutorStateChanged消息给master,通知Executor容器已经创建完毕。该过程如图所示:

 

如果应用被kill或失败或运行结束退出,则SparkContext会向master发送取消应用注册消息,如下所示

master收到消息后通知worker杀掉该应用对应的Executor并通知master,如下所示

注意:如果启动spark-shell或spark-sql不带--master spark://whz:7077参数指定管理集群资源分配的master,则该应用是以local的方式运行在本地环境,不属于分布式计算,以spark-shell为例带--master参数和不带两种提交应用方式差距如下两图所示:

并且不带--master参数指定sparkmaster启动应用如spark-shell时,此时的Spark Master 和Spark Worker的WEB UI上 (http://localhost:8080/对应spark://whz:7077、http://localhost:8081/对应127.0.0.1:55796)不会有应用程序的记录信息和运行该应用的Executor记录信息,如下两图所示:

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值