2012-06-25 51 views
8

我记得在某处看到Hadoop的性能显着下降,如果它运行的机器彼此非常不同,但我似乎无法再找到该评论。我正在考虑在不是由我的组直接管理的虚拟机阵列上运行Hadoop集群,并且我需要知道这是否是我应该提出的要求。因此,我应该坚持所有的机器具有相同的硬件,还是可以在不同硬件配置的不同机器上运行?hadoop群集应该运行在相同的硬件上吗?

谢谢。

回答

12

以下论文描述了异构集群如何影响的hadoop的性能图-减少:

在异构群集,节点的运算能力可以变化 显着地。高速节点可以比低速对等节点更快地完成存储在节点本地磁盘中的处理数据。在快速节点完成对其本地输入数据的处理之后,节点 必须通过处理位于一个 或更多远程慢速节点中的未处理数据来支持负载共享。当由于 负载共享导致的传输数据量非常大时,将未处理的数据从缓慢节点移动到快速节点的开销成为影响Hadoop性能的关键问题。

以下引用了更多的细节:

  1. http://computerresearch.org/stpr/index.php/gjcst/article/view/749/658
  2. http://www.usenix.org/event/osdi08/tech/full_papers/zaharia/zaharia.pdf

它还提供了可以可以改善异构集群的性能或避免这种性能损失的方式。

明智地建议您在群集上使用同质机器,但如果这些机器不具有完全不同的规格和性能差异,则应继续构建群集。

对于生产系统,你应该建议同质机器。对于开发而言,性能并不重要。

如何,您应该能够在构建完Hadoop集群后进行基准测试。

+0

这是很好的建议,谢谢! – ILikeFood

2

同质群集当然是理想的,但并非绝对必要。例如,Yahoo !, Inc.在其生产环境中运行异构集群。从与那里的研究人员的交谈中,他们发现由于计划问题(受到足够大的影响,他们正在努力将性能感知计划添加到他们的工具中),性能受到了打击,但这种惩罚并没有削弱。

相关问题