使用 Apache Mesos 的开源数据中心计算

尚无读者喜欢这篇文章。
How can open soruce help solve a huge problem?

Opensource.com

Apache Mesos 是一个集群管理器,它可以在分布式应用程序或框架之间提供有效的资源隔离和共享。 Mesos 是最初在加州大学伯克利分校开发的开源软件。 它位于应用程序层和操作系统之间,可以更轻松地在大型集群环境中更有效地部署和管理应用程序。 它可以在动态共享的节点池上运行许多应用程序。 Mesos 的著名用户包括 Twitter、Airbnb、MediaCrossing、Xogito 和 Categorize。

Mesos 利用现代内核的特性——Linux 中的“cgroups”,Solaris 中的“zones”——来提供 CPU、内存、I/O、文件系统、机架位置等方面的隔离。 核心思想是创建一个大型的异构资源集合。 Mesos 引入了一种称为资源提供的分布式两级调度机制。 Mesos 决定向每个框架提供多少资源,而框架决定接受哪些资源以及在其上运行哪些计算。 它是一个精简的资源共享层,通过为框架提供访问集群资源的通用接口,实现跨各种集群计算框架的细粒度共享。 其理念是将多个分布式系统部署到共享的节点池中,以提高资源利用率。 许多现代工作负载和框架都可以在 Mesos 上运行,包括 Hadoop、Memecached、Ruby on Rails、Storm、JBoss Data Grid、MPI、Spark 和 Node.js,以及各种 Web 服务器、数据库和应用服务器。

Apache Mesos 中的节点抽象 (来源)

与 PC 操作系统管理对桌面计算机上资源的访问类似,Mesos 确保应用程序可以访问集群中所需的资源。 无需为应用程序的不同部分设置多个服务器集群,Mesos 允许您共享一个服务器池,所有这些服务器都可以运行应用程序的不同部分,而彼此之间不会相互干扰,并且能够根据需要跨集群动态分配资源。 这意味着,如果网络流量很大,它可以轻松地将资源从 framework1(例如,进行大数据分析)转移到 framework2(例如,Web 服务器)。 它还可以减少部署应用程序中的许多手动步骤,并且可以自动转移工作负载以提供容错能力并保持高利用率。

跨集群的资源共享提高了吞吐量和利用率 (来源)

Mesos 本质上是数据中心内核——这意味着它是实际将正在运行的工作负载彼此隔离的软件。 它仍然需要额外的工具来让工程师将其工作负载运行在系统上并管理这些作业实际运行的时间。 否则,某些工作负载可能会消耗所有资源,或者重要的工作负载可能会被碰巧需要更多资源的次要工作负载挤掉。 因此,Mesos 需要的不仅仅是一个内核——Chronos 调度器,它是 cron 的替代品,用于自动启动和停止服务(并处理故障),它运行在 Mesos 之上。 Mesos 的另一部分是 Marathon,它提供用于启动、停止和扩展服务的 API(并且 Chronos 可能是其中一项服务)。

Chronos 和 Marathon 中的工作负载 (来源)

架构

Mesos 由一个 master 进程组成,该进程管理在每个集群节点上运行的 slave 守护程序,以及在这些 slave 上运行任务的框架。 master 使用资源提供在框架之间实现细粒度共享。 每个资源提供都是多个 slave 上空闲资源的列表。 master 根据组织策略(例如公平共享或优先级)决定向每个框架提供多少资源。 为了支持各种框架间分配策略,Mesos 允许组织通过可插拔的分配模块定义自己的策略。

带有两个正在运行的框架的 Mesos 架构 (来源)

在 Mesos 上运行的每个框架都由两个组件组成:一个向 master 注册以获得资源的调度器,以及一个在 slave 节点上启动以运行框架任务的 executor 进程。 虽然 master 决定向每个框架提供多少资源,但框架的调度器会选择使用哪些提供的资源。 当框架接受提供的资源时,它会将要在其上启动的任务的描述传递给 Mesos。

Mesos 中的框架调度 (来源)

上图显示了如何调度框架以运行任务的示例。 在第一步中,slave 1 向 master 报告它有 4 个 CPU 和 4 GB 的空闲内存。 然后,master 调用分配模块,该模块告诉它应将所有可用资源提供给框架 1。 在第二步中,master 将描述这些资源的资源提供发送到框架 1。 在第三步中,框架的调度器使用有关要在 slave 上运行的两个任务的信息回复 master,分别为第一个任务使用 2 个 CPU 和 1 GB RAM,为第二个任务使用 1 个 CPU 和 2 GB RAM。 最后,在第四步中,master 将任务发送到 slave,slave 将适当的资源分配给框架的 executor,executor 反过来启动两个任务(用虚线边框表示)。 由于 1 个 CPU 和 1 GB RAM 仍然空闲,因此分配模块现在可以将它们提供给框架 2。 此外,当任务完成并且新资源变为空闲时,此资源提供过程会重复。

