UNIX:"./process | sort"是如何工作的?



为了调试一些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)。

相关内容

  • 没有找到相关文章

最新更新