Spark:Yarn-cluster和Yarn-client区别与联系

咱们都知道Spark支持在yarn上运行,可是Spark on yarn有分为两种模式yarn-cluster和yarn-client,它们究竟有什么区别与联系?阅读完本文,你将了解。
  Spark支持可插拔的集群管理模式(Standalone、Mesos以及YARN ),集群管理负责启动executor进程,编写Spark application 的人根本不须要知道Spark用的是什么集群管理。Spark支持的三种集群模式,这三种集群模式都由两个组件组成:master和slave。Master服务(YARN ResourceManager,Mesos master和Spark standalone master)决定哪些application能够运行,何时运行以及哪里去运行。而slave服务( YARN NodeManager, Mesos slave和Spark standalone slave)实际上运行executor进程。html

  当在YARN上运行Spark做业,每一个Spark executor做为一个YARN容器(container)运行。Spark可使得多个Tasks在同一个容器(container)里面运行。这是个很大的优势。web

  注意这里和Hadoop的MapReduce做业不同,MapReduce做业为每一个Task开启不一样的JVM来运行。虽说MapReduce能够经过参数来配置。详见mapreduce.job.jvm.numtasks。关于这个参数的介绍已经超过本篇文章的介绍。app

  从广义上讲,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是但愿快速地看到application的输出。jvm

  在咱们介绍yarn-cluster和yarn-client的深层次的区别以前,咱们先明白一个概念:Application Master。在YARN中,每一个Application实例都有一个Application Master进程,它是Application启动的第一个容器。它负责和ResourceManager打交道,并请求资源。获取资源以后告诉NodeManager为其启动container。oop

  从深层次的含义讲,yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别,yarn-cluster模式下,driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督做业的运行情况。当用户提交了做业以后,就能够关掉Client,做业会继续在YARN上运行。然而yarn-cluster模式不适合运行交互类型的做业。而yarn-client模式下,Application Master仅仅向YARN请求executor,client会和请求的container通讯来调度他们工做,也就是说Client不能离开。看下下面的两幅图应该会明白(上图是yarn-cluster模式,下图是yarn-client模式):spa

 

         更多请参考http://www.aboutyun.com/thread-12294-1-1.html调试

  从源码实现,调度器等方面看,请参照本博客的《Spark on YARN集群模式做业运行全过程分析》《Spark on YARN客户端模式做业运行全过程分析》的介绍。code

相关文章
相关标签/搜索