像Hadoop这样的开源分布式计算框架的效率如何?效率,我指的是CPU周期,它可以用于任务中的“实际工作”,这些任务大多是纯计算的。换句话说,有多少CPU周期被用于开销,或由于不使用而浪费?我不是在找具体的数字,只是粗略地看一下。例如,我能期望使用集群CPU能力的90%吗? 99%?99.9%?
更具体地说,假设我想要计算PI,并且我有一个算法X。当我在紧循环中的单个核心上执行此操作时,假设我获得了一些性能Y。如果我使用Hadoop等分布式方式进行此计算,我可以预期性能会有多大的下降?
我知道这将取决于许多因素,但粗略的幅度是多少?我考虑的集群可能有10 - 100台服务器(总共80- 800个CPU核心),如果这很重要的话。
谢谢!
发布于 2011-07-27 16:46:26
从技术上讲,hadoop在几个方面都有相当大的开销:
a)每个任务的开销可以估计为1到3秒。
b) HDFS数据读取开销,由于通过套接字和CRC计算传递数据。这很难估计。
如果您有许多小任务,并且/或者如果您的数据处理很轻,则这些开销可能非常重要。
同时,如果您有较大的文件(较少的任务),并且您的数据处理很重(比方说每个内核有几mb/秒),那么Hadoop开销可以忽略不计。
归根结底- Hadoop开销是可变的,这在很大程度上取决于您正在进行的处理的性质。
发布于 2011-07-27 11:02:54
这个问题过于宽泛和含糊,无法有效地回答。有许多不同的开源平台,它们的质量差别很大。例如,一些早期的Beowulf是出了名的浪费,而现在的MPI2非常精简。
此外,“效率”在不同的领域意味着不同的东西。它可能意味着构建和传递与工作负载相关的消息所花费的CPU开销(在这种情况下,您正在比较MPI和Map/Reduce),或者它可能意味着解释器/VM所浪费的CPU周期数(如果有的话)(在这种情况下,您正在比较C++和Python)。
这也取决于你试图解决的问题。在某些域中,有许多小消息来回飞来飞去,在这种情况下,构建它们的CPU成本非常重要(比如高频交易)。在其他情况下,您有相对较少但较大的工作块,因此与工作块(如Folding@Home)中数学运算的计算效率相比,打包消息的成本很小。
总而言之,这是一个不可能回答的问题,因为没有一个答案。这具体取决于您试图使用分布式平台做什么,以及它运行在什么机器上。
发布于 2011-07-27 12:56:11
MapR是Apache Hadoop的替代方案之一,Srivas (首席技术官和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社区中围绕scalability/reliability/availability/efficiency.有很多活动下一代MapReduce、HDFS可伸缩性/可用性是目前正在进行的一些工作。这些将在Hadoop版本0.23中可用。
直到一段时间以前,Hadoop社区的焦点似乎还集中在可伸缩性上,但现在也转向了效率。
https://stackoverflow.com/questions/6838797
复制相似问题