17

Apache Helix 和 Hadoop YARN (MRv2) 有什么区别。有人对这两种技术都有经验吗?谁能解释一下 Helix 相对于 YARN 的优缺点以及为什么 LinkedIn 的人开发了自己的集群管理而不是使用 YARN?

在此先感谢托比

4

1 回答 1

50

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

YARN 主要提供跨机器集群的资源管理功能,同时要求应用程序编写其自定义逻辑以从资源管理器协商资源。另一方面,Helix 提供了一种以声明方式管理分布式应用程序状态的方法,从而使应用程序不必进行自定义实现。此时,Helix 并没有像 YARN 一样提供资源管理能力。因此,这两个系统是相当互补的。

作为说明,假设您有一组节点,并且您想在它们上启动一些容器。

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

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

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

Helix 可以轻松实现上述功能。在 YARN 中,需要编写 application master 来实现这些(这种实现的一个例子是用于 hadoop map reduce 作业的 Application master)。

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

YARN 带有资源调度算法,允许灵活高效地利用可用硬件来完成像 map reduce 作业这样的短期任务。

于 2013-05-10T14:48:10.477 回答