`
m635674608
  • 浏览: 5043031 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Mesos和YARN的区别以及它们如何协同工作

 
阅读更多

Hadoop 2.0之后把对集群资源的管理从MapReduce v1的JobTracker中提取出来,在YARN中进行了实现。虽然YARN支持了多种不同的计算框架,但依旧没有很好的解决集群资源的弹性伸缩问题。本文介绍了一个新的项目- Myriad,它把YARN和Mesos两者的优势结合起来,不仅使YARN的运行使用更加灵活,而且让整个数据中心的扩容变得更简单。

这是一个关于两个集群的故事。第一个是Apache Hadoop集群,其中资源与Hadoop以及进程完全隔离。另一个集群是对所有资源的描述,这些资源并不是Hadoop集群的一部分。通过这种方式来区分两个集群是因为Hadoop通过Apache YARN(Yet Another Resource Negotiator)来管理自己的资源。对于Hadoop来说,在没有大数据任务在队列中时,这些资源常常是未被充分使用的。当一个大数据任务运行时,这些资源迅速被用到极限,并且在请求更多资源。这对于第一种集群而言相当困难。

 

mesos和yarn集群

尽管Hadoop有意打算消除数据壁垒,但是在拆去一些壁垒的同时,其他类型的壁垒又在同样的地方产生。作为另一种技术方案,Apache Mesos也有意消除这些壁垒。但Mesos常被用来管理第二种集群,这些集群包括除去Hadoop任务之外的所有资源。

 

前面介绍的关于Mesos和YARN的不同点,只是故事的开端。正如它们并不兼容,经常互相竞争。而我的故事,讲的却是它们协同工作。

Mesos和YARN的简介

Mesos和YARN之间的主要区别围绕着优先级的设计以及调度任务的方式。Mesos于2007年诞生于UC Berkeley并在Twitter和Airbnb等公司的商用下不断被巩固,它的设计初衷是作为整个数据中心的一个可拓展的全局资源管理器。YARN出于管理Hadoop规模的需求。在YARN出现之前,资源管理(功能)集成在Hadoop MapReduce V1架构中,为了有助于MapReduce的扩展而将其移除(转移到YARN中实现)。MapReduce的Job Tracker并不能在超过上千台的机器中有效调度MapReduce任务。YARN在下一代Hadoop生命周期中被创造,主要围绕着资源拓展。

Mesos的调度

Mesos决定了哪些资源可用,它把分配请求返回给一个应用调度器(应用调度器和执行器被称作“框架”)。这些分配请求被框架接受或者拒绝。这个模型被认为是非单体模型,因为它是一个“两级”调度器,调度算法是可拔插的。Mesos允许任何实现任何调度算法,每个算法都能根据自己的策略进行接收或是拒绝分配请求,并且可以容纳成千上万种调度程序以多租户的方式运行在同一个集群。

Mesos的两级调度模型允许每个框架(自己)决定使用哪种算法来调度运行的工作。Mesos扮演仲裁者,在多个调度器上来调度资源,解决冲突,并且确保资源基于业务策略被公平地分发。分配请求到来时,框架会执行任务来消费那些提供的资源。或者框架可以选择拒绝请求并且等待下一个分配请求。这种模型与在一台笔记本电脑或智能手机上如何同时运行多个App十分类似,当需要更多内存时会创建新的线程或请求,操作系统来仲裁管理所有的请求。多年的操作系统和分布式系统的实践发展证明,这种模型的好处在于它具有良好的扩展性。它已被Google和Twitter证明。

YARN的调度

现在,我们再看一下YARN这边发生了什么。当job请求到达YARN资源管理器,YARN评估所有可用的资源然后调度job。YARN以一种整体的方式,直接决定job运行的位置。在MapReduce架构演变的过程中,重申强调YARN的出现十分重要。在Hadoop任务的资源规模伸缩需求的驱动下,YARN把资源管理的模型从MR的Job Tracker中独立出来,在Resources Manager组件中实现。

为了调度Hadoop任务,YARN进行了优化(过去一贯的Hadoop任务是持续一段时间的批处理任务)。这意味着YARN既不是为长时间运行的服务而设计,也不是为满足短期交互/快速响应式请求(像简短而快速的Spark任务),尽管它可能调度其他种类的工作任务,但这并不是一个理想的模型。MapReduce的资源需求、执行模型和架构需求不同于长时间运行的服务,如Web服务器、SOA应用程序或是像Spark和Storm那样的实时任务。同时,YARN为了易于无状态的脚本任务重启而设计。它并不能处理像分布式文件系统或数据库那样的有状态的服务。然而YARN的整体的调度器理论上可以处理不同类型的工作负载(通过把新的算法合并到调度代码),对于支持日益复杂的调度算法,这并不是一个轻量级的模型。

YARN vs Mesos?

在对比YARN和Mesos时,明白整体的调度能力和为什么需要两者选一十分重要。虽然有些人可能认为YARN和Mesos大同小异,但并非如此。区别在于用户一开始使用时需求模型的不同。每种模型没有明确地错误,但每种方法会产出不同的长期结果。我认为这就是选择如何使用它们的关键。Ben Hindman和Berkeley AMP实验室在设计Mesos时,与Google设计Omega的团队同期进行,Mesos系统得益于Google的Omega系统设计的经验,构建了一个更好的非单体(两阶段)的调度器。

当你把如何管理数据中心作为整体来评估时,一方面使用Mesos来管理数据中心的所有资源,另一方面使用YARN来安全的管理Hadoop任务,但它并不具有管理整个数据中心的能力。数据中心运营商倾向于把集群划分为的不同区域(Hadoop集群和非Hadoop集群)来应对这两个场景。

在同一个数据中心使用Mesos和YARN,为了受益于资源管理器,目前需要创建两个静态分区。此时意味着当指定资源被Hadoop的YARN管理时,Mesos就无法起作用。这也许过于简化了,尽管这么做确实有效。但本质上,我们是想避免这种情况。

项目Myriad介绍

这不禁让我们发问:能否让企业和数据中心受益于YARN和Mesos的协调工作?答案是肯定的。一些著名的公司——eBay、MapR和Mesosphere共同合作了一个项目叫做Myriad.

这个开源软件项目既是一个Mesos框架,又是一个YARN调度器,这就使得Mesos能够管理YARN的资源请求。当一个任务到达YARN时,它会通过Myriad调度器调度它,使请求与Mesos提供的资源匹配。相应的,Mesos也会将它传递给Mesos工作节点。之后,这个Mesos节点会把这个请求与一个正在执行YARN节点的管理器的Myriad执行器关联。Myriad在Mesos资源启动YARN节点管理器,启动之后,Mesos资源会告诉YARN资源管理器哪些资源可用。这时YARN就可以随意地使用这些资源。Myriad为Mesos的可用资源池和YARN的任务(需要用到Mesos中资源)之间架起了一座无缝连接的桥梁。

 

Myriad

这种做法的优点是,它不仅让你在共享的集群中弹性的使用YARN,使得YARN比最初设计时更具活力和弹性。而且,它使得数据中心的运维团队在给YARN资源扩容时无需重新配置YARN集群。整个数据中心的扩容变得十分容易。该模型提供了一种简单的方式运行和管理多个YARN的实现,甚至在同一个集群上运行多个不同版本的YARN。

 

 

Myriad模型

Myriad把YARN和Mesos两者的优势结合起来。通过使用Myriad项目,让Mesos和YARN可以协作,你可以完成一个实时业务。数据分析可以在和运行生产服务的相同硬件上执行。你不再需要面临由静态分区引起的资源限制(和低利用率)。资源可以根据业务的需求弹性的伸缩。

 

最后的思考

为了确保人们理解这个项目的来源,我认为Mesos和YARN擅长在自己特定的场景下工作,并且都有提升的空间。两者的资源管理器在安全领域都能有所提升;而安全的支持对企业采纳与否至关重要。

Mesos需要一个端到端的安全架构,我个人觉得可以使用Kerberos来提供安全支持,但根据个人经验,这样做应该不会简单。对Mesos其他方面的提升同样十分复杂,主要归纳为资源的抢占和撤销。假设一个业务的所有资源已经分配,当业务依赖运行的一个最重要的资源项需要扩容时,甚至这个扩容工作仅需要数十分钟来完成,你仍然会因为缺少资源而无法完成。资源的抢占和撤销就可以解决这个问题。目前,Mesos围绕着这个问题有多种解决方案,但我十分期待Mesos委员会使用Dynamic Reservations和Optimistic (Revocable) Resources Offers来解决这个问题。

Myriad作为一种新的技术,让我们把数据中心或云端的所有资源当作一个简单的资源池来使用。正如Hadoop消除数据孤岛之间的壁垒一样,Myriad消除了孤立的集群之间的壁垒。通过Myriad,开发者可以专注于业务依赖的数据和应用程序,而运维团队可以更敏捷地管理他们的计算资源。这为我们专注数据而不被基础设施持续困扰打开了另一扇窗。有了Myriad,存储网络的限制和计算与存储之间的协调就成为我们在实现完整的灵活性、敏捷和伸缩上的最后一个需要攻克的难题。

Myriad项目托管在GitHub上并提供下载。这里提供文档更详细地描述了它是如何运作的。

原文链接: http://radar.oreilly.com/2015/02/a-tale-of-two-clusters-mesos-and-yarn.html

 

 

http://ju.outofmemory.cn/entry/231508

http://www.zhihu.com/question/23642987

http://blog.csdn.net/xinghun_4/article/details/47907161

 

 

分享到:
评论

相关推荐

    DCOS on YARN的技术实践.pptx

    Slider的架构包含SliderClient、SliderAppMaster和SliderAgent三个核心组件,它们协同工作,负责应用的生命周期管理、资源分配和状态监控。 2. **Jenkins in Docker on YARN** Jenkins是一个流行的持续集成工具,...

    主流大数据技术组件解读及高可用性部署.docx

    在大数据领域,各种技术组件协同工作,构建了一个高效、可靠的数据处理生态系统。本文将深入解析这些主流的大数据技术组件,并探讨如何实现它们的高可用性部署。 一、前言 大数据技术的发展为处理海量数据提供了...

    Spark入门(完整版)

    独立模式适用于小规模集群,而Mesos和YARN是大规模集群资源管理器,可以为Spark提供跨节点的并行计算。Kubernetes作为容器编排平台,也为Spark提供了灵活的部署选择。 三、编程模型 Spark采用RDD(Resilient ...

    spark企业级大数据项目实战.docx

    其次,Spark提供了多种部署模式,包括本地模式、集群模式(如standalone、Mesos、YARN)等,这些模式的选择取决于项目的规模和需求。在教程中,读者将会学习如何配置和搭建不同模式下的Spark环境,以适应不同的应用...

    Spark-学习.rar

    "Spark.drawio"可能是一个使用Draw.io绘制的Spark架构或组件的图形化说明,用户可以通过它来理解Spark的基本结构和工作流程。Draw.io是一种在线工具,用于创建流程图、UML图、网络图等,这对于学习Spark的各个组件...

    spark meetup ppt

    - Apache Mesos和Apache Yarn:作为集群管理器,能够协调集群资源的分配和任务调度。 在集群管理方面,Spark支持本地模式、独立模式(Standalone)、Mesos和Yarn等多种集群管理器。Driver程序负责运行主要的函数和...

    spark+hadoop大数据处理学习笔记

    本文将深入探讨Spark与Hadoop的核心原理、应用场景以及它们的协同工作方式。 首先,Hadoop是Apache软件基金会开发的一个开源项目,其核心由两个主要部分组成:HDFS(Hadoop Distributed File System)和MapReduce。...

    spark各方面学习合集

    Spark可以运行在本地模式、集群模式(如Mesos、YARN或Kubernetes)以及独立模式下。集群部署通常涉及配置Master和Worker节点,以及管理资源分配。 六、Spark性能优化 - 指定合适的executor内存和核心数量 - 使用宽...

    spark学习文档

    这个文件会介绍如何在各种环境(例如本地、Hadoop YARN、Mesos或Standalone集群)中安装和配置Spark。还会涉及配置参数调整、资源管理和监控工具的使用。 2. **02Spark编程模型和解析.pdf** Spark的核心编程模型...

    spark深度解析

    Spark架构包括Driver程序、Executor进程和Cluster Manager,它们协同工作以实现分布式计算。 2. **RDDs**:RDD是Spark的核心数据结构,它是不可变、分区的记录集合,支持并行操作。RDD可以由HDFS、数据库或其他数据...

    分布式计算的基本原理.rar

    7. **中间件**:如Apache Mesos、YARN等,作为管理和调度资源的平台,协调节点间的通信和任务分配。 8. **分布式数据库**:如Cassandra、MongoDB等,用于存储和管理分布式环境中的大量数据,支持跨节点的读写操作。...

    storm-kafka实时趋势分析

    本文将深入探讨"storm-kafka实时趋势分析"这一主题,讲解这两个技术如何协同工作,以及如何实现通用性强、适应多场景的实时趋势分析。 Storm是由Twitter开源的分布式实时计算系统,它可以持续地处理数据流,提供低...

    分布式 卢誉声

    此外,作者可能还会讨论如何利用消息队列(如Kafka)进行数据流处理,以及如何使用YARN或Mesos进行资源调度。 在实现部分,书中会详细介绍如何构建和部署分布式实时处理系统,包括配置、监控和调优等方面。读者可以...

    spark2.02源码

    源码分析还包括对Spark的存储系统的研究,如BlockManager如何管理内存和磁盘上的数据块,以及如何与其他组件如CacheManager协同工作实现数据缓存。 总的来说,Spark 2.0.2的源码包含了许多关键的改进和优化,对于...

    spark-2.4.0-bin-hadoop2.6.tgz

    5. **运行模式**:Spark支持多种运行模式,包括本地模式(方便开发测试)、standalone模式(Spark自带的集群管理器)、YARN模式(使用Hadoop的资源管理器)和Mesos模式(Mesos集群管理器)。在Hadoop 2.6环境中,...

    Spark大数据处理:技术、应用与性能优化 (大数据技术丛书).pdf

    11. **Spark部署模式**:Spark可以本地运行、在Mesos或YARN上集群部署,也可以使用Kubernetes进行容器化部署。 12. **Spark监控与调试**:通过Spark UI、Spark History Server和日志监控,可以追踪作业状态,诊断...

    spark源码包

    9. **YARN和Mesos集成**:Spark 2.0版本能够很好地与YARN和Mesos资源管理系统集成,支持多租户和动态资源调度,增强了Spark在大规模集群中的部署和管理能力。 10. **性能优化**:Spark 2.0对内存管理、任务调度和...

    Spark技术内幕 深入解析Spark内核架构设计与实现原理 高清 完整书签

    讲解Spark如何通过Cluster Manager(如YARN、Mesos或独立模式)进行资源管理和调度。 3. **RDD设计**:深入探讨RDD的概念、特性及操作,如转换(Transformation)和行动(Action)。介绍RDD的血统(Lineage)和容错...

    大数据技术之scala

    例如,Spark可以与Hadoop的YARN或Mesos资源管理器协同工作,提供高效的数据处理能力。Akka是一个用于构建高度并发、分布式和反应式的应用框架,它也是用Scala编写的,可以与Spark一起构建大规模的实时大数据处理系统...

Global site tag (gtag.js) - Google Analytics