前几天看腾讯的科技博客,里面提到微信“每秒处理TB级别的数据量”,并提到腾讯团队在堪称计算机界的奥林匹克的2016年的sort benchmark 大赛上摘得四项冠军,将TB级别排序成绩刷新指99.8s,遂对TB级别的排序算法感兴趣,现将搜集的TB级别排序算法整理贴在这里。
参考链接:
http://blog.csdn.net/FX677588/article/details/72471357?locationNum=2&fps=1
问题1:如何对TB级别数据进行排序
方法内容:
传统的排序算法一般指内排序算法,针对的是数据可以一次全部载入内存中的情况。但是面对海量数据,即数据不可能一次全部载入内存,需要用到外排序的方法。外排序采用分块的方法(分而治之),首先将数据分块,对块内数据按选择一种高效的内排序策略进行排序。然后采用归并排序的思想对于所有的块进行排序,得到所有数据的一个有序序列。
例如,考虑一个1G文件,可用内存100M的排序方法。首先将文件分成10个100M,并依次载入内存中进行排序,最后结果存入硬盘。得到的是10个分别排序的文件。接着从每个文件载入9M的数据到输入缓存区,输出缓存区大小为10M。对输入缓存区的数据进行归并排序,输出缓存区写满之后写在硬盘上,缓存区清空继续写接下来的数据。对于输入缓存区,当一个块的9M数据全部使用完