{"title": "Hadoop\u6d4b\u8bd5TeraSort", "update_time": "2014-02-04 21:09:15", "tags": "teraSort hadoop", "pid": "249", "icon": "hadoop.png"}
**使用teragen产生数据** 使用Teragen来产生数据,示例如下: ``` hadoop jar hadoop-*-examples.jar teragen 参数1 参数2 ``` teragen的参数解释: * 参数1:表示要产生的数据的行数。Teragen每行数据的大小是100B。 * 参数2 : 产生的数据放置的文件夹地址 如果要产生1T的数据,需要的行数=1024*1024*1024*1024/100=10995116277行 默认的teragen的启动的map数比较少,只有2个,如果要指定map数可以加-Dmapred.map.tasks=map数的方式。 比如我们来产生1T的数据,命令如下 ``` hadoop jar hadoop-*-examples.jar teragen -Dmapred.map.tasks=100 10995116277 terasort/1T-input ``` ls一下目录是否产出 ``` hadoop@myhost $ hadoop fs -ls /user/hadoop/terasort/ Found 1 items drwxr-xr-x - hadoop cug-admin 0 2013-07-13 12:49 /user/hadoop/terasort/1T-input ``` **使用Terasort排序** 使用terasort对刚才使用teragen产生的数据进行排序,排序结果输出到/user/hadoop/terasort/1T-output。 默认的reduce数目是1,会导致任务跑得非常慢。通过-Dmapred.reduce.tasks指定reduce数目,这里我们设置50个 ``` hadoop jar hadoop-*-examples.jar terasort -Dmapred.reduce.tasks=50 \ /user/hadoop/terasort/1T-input /user/hadoop/terasort/1T-output ``` 启动Teragen之后,会提交mapre reduce任务来,产生TeraSort需要的数据 **使用Teravalidate 进行验证** 使用TeraValidate 对Terasort的结果进行验证: ``` hadoop jar hadoop-*-examples.jar teravalidate /user/hadoop/terasort/1T-output /user/hadoop/terasort/1T-validate ```