对Hadoop TeraSort的介绍可以参见董大神的博客 Hadoop中TeraSort算法分析
以下就记录下测试过程
TeraGen中SortGenMapper的addKey生成了10byte的Key,addRowId生成了88byte的Value,再加上每行的结束符,一行Tera记录是100byte。
通过设置map task的数量可以控制输出文件的个数
#生成了1MB的数据并在HDFS中创建1M的目录来存储,目录中包括4个文件,每个文件2500Bytes hadoop jar hadoop-0.20.2-examples.jar teragen -D mapred.map.tasks=4 10000 1M
TeraSort进行排序,包括了采样、标记、局部排序三个步骤
hadoop jar hadoop-0.20.2-examples.jar terasort -D mapred.reduce.tasks=4 1M 1M-out
TeraValidate对排序结果进行检查,对于不正确的排序会生成一个文件列出错误排序记录
hadoop jar hadoop-0.20.2-examples.jar teravalidate 1M-out 1M-val #刻意修改输出文件后执行teravalidate的输出 error misorder in part-00000 last: '7HSifVqk)-' current: '7HL.k5qzBZ' error misorder in part-00000 last: '7J?k]>_kP&' current: '7HVI{*k\=,' error misordered keys last: part-00000:end 'O(ju`RkUR_' current: part-00001:begin '7HL.k5qzBZ'