为了调试一些map/reduce任务,我经常使用一个简单的unix命令来测试它们,该命令基本上读取
cat data/* | mapper | sort | reduce > out
现在一切都很好,但是我想知道真正的在map | sort
命令中发生了什么。
更准确地说:
有人知道
sort
是如何加载ram/cpu的吗?sort
命令是对数据进行排序,还是等待映射作业完成(注意映射器使用STDOUT,不等待计算结束输出数据)?- 使用相当大量的输入数据似乎并没有像我期望的那样加载ram(我宁愿观察cpu的峰值,但我并没有非常精确地测量这一点)。进程是否可以使用更少的内存作为输出信息的数量?
谢谢你的回答
在Linux中,sort
使用归并排序算法(来自http://en.wikipedia.org/wiki/Sort_(Unix)。归并排序可以将某些部分存储在磁盘上的临时文件中(sort
就是这样)。因此,该进程使用合理数量的RAM(您可以通过--buffer-size
选项指定使用多少RAM)。