yarn-cluster 和yarn-client区别

spark支持可查吧的集群管理模式(standalone/mesos以及yarn);集群管理负责启动executor进程,编写spark application的人根本不需要知道spark用的是什么集群管理。spark 支持的三种集群模式,这三种集群模式都由两个组件组成:master和slave。 master服务(yarn resourcemanager  ,mesos master 和spark standalone master )决定哪些appplication可以运行,什么时候运行以及去哪里运行, 而slave 服务(yarn nodemanager,mesos slave 和spark standalone slave )实际上运行excutor进程。

当在yarn上运行spark作业,每个spakr executor作为一个yarn容器(container运行)。spark可以使的多个task在同一个容器(container)里面运行。这是一个很大的优点。


注意这里和hadoop的mapreduce作业不一样,mapreduce作业为每个task开启不同的jvm来运行。虽然说mapreduce可以通过参数来来配置,详细mapreduce。job.jvm.numtasks

关于这个参数的介绍不说啦。

从广义上讲,yarn-cluster适合用于生产环境,而yarn-client 使用于交互和调试。也就是希望快速的砍刀application的输出。

在我们介绍yarncluster和yarn-client的深层次区别值钱,我们先明白一个概念 application master 在yarn中,每个application实力都有一个application master进程,他是application启动的第一个容器。它负责和resourcemanager打交道,并请求资源。获取资源之后告诉nodemanager为其启动container

从深层次的含义讲,yarn-cluster和yarn-client模式的区别其实就是application master进程的区别。yarn-cluster模式下,driver运行在am(appolicationn master中,它负责向yarn申请资源,并监督作业的运行状况,当用户提交了作业后,就可以关掉client。作业会继续在yarn上运行,

而yarn-cluster 模式不适合运行交互类的作业。 而

yarn-client模式下 application master仅仅向yarn请求excutor,client会和请求的container通信来调度他们的工作,也就是说client不能离开,

看下面的两幅图就应该能明白。




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