虽然 Mesos 提供的精简接口使其可以扩展并允许框架独立发展。 框架将拒绝不满足其约束的 offer,并接受满足约束的 offer。 特别是,我们发现一种称为延迟调度的简单策略,其中框架等待有限的时间来获取存储输入数据的节点,从而产生几乎最佳的数据局部性。

Mesos 功能

  • 使用 ZooKeeper 的容错复制 master
  • 可扩展到数千个节点
  • 使用 Linux 容器在任务之间隔离
  • 多资源调度(内存和 CPU 感知)
  • 用于开发新的并行应用程序的 Java、Python 和 C++ API
  • 用于查看集群状态的 Web UI

有许多基于 Apache Mesos 构建的软件项目

长期运行的服务

  • Aurora 是一个运行在 Mesos 之上的服务调度器,使您可以运行长期运行的服务,这些服务可以利用 Mesos 的可扩展性、容错性和资源隔离。
  • Marathon 是一个基于 Mesos 构建的私有 PaaS。 它会自动处理硬件或软件故障,并确保应用程序“始终运行”。
  • Singularity 是一个调度器(HTTP API 和 Web 界面),用于运行 Mesos 任务:长期运行的进程、一次性任务和计划的作业。
  • SSSP 是一个简单的 Web 应用程序,提供了一个用于在 S3 中存储和共享文件的白色标签“Megaupload”。

大数据处理

  • Cray Chapel 是一种高效的并行编程语言。 Chapel Mesos 调度器允许您在 Mesos 上运行 Chapel 程序。
  • Dpark 是 Spark 的 Python 克隆,Spark 是用 Python 编写的类似 MapReduce 的框架,运行在 Mesos 上。
  • Exelixi 是一个分布式框架,用于大规模运行遗传算法。
  • Hadoop:在 Mesos 上运行 Hadoop 可以在整个集群中有效地分发 MapReduce 作业。
  • Hama 是一个基于批量同步并行计算技术构建的分布式计算框架,用于大规模科学计算,例如矩阵、图和网络算法。
  • MPI 是一种消息传递系统,旨在在各种并行计算机上运行。
  • Spark 是一个快速且通用的集群计算系统,可以轻松编写并行作业。
  • Storm 是一个分布式实时计算系统。 Storm 使您可以轻松可靠地处理无界数据流,从而为实时处理做 Hadoop 为批处理所做的事情。

批处理调度

  • Chronos 是一个分布式作业调度器,支持复杂的作业拓扑。 它可以作为 cron 的更容错的替代品使用。
  • Jenkins 是一个持续集成服务器。 mesos-jenkins 插件允许它根据工作负载在 Mesos 集群上动态启动 worker。
  • JobServer 是一个分布式作业调度器和处理器,允许开发人员使用点击式 Web UI 构建自定义批处理 Tasklet。
  • Torque 是一个分布式资源管理器,提供对批处理作业和分布式计算节点的控制。

数据存储

  • Cassandra 是一个高可用性的分布式数据库。 在商品硬件或云基础设施上的线性可扩展性和经过验证的容错能力使其成为任务关键型数据的完美平台。
  • ElasticSearch 是一个分布式搜索引擎。 Mesos 可以轻松运行和扩展。
  • Hypertable 是一种高性能、可扩展的分布式存储和处理系统,用于结构化和非结构化数据。

结论

云计算和大数据等趋势正在推动组织机构从整合转向拥有多个分布式系统,这些系统专门用于特定任务。借助 Mesos 的 Docker 执行器,Mesos 可以与 Chronos 和 Marathon 框架结合运行和管理 Docker 容器。Docker 容器提供了一种一致、紧凑和灵活的应用程序构建打包方式。在 Mesos 上使用 Docker 交付应用程序有望成为一个真正弹性、高效和一致的平台,用于在本地或云端交付各种应用程序。

最初发布于 Sachin Puttur 的大数据博客。根据 Creative Commons 协议进行修订。

标签
Sachin P Bappalige
Sachin | IBM 系统和技术部门的软件工程师。兴趣和专长领域包括大数据、系统编程、网络、集群、网格和云计算。曾参与 HPC 作业调度器、PowerVC、Blue Gene/Q 超级计算机、Blue Waters 超级计算机(PERCS 架构)、GPFS 和 AIX TCPIP 测试自动化。

1 条评论

我认为你的结论说明了一切,绝对值得在 2015 年进行探索!

Creative Commons License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.