像Hadoop等开源计算平台的效率如何?



像Hadoop这样的开源分布式计算框架有多高效?通过效率,我的意思是可以用于主要是纯计算的任务中的"实际作业"的CPU周期。换句话说,有多少CPU周期被用于开销,或者因为没有被使用而浪费掉?我不想要具体的数字,只是一个大概的情况。例如,我可以期望使用集群90%的CPU能力吗?99% ?99.9% ?

更具体地说,假设我想计算PI,我有一个算法x。当我在一个紧密循环的单核上执行这个操作时,假设我得到了一些性能y。如果我使用Hadoop以分布式方式进行这个计算,我预计会有多大的性能下降?

我知道这取决于很多因素,但大概的大小是多少?我考虑的集群可能有10 - 100台服务器(总共80 - 800个CPU内核),如果这很重要的话。

谢谢!

从技术上讲,hadoop在几个方面有相当大的开销:
a)每个任务的开销可以估计为1到3秒。
b) HDFS的数据读取开销,由于通过套接字传递数据和CRC计算。更难估计
如果您有很多小任务,或者您的数据处理很轻,那么这些开销可能非常大。
同时,如果你有大文件(少任务)和你的数据处理很重(比如每核几mb/秒),那么Hadoop的开销可以忽略不计。总之,Hadoop的开销是可变的,这在很大程度上取决于你所做的处理的性质。

这个问题太宽泛、太模糊,无法有效地回答。有许多不同的开源平台,它们的质量差别很大。例如,一些早期的贝奥武夫是出了名的浪费,而现代的MPI2却相当精简。

此外,"效率"在不同的领域意味着不同的东西。它可能意味着相对于工作负载,用于构造和传递消息的CPU开销(在这种情况下,您正在比较MPI与Map/Reduce),或者它可能意味着解释器/VM浪费的CPU周期数,如果有的话(在这种情况下,您正在比较c++与Python)。

这也取决于你想要解决的问题。在某些领域,您有许多来回飞行的小消息,在这种情况下,构建它们的CPU成本非常重要(如高频交易)。在其他情况下,您有相对较少但较大的工作块,因此与工作块(如Folding@Home)内的数学计算效率相比,打包消息的成本很小。

所以总的来说,这是一个不可能回答的问题,因为没有唯一的答案。这具体取决于你想用分布式平台做什么,以及它运行在什么机器上。

MapR是Apache Hadoop的替代方案之一,Srivas (MapR的CTO和创始人)已经将MapR与Apache Hadoop进行了比较。下面的演示和视频比较了MapR和Apache Hadoop的指标。看起来硬件在Apache Hadoop中没有得到有效的利用。

http://www.slideshare.net/mcsrivas/design-scale-and-performance-of-maprs-distribution-for-hadoop

http://www.youtube.com/watch?v=fP4HnvZmpZI

Apache Hadoop在某些方面似乎是低效的,但是在Apache Hadoop社区中有很多围绕可伸缩性/可靠性/可用性/效率的活动。下一代MapReduce, HDFS的可伸缩性/可用性是目前正在工作的一些事情。这些将在Hadoop 0.23版本中可用。

不久前,Hadoop社区的焦点似乎是可伸缩性,但现在也转向了效率。