mapreduce 性能優化,經過inputSplit分片size控制map數目

推薦參考資料:html

https://my.oschina.net/u/1451042/blog/352810性能

http://www.cnblogs.com/ihongyan/p/4855256.htmlspa

map task 個數嚴重影響mr的性能。網上不少資料,講解了原理和方法,我這裏再也不敖述。我總結了兩種修改方法,但願對你們有幫助。.net

方法1:修改 hdfs 的blocksize,這種方法很不可取,須要從新啓動集羣。關鍵是之前的數據依然保持者之前blocksize的大小,新數據纔會是新的blocksize的大小。好比之前是128M,修改成512M。之前的數據沒變化,blocksize依然是128M。orm

方法二:推薦方法。代碼中設置,最靈活,根據不一樣需求,設置不同的值。設置 mapred.min.split.size 的大小代碼中添加FileInputFormat.setMinInputSplitSize,單位是字節,如個人代碼:htm

            job.setMapOutputValueClass(IntWritable.class);
            job.setNumReduceTasks(1);
            //設置最小分片爲512M
            FileInputFormat.setMinInputSplitSize(job, 1024*1024*512);

            FileInputFormat.addInputPath(job, new Path("/usr/keyword/input"));blog

 

補充說明:input

TextInputFormat.setMinInputSplitSize(job,1024L);//設置最小分片大小
TextInputFormat.setMaxInputSplitSize(job,1024×1024×10L);//設置最大分片大小
it

相關文章
相關標籤/搜索