3

     我是 Map-reduce 的新手,我正在使用 Hadoop Pipes。

     我有一个输入文件,其中包含记录数,每行一个。我编写了一个简单的程序来打印其中三个单词很常见的那些行。在 map 函数中,我将单词作为键发出并记录为值,并在 reduce 函数中比较了这些记录。

     然后,我将 Hadoop 的性能与简单的 C++ 程序进行了比较,在该程序中,我从文件中读取记录并将其拆分为单词并将数据加载到 map 中。Map 包含作为键的单词和作为值的记录。加载所有数据后,我比较了这些数据。
     但是我发现,与普通的 C++ 程序相比,Hadoop Map-reduce 执行相同的任务需要很长时间。当我在 hadoop 上运行我的程序时,它大约需要 37 分钟,而简单的 C++ 程序只需要大约 5 分钟。

     请有人帮我弄清楚我是否在某个地方做错了?我们的应用程序需要性能。

4

1 回答 1

2

这里应该说明几点:
Hadoop 不是高性能的——它是可扩展的。本地程序在小数据集上做同样的事情总是会优于 hadoop。因此,只有当您想在机器上的集群上运行并享受 Hadoop 的并行处理时,它的使用才有意义。
Hadoop 流在性能方面也不是最好的,因为每行都有任务切换。在很多情况下,用 Java 编写的原生 hadoop 程序会有更好的性能

于 2012-12-04T07:57:28.153 回答