Apache helix vs. Apache Mesos(helixftr游戏链接)

Apache helix vs. Apache Mesos(helixftr游戏链接)

精选文章moguli202025-01-23 11:34:3827A+A-


背景

在NoSQL和大数据领域,随着爆炸式的数据增长,分布式系统的数量有了显着增长,系统上运行多台服务器的集群并保证容错性 ,保证在出现服务器故障和网络问题情况下系统是可用的 ,这是任何分布式系统的关键。 这样才能通过水平的横向扩展性和无缝的集群扩展处理日益增加的工作量。本文将介绍一下集群管理工具Apache helix与Apache Mesos区别。


Apache helix

介绍

Helix是一个通用的集群管理框架,用于自动管理节点集群上托管的分区、复制和分布式资源。Helix能够在面对节点故障和恢复、集群扩展和重新配置时自动重新分配资源。Helix通过声明状态机表示应用程序的生命周期,将集群管理与应用程序逻辑分开。Helix最初是在LinkedIn开发的,目前管理关键基础设施,如Espresso(No-SQL数据存储),Brooklin(搜索即服务系统),Venice(派生数据服务平台)以及离线数据基础设施存储和处理。


特点

  • 节点故障检测和恢复
  • 通过基于服务器容量和资源配置文件(分区大小、访问模式等)在服务器(节点)上动态扩容资源实现自动负载平衡
  • 动态添加节点到集群中,管理节点的整个运营生命周期。无需停机即可添加、启动、停止、启用和禁用
  • 可插拔的分布式状态机,通过状态转换管理资源的状态。
  • 自动负载平衡和过渡的节流。
  • 路由请求的服务发现机制
  • 监控集群运行状况并针对 SLA 违规发出警报


架构

系统角色

Helix 将分布式系统组件划分为 3 个逻辑角色,这些只是逻辑组件,可以根据系统要求进行部署。这些逻辑组件中的每一个都有一个嵌入式代理,它通过Zookeeper与其他组件交互。

  • Helix Controller(控制器):控制器是系统的大脑,托管状态机引擎,运行执行算法,并针对分布式系统发出转换。
  • Participant:实际托管分布式资源的节点。例如:在搜索系统的情况下,系统实现了offlineToBootstrap、BootstrapToOnline等回调,并在控制器触发相应的转换时调用。
  • Spectator(观察者):观察每个 Participant 的当前状态并相应地请求路由的具体的节点上。例如,当路由表发生变化时,集群扩展或节点发生故障时,可以通知路由/代理组件。


元数据存储

Helix 使用Apache ZooKeeper(分布式存储)来维护集群的状态,并利用watcher机制来当集群状态发生变化后及时通知给框架。



Helix 在 LinkedIn 生态系统中的使用

  • Espresso:Espresso 是一个分布式、时间线一致、可扩展的文档存储,支持本地二级索引和本地事务。Espresso 在许多存储节点服务器上运行,这些服务器存储和索引数据并回答查询。Espresso 数据库被水平划分为多个分区,每个分区都有一定数量的副本分布在存储节点上。
  • Databus:Databus用于将事件从 LinkedIn 的主数据库(Espresso 和 Oracle 数据库)传输到缓存和搜索系统等下游应用程序的。Databus 为每个分区维护一个缓冲区。Databus 持续监控主数据库的拓扑变化,并在主数据库上创建新表时自动创建新缓冲区。
  • Databus Consumers:每个数据总线分区都分配一个消费者,这样分区在消费者之间均匀分布,并且每个分区一次只分配给一个消费者。消费者的集合可能会随着时间的推移而增长,并且消费者可能由于计划内或计划外的中断而离开该组。在这些情况下,必须重新分配分区,同时保持平衡和单个消费者每个分区的不变性。将数据复制到另一个数据中心的数据复制器和生成搜索索引的搜索索引器节点是遵循此模式的一些应用程序。
  • Seas:(搜索即服务):LinkedIn 的 SEAS 允许内部客户在选定的数据集上定义自定义索引,然后通过服务 API 使这些索引可搜索。索引服务在集群上运行。索引被分成多个分区,每个分区都有配置数量的副本。
  • Pinot(分析平台):Pinot 是一个在线分析引擎,用于任意汇总和向下钻取。
  • ETL:我们在 Helix 之上构建了多个任务执行框架。这些是根据用例定制的。例如,快照生成服务将 Espresso 数据转换为 Avro 格式,并将其加载到 Hadoop 中进行进一步分析。


Apache Mesos

介绍

Apache Mesos 是一种集群管理器,可跨分布式应用程序或框架提供高效的资源隔离和共享。它可以在动态共享的节点池上运行Hadoop,MPI,Hypertable,Spark和其他框架,于2009年由加利福尼亚大学发起,已经在很多公司的生产环境上使用过,包括Twitter和Airbnb。2013年7月,成为Apache的最高级项目。Mesos通过在多种不同框架之间共享可用资源来提高资源使用率。Mesos可以看做是数据中心的内核,提供所有节点资源的统一试图并且可以无缝地访问多节点资源,这种做法给开发人员和运维人员都带来了巨大的好处,它将不同的框架整合到统一的基础框架上,不仅能够节约基础架构的花费,而且给运维团队带来了便利,也帮助开发人员简化了基础架构的接口。


特点

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



架构

组件介绍

  • Mesos master:负责管理各个framework和slave,并将slave上的资源分配给各个framework
  • Mesos slave:负责管理本节点上的各个Mesos Task,为各个Executor分配资源
  • Framework: 计算框架:,如Hadoop\Spark等,可以通过Mesos Schedule Driver接入Mesos
  • Executor:执行器,再Mesos Slave上安装,用于启动计算框架中的Task


总体架构

Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。Framework包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。Mesos能和不同类型的Framework通信,每种Framework由相应的应用集群管理。Mesos Master协调全部的Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。Framework可以根据应用程序的需求,选择接受或拒绝来自master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上任务,并在容器中执行,以使多种类型的任务,比如Hadoop和Cassandra,可以在同一个节点上同时运行。




总结

Apache Mesos 是一个集群管理器,它简化了在共享服务器池上运行应用程序的复杂性。Apache Helix 是一个通用的集群管理框架,用于自动管理托管在节点集群上的分区、复制和分布式资源。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2