Spark之yarn-client与yarn-cluster

摘要:

  spark有两种方式运行在yarn上,一种是yarn-client客户端模式,一种是yarn-cluster模式。两种模式有一定的不同点。

一、Application Master
  为了更好的理解这两种模式的区别先了解下Yarn的Application Master概念。在Yarn中,每个application都有一个Application Master进程,它是Appliaction启动的第一个容器,它负责从ResourceManager中申请资源,分配资源,同时通知NodeManager来为Application启动container,Application Master避免了需要一个活动的client来维持,启动Applicatin的client可以随时退出,而由Yarn管理的进程继续在集群中运行。

二、yarn-client模式
  在yarn-client端中,spark的driver是在提交代码的客户端client上面,这个机器可以不是yarn集群中的机器。Application Master仅仅从yarn中为spark executor 申请资源,之后client端会一直与yarn container保持通信,进行作业的调度。
Spark之yarn-client与yarn-cluster_第1张图片
yarn-client模式下作业执行流程:
1、客户端生成作业信息提交给Resource Manager(RM)。
2、RM在本地NodeManager启动container,并将Application Master(AM)分配给该NodeManager(NM)。
3、NodeManager接收到Resource Manager(RM)的分配信息,启动Application Master(AM)并初始化作业。
4、ApplicationMaster向RM申请资源,分配资源并通知其它的NodeManager启动Executor。
5、Executor向ApplicationMaster注册并汇报作业进度,启动task任务。

三、yarn-cluster模式
  在yarn-cluster模式中,driver是运行在Application Master上的。Appliaction Master进程同时负责驱动Application和从Yarn中申请资源,该进程运行在Yarn container内,所以启动Application Master的client可以立即关闭而不必持续到Application的生命周期。这个client节点是在Yarn集群内的节点。
Spark之yarn-client与yarn-cluster_第2张图片
yarn-cluster模式下作业执行流程:
1、客户端生成作业信息提交给ResourceManager(RM)。
2、RM在某一个NodeManager(NM)启动container,并将Application Master(AM)分配给该NM。
3、NM接收到RM的分配并启动Application Master,这时这个NM就是Driver。
4、Application向RM申请资源,分配资源并通知其他NM启动相应的Executor。
5、Executor向AM注册并汇报作业进度,启动task任务。

四、yarn-client与yarn-cluster的差别
1、yarn-client模式中,Driver是存在client节点,而yarn-cluster是存在NM节点。
2、yarn-client模式中,client提交了作业,由于driver端存在client,要与各个container交互,所以是不能关闭这个提交进程的。而yarn-cluster中,driver存在于NM,提交了代码后,与这个提交进程就没有关系了,可以关闭。
3、yarn-client模式中,是可以通过控制台日志看到作业运行的状况的,而yarn-cluster在控制台是看不到的。如果需要查看日志,可以通过命令查看。

yarn logs -applicationId 

4、yarn-client模式中,client有可能不在集群内,该机器会与yarn集群进行频繁的网络通信(driver与executor通信),有可能会有网络限制。如果client在集群内,则会在集群内走网络通信。而yarn-cluster模式只是在集群内走网络通信。
5、在使用的时候,yarn-client传入的参数为

--master yarn --deploy-mode client

其实就等同于

 --master yarn

默认yarn提交方式为yarn-client。而yarn-cluster模式需要写全

--master yarn --deploy-mode cluster

你可能感兴趣的:(Spark,Yarn)