工作负载和资源管理:YARN、Mesos 和 Myriad

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

本文收录在 DZone 大数据、商业智能和分析指南 – 2015 年版 中。获取免费副本以获取更有洞察力的文章、行业统计数据等。

介绍

分布式系统上的工作负载管理往往是在实施中事后才想到的。任何将计算集群用于工作相关功能的人都会很快发现,工作安排及其优先级排序不仅在日常运营中而且在个人成功中都至关重要。此外,许多组织很快发现,即使拥有允许动态资源共享的稳健工作安置政策,多个集群也会根据其要求成为各个业务线的要求。随着这些集群的增长,所谓的数据孤岛也在增长。随着时间的推移,如果以可编程共享的方式使用,获得的公司计算机能力的数量可能会掩盖对单个系统的任何合理论据。

适当共享的技术可以提高所有业务部门的利用率,允许一些组织在整个组织的工作负载全球停滞期间消耗超出其合理份额的资源。个人、业务部门和企业作为一个整体的独特需求使得这种全球共享的发展即使不是不可能也很困难。这极大地缓解了对工作负载和资源管理的需求。本文将介绍基于大数据的工作负载和资源管理的最新进展。

关于 YARN 的文章很多,并且在很多地方都有很好的描述。对于上下文,我提供了一个高级概述:YARN 本质上是一个容器系统和调度程序,主要设计用于基于 Hadoop 的集群。 YARN 中的容器能够运行多种类型的任务,包括 MPI、Web 服务器以及几乎任何您想要的其他任务。 YARN 容器可能被认为难以编写,因此出现了其他项目,例如曾经被称为 HOYA(Hbase on YARN,最终被命名为 Apache Slider)的项目,试图提供易于使用的 YARN 容器的通用实现。这为那些希望在分布式文件系统上使用 YARN 的人提供了一个更容易的入口点。这主要用于运行时间较长的服务,如 HBase 和 Accumulo,但随着它脱离孵化器状态,​​可能会支持其他服务。

图 1:YARN 架构——YARN 作业提交过程的基本结构

因此,YARN 有望成为 Hadoop 作为数据操作系统的基石。这将包括作为存储层的 HDFS 以及用于 MapReduce 之外的更广泛应用程序的 YARN 调度过程。该实施虽然新颖且具有解放性,但在几个方面仍有改进的余地。为了构建一种新颖的分布式计算机,需要的不仅仅是 CPU/调度程序和数据存储。这个过程在很多方面反映了操作系统的发展。在 Linux 中,它需要安全性、分布式配置管理和工作负载管理,所有这些都是为了将​​多个硬件系统的强大功能整合到一个虚拟资源池中。幸运的是,开源社区提供了多种解决方案的好处。

金币

输入 Apache Mesos。虽然有些人将 Mesos 描述为“元调度器”或调度器的调度器,但其创建者更恰当地将 Mesos 称为“分布式系统内核”。 Mesos 本质上使用容器架构,但足够抽象以允许在同一架构上无缝执行多个(有时是相同的)分布式系统,从而减去虚拟化系统的资源开销。这包括适当的资源隔离,同时仍然允许 MapReduce 等框架所需的数据局部性。

正如人们所预料的那样,Mesos 使用了一种非常熟悉的命名法,并且包括基于容器的架构。需要注意的是,在功能上,Mesos 分配作业的方式非常不同。 Mesos 被认为是一个二级调度器,其创建者将其描述为用于抽象系统资源的分布式内核。 Mesos 本身实际上是应用程序框架之上的额外调度层,每个应用程序框架都有自己的调度品牌。应用程序调度程序与熟悉的 Zookeeper 协调的主动-被动架构中的 Mesos 主设置接口,该架构将作业向下传递到计算从属以运行所选应用程序。

图 2:Mesos 架构——同时运行基于 Hadoop 和 MPI 的作业的 Mesos 守护进程的高级表示

Mesos 是用 C 而不是 Java 编写的,并且包括对 Docker 和其他框架的支持。 Mesos 是 Mesosphere 创造的 Mesos 数据中心操作系统或 DCOS 的核心。

