Sort Benchmark是一个专门从事排序基准评估的非盈利机构,该机构每年都会举办一次排序基准评估比赛,很多公司和学术机构都会带着他们最新的研究成果来参加这个比赛,以评估他们的研究成果。在2007之前,该机构的排序基准评估比赛的主办和管理主要都是由Jim Gray来负责,他是数据库界的超级牛人、1998年图灵奖获得者。但不幸的是,JimGray在
Sort Benchmark有很多种形式,到目前为止,总共有6种:GraySort、PennySort、MinuteSort、JouleSort、TeraByte Sort、Datamation Sort。随着机器配置和排序程序的性能提升,TeraByte Sort、Datamation Sort目前已经弃用了。不管是哪一种Sort Benchmark形式,都必须遵守下面的几条公共规则:
对于每一种排序测试基准方式,都有两种类别可供选择,分别是:Indy和Daytona。Indy很像印第赛车那样,它可以自定义排序评测标准,如固定的key和记录大小,以及随机的、高密度的和均匀分布的输入keys。简单点说就是,定制不通用的排序基准。Daytona要的则是通用目的的排序,而且还有更多的评测要求:
这里,我主要讲一下Yahoo利用Hadoop参加过的GraySort、MinuteSort和TeraByte Sort,其它的各位看官就要到官方主页去细看咯。首先是TeraByte Sort,它的评测标准就是看你排序1TB的数据要花多少时间。在2008年5月,Yahoo利用Hadoop赢得了TeraByte Sort的第一名,耗时209秒(3.48分),比上一年的的纪录保持者保持的297秒快了将近90秒。当时Hadoop的集群配置为910 个节点 x (4 dual-core processors, 4 disks,8 GB memory) ,版本为打上HADOOP-3443和HADOOP-3446补丁的pre-0.18。注意,下图只是配图,是09年的数据,非比赛数据,其它图同样。
图1 TeraByte Sort
由于实质上TeraByte Sort跟MinuteSort方式差不多,于是09年开始官方就把TeraByteSort给弃用了。MinuteSort,顾名思义,就是看你在一分钟内能排序多大的数据。Hadoop以500GB/min的成绩拿下了2009年MinuteSort的冠军,用了1406个节点 x (2 Quadcore Xeons, 8 GBmemory, 4 SATA)。
图2 MinuteSort
GraySort,这个咋一看,不像前两个能直接看出点名堂来。其实这是为纪念SortBenchmark的发起者Jim Gray而起的名字,它的目标就是评测大规模排序的性能。GraySort的评测单位是TB/min,这个来源得追溯到1994年MinuteSort评测基准第一次被构想出来的时候,当时Jim's的评测目标就是一分钟内能排序1TB。GraySort没有最大数据约束,但是有最小数据约束,最小必须是100TB。这样做的目的是为了确保数据集不能全被放在内存上,随着时间的推移,这个最小值会逐渐提升。Hadoop的超大规模计算能力在GraySort中得以充分体现,以0.578TB/min的成绩一举拿下2009年的GraySort冠军,用了3452个节点 x (2 Quadcore Xeons, 8 GBmemory, 4 SATA)。
图3 GraySort(1)
由于GraySort对最大数据没有约束,Yahoo还测试了1PB的数据,平均速度为1.03TB/min!
图4 GraySort(2)
到此,各位对Sort Benchmark以及Hadoop的超大规模计算能力应该已经有一个较清晰的了解了。下去,有时间会把Yahoo最新的GraySort程序分析下(其实早期的已经看得差不多了,复杂的不多,主要就是分区那里用到了一个Trie树。不过目前最新的用新MRapi写的相比以前变化了不少,有时间再把它罗列一下)。