1

为了调试一些 map/reduce 作业,我经常使用一个简单的 unix 命令来测试它们,该命令基本上读取

cat data/* | mapper | sort | reduce > out

现在一切正常,但我想知道map | sort命令到底发生了什么。

更确切地说 :

  • 有人知道 ram/cpu 是如何加载的sort吗?

  • 该命令是即时sort排序数据,还是等待映射作业完成(注意映射器使用 STDOUT 并且不等待计算结束输出数据)?

  • 使用相当大量的输入数据似乎并没有像我预期的那样加载内存(我宁愿观察 cpu 的峰值,但我并没有真正非常精确地测量这个)。该过程是否可以使用更少的内存作为输出信息量?

感谢您的回答:)

4

1 回答 1

3

在 Linux 中,sort使用归并排序算法(来自http://en.wikipedia.org/wiki/Sort_(Unix))。合并排序可以将某些部分存储在磁盘上的临时文件中(并且在 的情况下会这样做sort)。--buffer-size因此该进程使用了​​合理数量的 RAM(您可以通过选项指定使用多少 RAM )。

于 2013-05-16T09:47:05.253 回答