原来的问题是这样的:
你要对 1PB 大小的整数进行排序,范围是 -2^31 ~ 2^31 - 1 (int),你有 1024 台机器,每台机器有 1TB 磁盘空间和 16GB 内存空间。假设磁盘速度为 128MB/s (r/w),内存速度为 8GB/s (r/w)。CPU时间可以忽略。为简单起见,可以忽略网络传输时间。计算所需的近似时间。
我知道通过外部排序,我们可以在大约 10 小时内对单台机器上的 1TB 数据进行排序,计算如下:
磁盘访问(2r2w):1T * 4 / 128MB/s = 2 ^ 15 sec ~ 9 hrs
内存访问:
将 2^48 个整数分成 64 个部分(每个 2 ^ 42 个)大约需要 1.3 分钟。所以总共1.4小时。
63 路合并需要几秒钟,因此被忽略。
但是下一步呢:1024T数据的组合呢?我不知道这是如何计算的。那么有什么帮助吗?