Apache Helix vs YARN

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

提前感谢托比


答案 1

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

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

如图所示,假设您有一组节点,并且想要在这些节点上启动一些容器。

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

YARN提供了框架/机器来做上述工作。拥有容器后,必须实现以下功能:

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

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

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

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


答案 2

推荐