Spark基础架构

YARN Cluster模式

  1. 在命令行提交作业

  2. YARN集群中的Resource Manager在众多Node Manager中挑一个启动Application Master,并在该节点中创建SparkContext,作为Driver节点

  3. 在AM(Application Master)启动后并将自己注册为一个YARN AM之后,才会开始执行用户提交的application。AM会通过YARN RM和NM的接口在集群中启动若干容器,用于启动Executor

  4. 成功申请到资源并启动Executor之后,Driver与Executor通过Akka应用进行消息接受和发送

YARN Driver模式

  1. 在命令行提交作业

  2. YARN RM请求启动ApplicationMaster,但是这里的ApplicationMaster其实只是一个ExecutorLauncher,但是它的功能是很有限的

  3. 在AM启动后,会向RM申请container,RM分配一批container,AM连接NM,然后在NM上启动Executor,但是此时Executor并不像cluster模式那样去向AM反向注册,此时Executor会向本地的Driver机器去注册

  4. 成功申请到资源并启动Executor之后,Driver与Executor通过Akka应用进行消息接受和发送

对比一下两种模式

1、yarn-client用于测试,因为driver运行在本地客户端,负责调度aplication,会与yarn集群产生大量的网络通信,从而导致网卡流量激增。好处在于,直接执行时,本地可以看到所有的log,方便调试。

2、yarn-cluster用于生产环境,因为driver运行在nodemanager,没有网卡流量激增的问题,缺点在于调试不方便,本地用spark-submit提交之后,看不到log,只能通过yarn application -logs application_id 这种命令来查看,不方便。

相关博客:

https://blog.csdn.net/baidu_35901646/article/details/81612164

https://www.jianshu.com/p/e8d806506578

https://zhuanlan.zhihu.com/p/61902619

相关书籍:

《Spark技术内幕》

《Apache Spark源码剖析》

最后更新于

这有帮助吗?