Apache Helix vs YARN

Apache Helix和Hadoop YARN(MRv2)有什么区别。 有没有人有这两种技术的经验? 有人可以向我解释一下Helix在YARN上的优缺点,以及LinkedIn为什么开发自己的集群管理而不是使用YARN?

在此先感谢Tobi

虽然Helix和YARN都提供了管理分布式应用程序的function,但两者之间存在重要差异。

YARN主要提供跨机器群集的资源管理function,同时要求应用程序编写其自定义逻辑以协商来自资源管理器的资源。 另一方面,Helix提供了一种声明性地管理分布式应用程序状态的方法,从而使应用程序不必进行自定义实现。 目前,Helix不像YARN那样提供资源管理function。 因此,这两个系统是相辅相成的。

举例来说,假设您有一组节点,并且您想在它们上启动一些容器。

  1. 根据资源利用率在节点之间分配容器
  2. 启动容器,
  3. 监视容器,如果他们死了重启容器

YARN提供了执行上述操作的框架/机制。 拥有容器后,必须实现以下function:

  1. 分区和复制:您需要将任务分配给容器,可能会为每个容器分配多个任务。 为了实现冗余,您可以选择将任务分配给多个容器。
  2. 状态管理:管理任务的状态
  3. 容错:当容器出现故障时,您可以选择在剩余容器中重新分配工作,也可以根据SLA要求重新启动容器。
  4. 群集扩展:您可以启动新容器来处理工作负载,然后您希望重新分配任务。
  5. 限制:在所有这些操作中,您可能希望限制某些操作,如数据移动

Helix可以轻松实现上述function。 在YARN中,需要编写应用程序主机来实现这些(此类实现的一个示例是hadoop map reduce作业的Application master)。

Helix是在LinkedIn开发的,用于管理在线/近线空间的分布式数据系统。 在这个空间中,一旦容器被启动,它就会一直运行直到它崩溃。 当容器发生故障时,可能会在剩余容器中重新分配任务。

YARN附带资源调度算法,可以灵活高效地利用可用硬件来完成短暂的任务,例如地图缩减作业。