1.虛擬 CPU 個(gè)數(shù)計(jì)算方法
CPU 個(gè)數(shù) * 單個(gè) CPU 核數(shù) * 單個(gè) CPU 核的超線程數(shù)
為了避免資源浪費(fèi), 虛擬 CPU 與內(nèi)存需滿足線性比例:?
1 : 4 G ~ 8
2.硬盤大小
需考慮臨時(shí)數(shù)據(jù)的存儲(chǔ): 20% ~ 30%
(存儲(chǔ)的數(shù)據(jù)量 * 副本數(shù) ) / DataNode 數(shù) * (1 + 0.2 ~ 0.3)
3.HDFS參數(shù)調(diào)優(yōu)
(1)hdfs-site.xml 參數(shù)
(2)core-site.xml 參數(shù)
(3)yarn-site.xml 參數(shù)
(4)mapred-site.xml 參數(shù)
<property>?
<name>mmapreduce.reduce.memory.mb </name>
<value>-1</value>
</property>
解釋: 該參數(shù)表示執(zhí)行 Reduce 任務(wù)需要的內(nèi)存大小地回。 它可以從 mapreduce.map.java.opts 參數(shù)設(shè)定的值繼承,如果沒有設(shè) 定,該值根據(jù)容器內(nèi)存設(shè)置。 一般要大于 mapreduce.map.memory.mb 。
<property>
<name>mapreduce.reduce.cpu.vcores</name><value>1</value>
</property>
解釋: 該參數(shù)表示執(zhí)行 Reduce 任務(wù)需要的虛擬 CPU 數(shù),默認(rèn)值為 1刻像。根據(jù)容器虛擬 CPU 數(shù)設(shè)定,可以適當(dāng)加大,并且該值與參數(shù) mapreduce.reduce.memory.mb 成線性比例才不至于浪費(fèi)資源畅买。 一般要大于 mapreduce.map.cpu.vcores 。
<property>
<name>yarn.app.mapreduce.am.resource.cpu-vcores</name>
<value>1</value>
</property>
解釋: 該參數(shù)表示執(zhí) MapReduce 作業(yè)的 ApplicationMaster(二級(jí)調(diào) 度器) 向 ResourceManager(一級(jí)調(diào)度器) 申請(qǐng)的虛擬 CPU 個(gè)數(shù),默 認(rèn)值為 1,可以適當(dāng)調(diào)大细睡。
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>1536</value>
</property>
解釋: 該參數(shù)表示執(zhí) MapReduce 作業(yè)的 ApplicationMaster(二級(jí)調(diào) 度器) 向 ResourceManager(一級(jí)調(diào)度器) 申請(qǐng)的內(nèi)存大小,默認(rèn)值為 1536 MB,可以適當(dāng)調(diào)大谷羞。
<name>mapreduce.task.io.sort.mb</name>
<value>100</value>
解釋: 該參數(shù)表示 Map 任務(wù)的輸出的環(huán)形緩沖區(qū)大小,默認(rèn)為 100MB, 可以適當(dāng)調(diào)大。
<name>mapreduce.task.io.sort.factor</name>
<value>10</value>
解釋: 該參數(shù)為控制 Map 端和 Reduce 端的合并策略,表現(xiàn)為一次合 并的文件數(shù)目,默認(rèn)值為 10溜徙。 該值如果過大會(huì)使合并時(shí)內(nèi)存消耗過大,如果過小會(huì)增加合并次數(shù)湃缎。
<name>mapreduce.map.sort.spill.percent</name>
<value>0.80</value>
解釋: 該參數(shù)表示 Map 任務(wù)的輸出的環(huán)形緩沖區(qū)的閾值,一旦緩存區(qū) 的內(nèi)容占緩沖區(qū)的比例超過該值,則將緩沖區(qū)的內(nèi)容刷寫到mapreduce.cluster.local.dir 所配置的目錄,默認(rèn)為 0.8,建議不低于 0.5。
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>25</value>
解釋: 該參數(shù)表示 Reduce 任務(wù)從 Map 任務(wù)復(fù)制輸出的工作線程數(shù), 默認(rèn)為 5, 可以適當(dāng)調(diào)高萌京。如果設(shè)置過高,會(huì)導(dǎo)致大量數(shù)據(jù)在網(wǎng)絡(luò)同時(shí)傳 輸,引起 I/O 壓力過大,比較科學(xué)的設(shè)定方式為 4 * lgN ,其中 N 為集群 容量大小雁歌。mapreduce.cluster.local.dir 所配置的目錄,默認(rèn)為 0.8,建議 不低于 0.5。
<name>mapreduce.reduce.shuffle.input.buffer.percent</name>
<value>0.7</value>
解釋: 該參數(shù)表示 shuffle 中的復(fù)制階段耗費(fèi) Reduce 任務(wù)堆比例,默
認(rèn)為 0.7知残。Reduce 任務(wù)的堆由前面的配置計(jì)算得出,可以根據(jù)具體情況
進(jìn)行增減靠瞎。
<name>mapreduce.reduce.shuffle.merge.parallelcopies</name>
<value>0.66</value>
解釋: 表示當(dāng)內(nèi)存使用率超過該參數(shù)時(shí),將會(huì)觸發(fā)一次合并操作,已將內(nèi)
存中的數(shù)據(jù)刷寫到磁盤上,默認(rèn)值為 0.66,可以根據(jù)具體情況適當(dāng)調(diào)整。
<name>mapreduce.job.reduce.slowstart.completedmaps</name>
<value>0.05</value>
解釋: 該參數(shù)控制 Reduce 任務(wù)的啟動(dòng)時(shí)機(jī),默認(rèn)值為 0.05求妹。 表示當(dāng) Map 任務(wù)完成數(shù)目達(dá)到 5% 時(shí),啟動(dòng) Reduce 任務(wù),這是為較 緩慢的網(wǎng)絡(luò)傳輸設(shè)計(jì)的,可以適當(dāng)調(diào)高乏盐。 不過 Reduce 任務(wù)啟動(dòng)時(shí)間過早或者過晚都會(huì)增加作業(yè)的完成時(shí)間。 如果不加設(shè)定, MapReduce 作業(yè)的 Reduce 個(gè)數(shù)默認(rèn)為 1,可以根據(jù) 需要在作業(yè)中進(jìn)行設(shè)定制恍。 除了以上配置,還可以配置任務(wù)調(diào)度器,設(shè)置跳過壞記錄來提高執(zhí)行效率父能。