最近在做数据灌库工作,数据量较大不能基于单机进行灌库,需要编写MR任务。由于做MR开发经验不足,几经优化才满足灌库性能要求,这里总结一下。
如非必要,请规避reduce任务reduce任务涉及跨计算节点拉取数据,shuffle及数据排序,而这些过程都是很耗资源的。 
 对于灌库任务来说,我们没有必要对数据做排序,完全不要reduce任务,不要画蛇添足地去将reduce设置为cat,看上去cat只是作了数据的打印,但因此引入的资源消耗是很大的 
 最简单的规避reduce任务的方式就是设置reduce为NONE,如 
 hadoop streaming \ 
 -D fs.default.name=${NJ_HDFS_NAME}\ 
 -D hadoop.job.ugi=${RANK_RP_UGI}\ 
 -D mapred.job.tracker=${JOB_TRACKER}\ 
 -D mapred.job.map.capacity=${capacity}\ 
 -D mapred.map.over.capacity.allowed=false\ 
 -D mapred.job.priority=VERY_HIGH\ 
 -D mapred.job.queue.name=rank-rp\ 
 -D mapred.job.name=import2redis_showlist\ 
 -files conf\ 
 -files monitor\ 
 -file bin/import2redis.sep\ 
 -input ${input_path}/part-*\ 
 -output ${output_path}\ 
 -mapper "./import2redis.se

 天蓝控  于 2017-08-25 16:17:16 发布
