像Hadoop这样的开源分布式计算框架效率如何?通过效率,我的意思是可以用于大多数纯计算任务中的“实际工作”的CPU周期。换句话说,由于没有使用,有多少CPU周期用于开销或浪费?我不是在寻找特定的数字,只是粗略的画面。例如。我可以期望使用集群90%的CPU功率吗? 99%? 99.9%?
更具体地说,假设我想计算PI,并且我有一个算法X.当我在一个紧密循环的单个核心上执行此操作时,假设我得到了一些性能Y.如果我在使用例如分布式方式Hadoop,我可以期待多少性能下降?
据我所知,这取决于很多因素,但最重要的是什么呢?我想的是一个可能有10到100台服务器的集群(总共80到800个CPU核心),如果这很重要的话。
谢谢!
答案 0 :(得分:2)
这个问题太宽泛而且含糊不清,难以回答。有许多不同的开源平台,其质量差异很大。例如,一些早期的Beowulfs是众所周知的浪费,而现代的MPI2非常精简。
此外,“效率”在不同的领域意味着不同的东西。它可能意味着相对于工作负载构建和传递消息所花费的CPU开销量(在这种情况下,您将比较MPI与Map / Reduce),或者它可能意味着解释器/ VM浪费的CPU周期数,如果有的话(在这种情况下你要比较C ++和Python)。
这也取决于你试图解决的问题。在某些领域,你有很多小小的消息来回飞行,在这种情况下,构建它们的CPU成本很重要(比如高频交易)。在其他情况下,您只有相对较少但工作量较大的工作块,因此与工作块内的数学计算效率(如Folding @ Home)相比,打包消息的成本很小。
总而言之,这是一个不可能回答的问题,因为没有一个答案。具体取决于您尝试使用分布式平台做什么,以及它运行的机制。
答案 1 :(得分:2)
技术上,hadoop在几个方面有相当大的开销:
a)每个任务开销,可以估计1到3秒。
b)由于通过套接字和CRC计算传递数据,HDFS数据读取开销。估计更难
如果您有许多小任务,和/或您的数据处理很轻,这些开销可能非常重要。
同时,如果你有大文件(更少的任务)和你的数据处理很重(比如说每个核心几mb /秒),那么可以忽略Hadoop开销。
在底线 - Hadoop开销是可变的东西,高度取决于你正在进行的处理的性质。
答案 2 :(得分:1)
MapR是Apache Hadoop的替代方案之一,而Srivas(CTO和MapR的创始人)将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社区的焦点似乎在于可扩展性,但现在也转向了效率。