Map/Reduce使用杂记
一、硬件环境
1、CPU:Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz
2、内存:2G
3、硬盘:500G
4、网卡:百兆电卡
5、网络:局域网络
6、集群数量:10台机器,1个master,10个slaves(master也做slave了!呵呵)
二、关于同时运行的map和reduce数量。
1、同时运行的数量通过mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum设置。
2、默认的设置都是2,也就是说Avg. Tasks/Node=4
3、关于数量,并非越大越好。通过测试发现,一个合适的值在2-4之间,也就是说Avg. Tasks/Node的值在4-8.当然这个和机器的性能有关系。
4、就我当前的环境,通过测试发现,map和reduce的数量都设置成2速度最快。
三、reduce的数量问题
1、reduce的数量默认是1,mapred.reduce.tasks,配置文件中的描述如下:
The default number of reduce tasks per job. Typically set to 99%
of the cluster's reduce capacity, so that if a node fails the reduces can
still be executed in a single wave.
Ignored when mapred.job.tracker is "local".
2、但是在实际的环境中,reduce的数量还是尽量多一点好,数额建议基本等于集群机器的数量。
3、reduce的数量直接决定输出的结果文件,所以在查看结果的时候可以将结果文件归并查看,命令如下:
hadoop fs -getmerge /jz /root/
4、参数mapred.jobtracker.taskScheduler.maxRunningTasksPerJob,用来控制一个job最大并行tasks数,这个是指在集群最大并行数