使用Hadoop的高性能机器的成本效益

时间:2013-05-27 04:37:43

标签: hadoop amazon-ec2 distributed-computing

我刚刚阅读了一些有关Hadoop here的优秀文档。看起来Hadoop相对于计算上昂贵的数据处理的其他方法(例如heterogenous computing)的主要优点之一是它的scalability。它利用大量适中成本的硬件,而不是任何一个功能强大但价格昂贵的机器。

假设我们可以选择使用高性能但昂贵的机器进行Hadoop计算。 Hadoop可以并且有效地利用这些昂贵的资源;它会自动利用额外的EC2 compute units还是你自己要进行并行编程?性能机器有多大改进?有没有一种方法来量化性能增益,价格更高EC2

1 个答案:

答案 0 :(得分:1)

Hadoop框架在可用时自动利用多个核心。您不必自己进行并行编程,这实际上是Hadoop的卖点之一:您只需编写一次工作而不必担心线程同步逻辑,然后根据集群的配置,它将尝试尽可能多地使用所有核心。

例如,假设您有一个在多TB数据集上运行的作业,在计算拆分后需要运行100个任务。现在,如果您想在10个m1.small节点(只有1个核心)上运行您的作业,您的群集将一次具有10个任务的容量(每个节点1个任务)。但是如果你想在例如10 m1.large节点(2 x 2核心)上运行它,你一次可以容纳40个任务,所以你的工作速度大约是你使用它的4倍m1.small的数量,因为它将利用额外的核心。

此外,我听说有人在Hadoop上使用CUDA(一些信息here)而亚马逊有一些集群GPU实例,所以在这种情况下你也可以利用GPU。

最重要的是,在使用Hadoop时,您应该根据核心数量而不是机器数量进行推理。显然你想找到一个很好的权衡,我在过去看到过一个集群,每个节点都有很多内核,但是磁盘I / O并不好,所以这引起了集群中很多争用,我们有了减少每个节点的最大任务数(您可以通过参数mapred.tasktracker.map.tasks.maximummapred.tasktracker.reduce.tasks.maximum在Hadoop配置中控制)。

我个人发现m1.xlarge实例在某些Hadoop集群中运行得很好,而高CPU的实例对我造成了太多的磁盘争用。