我是 Map-reduce 的新手,我正在使用 Hadoop Pipes。
我有一个包含记录数的输入文件,每行一个。我写了一个简单的程序来打印那些三个词是常见的行。在 map 函数中,我将单词作为键发出,并将记录作为值发出,并在 reduce 函数中比较这些记录。
然后我将 Hadoop 的性能与简单的 C++ 程序进行了比较,在该程序中,我从文件中读取记录并将其拆分为单词并将数据加载到 map 中。 Map 包含作为键的单词和作为值的记录。加载所有数据后,我比较了这些数据。
但我发现,与普通的 C++ 程序相比,Hadoop Map-reduce 执行相同的任务需要很长时间。当我在 hadoop 上运行我的程序时,它大约需要 37 分钟,而简单的 C++ 程序只需要大约 5 分钟。
请有人帮我弄清楚我是否在某个地方做错了?我们的应用程序需要性能。
最佳答案
这里有几点需要说明:
Hadoop 不是高性能的——它是可扩展的。在小数据集上执行相同操作的本地程序将始终优于 hadoop。所以只有当你想在机器上运行集群并享受Hadoop的并行处理时,它的使用才有意义。
Hadoop 流式传输也不是性能方面的最佳选择,因为每行都有任务切换。很多情况下用Java编写的原生hadoop程序会有更好的性能
关于hadoop - 无法通过 MapReduce 获得性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697801/