我记得在某处看过如果Hadoop运行的机器彼此非常不同,Hadoop的性能会大幅下降,但我似乎无法再发现这个评论了。我正在考虑在我的组没有直接管理的虚拟机阵列上运行Hadoop集群,我需要知道这是否应该放在我的请求中。
那么,我应该坚持使用所有具有相同硬件的机器,还是可以在不同硬件配置的不同机器上运行?
感谢。
答案 0 :(得分:13)
以下论文描述了异构集群如何影响hadoop map-reduce的性能:
在异构群集中,节点的计算能力可能会有所不同 显着地。高速节点可以完成存储在a中的处理数据 节点的本地磁盘比低速对应的更快。之后 快速节点完成其本地输入数据的处理,即节点 必须通过处理位于其中的未处理数据来支持负载共享 或更多远程慢节点。当传输数据量由于 负载分配非常大,移动未处理数据的开销 从慢节点到快节点成为影响的关键问题 Hadoop的表现。
以下参考资料有更多详情:
它还提供了一些方法,可以提高异构群集的性能或避免性能损失。
明智地建议您在群集中使用同质机器,但如果这些机器没有完全不同的规格和性能差异,则应继续构建群集。
对于生产系统,您应该建议使用同质机器。对于开发而言,性能并不重要。
然而,您应该能够在构建Hadoop集群之后对其进行基准测试。
答案 1 :(得分:3)
同质群集当然是理想的,但并非绝对必要。例如,Yahoo!,Inc.在其生产环境中运行异构集群。通过与那里的研究人员交谈,他们发现由于调度问题导致性能受到影响(他们正在努力为他们的工具添加性能感知调度,这是一个足够大的打击),但惩罚并没有严重。