Spark基础架构
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
在命令行提交作业
YARN集群中的Resource Manager在众多Node Manager中挑一个启动Application Master,并在该节点中创建SparkContext,作为Driver节点
在AM(Application Master)启动后并将自己注册为一个YARN AM之后,才会开始执行用户提交的application。AM会通过YARN RM和NM的接口在集群中启动若干容器,用于启动Executor
成功申请到资源并启动Executor之后,Driver与Executor通过Akka应用进行消息接受和发送
在命令行提交作业
YARN RM请求启动ApplicationMaster,但是这里的ApplicationMaster其实只是一个ExecutorLauncher,但是它的功能是很有限的
在AM启动后,会向RM申请container,RM分配一批container,AM连接NM,然后在NM上启动Executor,但是此时Executor并不像cluster模式那样去向AM反向注册,此时Executor会向本地的Driver机器去注册
成功申请到资源并启动Executor之后,Driver与Executor通过Akka应用进行消息接受和发送
对比一下两种模式
1、yarn-client用于测试,因为driver运行在本地客户端,负责调度aplication,会与yarn集群产生大量的网络通信,从而导致网卡流量激增。好处在于,直接执行时,本地可以看到所有的log,方便调试。
2、yarn-cluster用于生产环境,因为driver运行在nodemanager,没有网卡流量激增的问题,缺点在于调试不方便,本地用spark-submit提交之后,看不到log,只能通过yarn application -logs application_id 这种命令来查看,不方便。
相关博客:
相关书籍:
《Spark技术内幕》
《Apache Spark源码剖析》