99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2020-07-05 閱讀量: 1136
MapReduce階段的Shuffle優(yōu)化

MapReduce的工作流程參加上個(gè)帖子《MapReduce詳細(xì)工作流程圖解》,針對MapReduce工作流程的各個(gè)階段,對應(yīng)的Shuffle優(yōu)化方法如下:

1)Map階段:

(1)增大環(huán)形緩沖區(qū)大小。由100m擴(kuò)大到200m

(2)增大環(huán)形緩沖區(qū)溢寫的比例。由80%擴(kuò)大到90%

(3)減少對溢寫文件的merge次數(shù)。(10個(gè)文件,一次20個(gè)merge)

(4)不影響實(shí)際業(yè)務(wù)的前提下,采用Combiner提前合并,減少 I/O。

2)Reduce階段:

(1)合理設(shè)置Map和Reduce數(shù):兩個(gè)都不能設(shè)置太少,也不能設(shè)置太多。太少,會(huì)導(dǎo)致Task等待,延長處理時(shí)間;太多,會(huì)導(dǎo)致 Map、Reduce任務(wù)間競爭資源,造成處理超時(shí)等錯(cuò)誤。

(2)設(shè)置Map、Reduce共存:調(diào)整slowstart.completedmaps參數(shù),使Map運(yùn)行到一定程度后,Reduce也開始運(yùn)行,減少Reduce的等待時(shí)間。

(3)規(guī)避使用Reduce,因?yàn)镽educe在用于連接數(shù)據(jù)集的時(shí)候?qū)?huì)產(chǎn)生大量的網(wǎng)絡(luò)消耗。

(4)增加每個(gè)Reduce去Map中拿數(shù)據(jù)的并行數(shù);

(5)集群性能可以的前提下,增大Reduce端存儲(chǔ)數(shù)據(jù)內(nèi)存的大小。

3)IO傳輸:

采用數(shù)據(jù)壓縮的方式,減少網(wǎng)絡(luò)IO的的時(shí)間。安裝Snappy和LZOP壓縮編碼器。

壓縮:

(1)map輸入端主要考慮數(shù)據(jù)量大小和切片,支持切片的有Bzip2、LZO。注意:LZO要想支持切片必須創(chuàng)建索引;

(2)map輸出端主要考慮速度,速度快的snappy、LZO;

(3)reduce輸出端主要看具體需求,例如作為下一個(gè)mr輸入需要考慮切片,永久保存考慮壓縮率比較大的gzip。

4)整體:

(1)NodeManager默認(rèn)內(nèi)存8G,需要根據(jù)服務(wù)器實(shí)際配置靈活調(diào)整,例如128G內(nèi)存,配置為100G內(nèi)存左右,yarn.nodemanager.resource.memory-mb。

(2)單任務(wù)默認(rèn)內(nèi)存8G,需要根據(jù)該任務(wù)的數(shù)據(jù)量靈活調(diào)整,例如128m數(shù)據(jù),配置1G內(nèi)存,yarn.scheduler.maximum-allocation-mb。

(3)mapreduce.map.memory.mb:控制分配給MapTask內(nèi)存上限,如果超過會(huì)kill掉進(jìn)程(報(bào):Container is running beyond physical memory limits. Current usage:565MB of512MB physical memory used;Killing Container)。默認(rèn)內(nèi)存大小為1G,如果數(shù)據(jù)量是128m,正常不需要調(diào)整內(nèi)存;如果數(shù)據(jù)量大于128m,可以增加MapTask內(nèi)存,最大可以增加到4-5g。

(4)mapreduce.reduce.memory.mb:控制分配給ReduceTask內(nèi)存上限。默認(rèn)內(nèi)存大小為1G,如果數(shù)據(jù)量是128m,正常不需要調(diào)整內(nèi)存;如果數(shù)據(jù)量大于128m,可以增加ReduceTask內(nèi)存大小為4-5g。

(5)mapreduce.map.java.opts:控制MapTask堆內(nèi)存大小。(如果內(nèi)存不夠,報(bào):java.lang.OutOfMemoryError)

(6)mapreduce.reduce.java.opts:控制ReduceTask堆內(nèi)存大小。(如果內(nèi)存不夠,報(bào):java.lang.OutOfMemoryError)

(7)可以增加MapTask的CPU核數(shù),增加ReduceTask的CPU核數(shù)

(8)增加每個(gè)Container的CPU核數(shù)和內(nèi)存大小

(9)在hdfs-site.xml文件中配置多目錄

(10)NameNode有一個(gè)工作線程池,用來處理不同DataNode的并發(fā)心跳以及客戶端并發(fā)的元數(shù)據(jù)操作。dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群規(guī)模為10臺(tái)時(shí),此參數(shù)設(shè)置為60。


34.3496
1
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子