Bootstrap

Spark中Standalone、Yarn和Mesos三种资源管理和任务调度框架的对比

Spark on Standalone

Standalone是SparkCore自带的集群资源管理框架,类似于MR V1.0采用的模式(JobTracker),内部实现了容错性和资源管理。

内部架构:Client、Master、Worker

                                            

Spark on Standalone的运行流程是将程序代码解析成DAG结构,并再细分到各个Executor和Task去进行并行计算。同时它具有Master的HA,对故障可以进行主备切换。且具有管理每个应用程序资源的功能,可以和Hadoop部署在一起并访问HDFS的数据。

Spark on Mesos

Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。它可以运行Spark作业,MapReduce任务或任何其他服务应用程序。它提供基于Java,Python和C ++的API。它可以在Linux或Mac OSX上运行。

内部架构:Mesos-master,mesos-slave,framework和executor

      (1)Mesos采用了Master HA机制

      (2)Mesos 采用了双层调度框架,允许任何实现任何调度算法,每个算法都能根据自己的策略进行接收或是拒绝分配请求,并且可以容纳成千上万种调度程序以多租户的方式运行在同一个集群:

第一层,由 Mesos 将资源分配给框架;

第二层,框架自己的调度器将资源分配给自己内部的任务。

    

(3)Mesos可实现粗、细粒度资源调度:

      粗粒度模式(Coarse-grained Mode):程序运行之前就要把所需要的各种资源(每个 executor 占用多少资源,内部可运行多少个 executor)申请好,运行过程中不能改变。

      细粒度模式(Fine-grained Mode):为了防止资源浪费,对资源进行按需分配。与粗粒度模式一样,应用程序启动时,先会启动 executor,但每个 executor 占用资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,mesos 会为每个 executor 动态分配资源,每分配一些,便可以运行一个新任务,单个 Task 运行完之后可以马上释放对应的资源。

Spark on Yarn

Yarn是Hadoop生态圈中一种新的资源管理器,可以为上层应用提供统一的资源管理和任务调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

Yarn针对MapReduce V1.0 的作业机制带来的单点故障、性能瓶颈、且仅支持MapReduce的情况,针对JobTracker而引出了Yarn。至此,Yarn不仅解决了以上问题,还成为了Hadoop生态圈中最重要的资源管理和调度者。

Yarn的内部组件:ResourceManager、NodeManager、ApplicationMaster、Container、Task:

      当前YARN支持内存和CPU两种资源类型的管理和分配

      每个NodeManager可分配的内存和CPU的数量可以通过配置选项设置

      在Yarn内部,是通过调度器(容量调度器、FIFO调度器、公平调度器)来管理和调度集群资源的

                      

根据任务运行流程的不同,Spark on Yarn分为Yarn Client和Yarn Cluster:

      Yarn Client:任务运行在本地,直接可以在运行的时候查看任务的运行状况,日志文件可以在控制台直接查看;在程序测试和运行中小型任务时可以选用该模式。

      Yarn Cluster:运行大任务时采用该模式,任务运行在集群中,非常方便;在任务运行中无法查看任务状态,只能通过向集群发送查询请求后才能看到任务日志文件。

Standalone、Yarn和Mesos的对比:

1、Standalone为Spark自带,内部集成容错性和资源管理,负载较高

2、可以在Mesos框架上再次部署Yarn框架,Yarn比Mesos更成熟

3、Mesos采用双层调度机制,而 Yarn只能通过RM和调度器来管理集群资源,只能使用一种调度模式

4、Mesos可实现粗、细粒度资源调度,可动态分配资源,而 Yarn 只能实现静态资源分配

5、至于是使用Mesos还是Yarn,要根据公司的大数据架构决定。如公司的Hadoop架构更成熟就部署Yarn

;