图 3:Mesosphere DCOS 架构——来自 Mesosphere 的 DCOS 表示

该操作系统包括其他方便的组件,例如 Marathon 和 Chronos。 Marathon 为 Docker 或 cgroups 等容器中的应用程序提供集群范围的“初始化”功能。这允许人们以编程方式自动启动大型基于集群的应用程序。 Chronos 充当 Mesos API,用于运行时间较长的批处理类型作业,而核心 Mesos SDK 为其他应用程序(如 Hadoop 和 Spark)提供入口点。

图 4:通过 Marathon 运行 Docker 容器的应用程序定义

在这些架构中的许多架构中,即使调度可能是集中的,仍然可能存在资源的硬分区。真正的目标是完全共享、通用和可重用的按需分布式架构。在撰写本文期间宣布了 Mesosphere 使用 DCOS 的新产品,称为 Infinity ,它用于以这种方式打包和集成集群的部署。开箱即用,它将包括 Cassandra、Kafka、Spark 和 Akka。这是当前可用的早期访问项目。

无数

为了直接将 YARN 与 Mesos 集成,形成了 Apache Myriad 项目。最初的目标包括使 YARN 在 Mesos 调度系统上的执行工作透明、多租户和顺利管理。高级架构承诺允许 Mesos 通过基于 Mesos 的框架集中调度 YARN 工作,包括用于向上或向下扩展的 REST API。该系统还包括一个 Mesos 执行器,用于启动节点管理器,如下图所示。

图 5:Mesos/YARN 交互——Yarn 容器通过 Mesos Management 启动

从较高的层次来看,这种类型的架构抽象可能看起来像是常识。然而,应该指出的是,这些系统中的每一个都需要一些时间才能发展和成熟,这些系统本身就是值得广泛分析的研究领域。这种新的 Myriad(基于 Mesos)架构与基于 YARN 的资源管理相比具有多项优势。它使资源管理通用化,因此整个系统的使用更加灵活。这包括使用相同的硬件运行多个版本的 Hadoop 和其他应用程序,以及规模调整的操作灵活性。它还允许用例,例如用于开发、测试和生产的相同硬件。最终,这种灵活性最有希望满足现代数据驱动架构不断变化的需求。

图 6:无数架构——多租户 Mesos 架构,包括基于 YARN 的 Hadoop 工作负载

一个通用的、多用途的架构,包含一个分布式持久层,以及参与从批处理到流式处理(实时/近实时)的用例的能力,在商品计算基础设施上动态但离散地调度似乎是圣杯今天有很多项目。 Mesos 和 Myriad 似乎是两个正在实现这一梦想的项目。仍有大量工作要做,包括跨地域作业的用例以及跨地域复制和高可用性等相关挑战。

结论

高层架构的讨论真正开始发挥概念的整体解决方案架构的作用。候选者包括 Lambda 及其更现代的继任者 Zeta 架构。分布式持久层、容器化以及解决方案和企业架构的处理等通用组件是这些高级架构的标志。如何在第一主要成分方面最好地利用资源的问题正在被新技术的日常冲击所形成和改革。最好的存储层技术是什么?流媒体应用程序的最佳技术是什么?所有这些都是常见的问题和激烈的争论。作者认为,在这种情况下,“最佳”是符合特定于您的用例的选择标准的工具或技术。在为任何问题设计解决方案时,有时会出现“足够好”这样的事情。并非每个组织都需要上述所有技术,但建立在一个动态且可插入更高层的坚实基础框架上将是最终获胜的解决方案。

有关工作负载和资源管理、实时报告和数据分析的更多见解, 请免费获取大数据、商业智能和分析指南 – 2015 年版


参考

https://mesosphere.github.io/marathon/

http://nerds.airbnb.com/introducing-chronos/

http://mesos.apache.org/

http://www.apache-myriad.org/

http://events.linuxfoundation.org/sites/events/files/slides/aconna15_bordelon.pdf

https://www.mapr.com/developer-preview/apache-myriad