【发布时间】:2012-12-04 07:11:18
【问题描述】:
我是 Map-reduce 的新手,我正在使用 Hadoop 管道。
我有一个包含记录数的输入文件,每行一个。我编写了一个简单的程序来打印其中三个单词很常见的那些行。在 map 函数中,我将单词作为键并将记录作为值发出,并在 reduce 函数中比较了这些记录。
然后我将 Hadoop 的性能与简单的 C++ 程序进行了比较,在该程序中,我从文件中读取记录并将其拆分成单词并将数据加载到地图中。 Map 包含作为键的单词和作为值的记录。加载所有数据后,我比较了这些数据。
但我发现,与普通 C++ 程序相比,Hadoop Map-reduce 执行相同任务需要很长时间。当我在 hadoop 上运行我的程序时,大约需要 37 分钟,而简单的 C++ 程序只需要大约 5 分钟。
请有人帮我弄清楚我是否在某个地方做错了?我们的应用需要性能。
【问题讨论】:
-
我同意 Gruzman 的回答,但您也应该尝试在 map 函数中进行单词/记录比较。这可以最大限度地减少从 map 传输到 reduce 时的网络流量,这通常是瓶颈。我希望这可以缩短运行时间,提供更真实的比较(假设您没有将 reducer 也用作组合器)。
标签: hadoop