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