hadoop实例sort
参考文献:http://www.hadooper.cn/dct/page/65777
1排序实例
排序实例仅仅用 map/reduce框架来把输入目录排序放到输出目录。输入和输出必须是顺序文件,键和值是BytesWritable.mapper是预先定义的IdentityMapper,reducer 是预先定义的 IdentityReducer, 两个都是把输入直接的输出。
要运行这个例 子:bin/hadoop jar hadoop-*-examples.jar sort [-m <#maps>] [-r <#reduces>] <in-dir> <out-dir>
2运行排序基准测试
为了使得排序例子作为一个 基准测试,用 RandomWriter产 生10GB/node 的数据。然后用排序实例来进行排序。这个提供了一个可扩展性依赖于集群的大小的排序基准。默认情况下,排序实例用1.0*capacity作为 reduces的数量,依赖于你的集群的大小你可能会在1.75*capacity的情况下得到更好的结果。To use the sort example as a benchmark, generate 10GB/node of random data using RandomWriter. Then sort the data using the sort example. This provides a sort benchmark that scales depending on the size of the cluster. By default, the sort example uses 1.0 * capacity for the number of reduces and depending on your cluster you may see better results at 1.75 * capacity.
命令是:
第一个命令会在rand 目录的生成没有排序的数据。第二个命令会读数据,排序,然后写入rand-sort 目录
排序支持一般的选项:参见DevelopmentCommandLineOptions
3具体实验
3.1代码实例Sort.java
3.2在eclipse中设置参数:
/home/hadoop/rand/part-00000 /home/hadoop/rand-sort
其中/home/hadoop/rand/part-00000 表示输入路径,/home/hadoop/rand-sort表示输出路径
3.3数据来源
我们这里输入参数中的“/home/hadoop/rand/part-00000”是通过hadoop实例 RandomWriter 这个实例得到的。为了节省时间,hadoop实例 RandomWriter 中得到了两个文件,我们这里指使用了一个文件part-00000。如果要对两个文件都进行排序操作,那么输入路径只需要是目录即可。
4总结
本程序目前我测试只能在单机上执行,不能在集群上运行。即指可以run as ->java application,而不能run on hadoop,具体原因还没有找到,如果发现后续会更新本博客。
PS:2011-10-18
运行环境
1. run as java application
console中会输出信息
2.一个master和一个slave,run on hadoop
console输出信息
跟第一中情况一样。3.一台主机即做master又做slave,另外一台单独做slave
console输出信息