apache mesos_使用Apache Mesos进行开源数据中心计算

apache mesos

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包含一个主进程和一个框架,这些进程管理在每个群集节点上运行的从属守护程序,以及在这些从属上运行任务的框架。 主机使用资源报价在各个框架之间实现细粒度的共享。 每个资源提供都是多个从属服务器上的空闲资源的列表。 主机根据组织策略(例如公平共享或优先级)决定为每个框架提供多少资源。 为了支持多种框架间分配策略,Mesos允许组织通过可插入的分配模块定义自己的策略。

具有两个运行框架的Mesos体系结构(

每个在Mesos上运行的框架都由两个组件组成:一个向主服务器注册以提供资源的调度程序,以及一个在从属节点上启动以运行框架任务的执行程序进程。 在主服务器确定要为每个框架提供多少资源的同时,框架的调度程序会选择要使用的资源。 当框架接受提供的资源时,它会向Mesos传递要在其上启动的任务的描述。

Mesos中的框架调度(

上图显示了如何安排框架运行任务的示例。 在第一步中,从站1向主站报告它有4个CPU和4 GB可用内存。 然后,主服务器调用分配模块,该模块告诉它应该为框架1提供所有可用资源。 在第二步中,主服务器向框架1发送描述这些资源的资源提议。在第三步中,框架的调度程序使用两个CPU在主服务器上响应有关要运行的两个任务的信息。 1GB RAM用于第一个任务,以及1个CPU; 2 GB RAM用于第二项任务。 最后,在第四步中,主服务器将任务发送给从服务器,从服务器将从资源分配适当的资源给框架的执行器,该执行器又启动两个任务(标有虚线边框)。 因为1个CPU和1 GB的RAM仍然可用,所以分配模块现在可以将它们提供给框架2。此外,当任务完成并且新资源变为可用时,此资源提供过程将重复进行。

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

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

在Apache Mesos之上构建了许多软件项目:

长期服务
  • Aurora是一个运行在Mesos之上的服务调度程序,使您可以运行长期运行的服务,这些服务利用Mesos的可伸缩性,容错性和资源隔离性。
  • 马拉松是基于Mesos构建的私有PaaS。 它会自动处理硬件或软件故障,并确保应用程序“始终处于打开状态”。
  • 奇点是用于运行Mesos任务的调度程序(HTTP API和Web接口):长时间运行的进程,一次性任务和计划的作业。
  • SSSP是一个简单的Web应用程序,提供了一个白色标签“ Megaupload”,用于在S3中存储和共享文件。
大数据处理
  • Cray Chapel是一种高效的并行编程语言。 Chapel Mesos调度程序使您可以在Mesos上运行Chapel程序。
  • Dpark是Spark的Python克隆,Spark是在Mesos上运行的类似Python的MapReduce框架。
  • Exelixi是一个用于大规模运行遗传算法的分布式框架。
  • Hadoop:在Mesos上运行Hadoop可以在整个集群中高效地分配MapReduce作业。
  • Hama是基于大批量同步并行计算技术的分布式计算框架,用于大规模科学计算,例如矩阵,图形和网络算法。
  • MPI是一种消息传递系统,旨在在多种并行计算机上运行。
  • Spark是一个快速的通用集群计算系统,它使并行作业易于编写。
  • Storm是一个分布式实时计算系统。 通过Storm,可以轻松可靠地处理无限制的数据流,从而可以进行实时处理,就像Hadoop进行批处理一样。
批次排程
  • Chronos是支持复杂作业拓扑的分布式作业调度程序。 它可以用作cron的更多容错替代品。
  • Jenkins是一个持续集成服务器。 通过mesos-jenkins插件,它可以根据工作负载在Mesos群集上动态启动工作程序。
  • JobServer是一个分布式作业计划程序和处理器,允许开发人员使用指向和单击的Web UI构建自定义的批处理Tasklet。
  • Torque是一个分布式资源管理器,可控制批处理作业和分布式计算节点。
数据存储
  • Cassandra是一个高度可用的分布式数据库。 线性可扩展性和在商用硬件或云基础架构上经过验证的容错能力使它成为关键任务数据的理想平台。
  • ElasticSearch是一个分布式搜索引擎。 Mesos使它易于运行和扩展。
  • Hypertable是用于结构化和非结构化数据的高性能,可扩展的分布式存储和处理系统。

结论

云计算和大数据之类的趋势正在使组织从整合转移到可能存在多个专用于特定任务的分布式系统的情况。 借助Mesos的Docker执行器,Mesos可以与Chronos和Marathon框架一起运行和管理Docker容器。 Docker容器提供了一致,紧凑和灵活的打包应用程序构建方式。 在Mesos上使用Docker交付应用程序有望提供一个真正弹性,高效且一致的平台,以在本地或云中交付各种应用程序。

最初发布在Sachin Puttur的Big Data博客上 根据知识共享进行的修订。

翻译自: https://opensource.com/business/14/9/open-source-datacenter-computing-apache-mesos

apache mesos

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值