Hadoop 企業優化

1 MapReduce 跑的慢的緣由

Hadoop 企業優化

2 MapReduce 優化方法

MapReduce優化方法主要從六個方面考慮:數據輸入、Map階段、Reduce階段、IO傳輸、數據傾斜問題和經常使用的調優參數。node

2.1 數據輸入

Hadoop 企業優化

2.2 Map 階段

Hadoop 企業優化

2.3 Reduce 階段

Hadoop 企業優化

2.4 IO 傳輸

Hadoop 企業優化

2.5 數據傾斜問題

Hadoop 企業優化

2.6 經常使用的調優參數

2.6.1 資源相關參數

如下參數是在用戶本身的MR應用程序中配置就能夠生效[mapred-default.xml]數據庫

配置參數 參數說明
mapreduce.map.memory.mb 一個MapTask可以使用的資源上限(單位:MB),默認爲1024。若是MapTask實際使用的資源量超過該值,則會被強制殺死
mapreduce.reduce.memory.mb 一個ReduceTask可以使用的資源上限(單位:MB),默認爲1024。若是ReduceTask實際使用的資源量超過該值,則會被強制殺死
mapreduce.map.cpu.vcores 每一個MapTask可以使用的最多cpu core數目,默認值: 1
mapreduce.reduce.cpu.vcores 每一個ReduceTask可以使用的最多cpu core數目,默認值: 1
mapreduce.reduce.shuffle.parallelcopies 每一個Reduce去Map中取數據的並行數。默認值是5
mapreduce.reduce.shuffle.merge.percent Buffer中的數據達到多少比例開始寫入磁盤。默認值0.66
mapreduce.reduce.shuffle.input.buffer.percent Buffer大小佔Reduce可用內存的比例。默認值0.7
mapreduce.reduce.input.buffer.percent 指定多少比例的內存用來存放Buffer中的數據,默認值是0.0

應該在YARN啓動以前就配置在服務器的配置文件中才能生效[yarn-default.xml]性能優化

配置參數 參數說明
yarn.scheduler.minimum-allocation-mb 給應用程序Container分配的最小內存,默認值:1024
yarn.scheduler.maximum-allocation-mb 給應用程序Container分配的最大內存,默認值:8192
yarn.scheduler.minimum-allocation-vcores 每一個Container申請的最小CPU核數,默認值:1
yarn.scheduler.maximum-allocation-vcores 每一個Container申請的最大CPU核數,默認值:32
yarn.nodemanager.resource.memory-mb 給Containers分配的最大物理內存,默認值:8192

Shuffle性能優化的關鍵參數,應在YARN啓動以前就配置好[mapred-default.xml]服務器

配置參數 參數說明
mapreduce.task.io.sort.mb Shuffle的環形緩衝區大小,默認100m
mapreduce.map.sort.spill.percent 環形緩衝區溢出的閾值,默認80%

2.6.2 容錯相關參數(MapReduce性能優化)

配置參數 參數說明
mapreduce.map.maxattempts 每一個Map Task最大重試次數,一旦重試參數超過該值,則認爲Map Task運行失敗,默認值:4
mapreduce.reduce.maxattempts 每一個Reduce Task最大重試次數,一旦重試參數超過該值,則認爲Map Task運行失敗,默認值:4
mapreduce.task.timeout Task超時時間,常常須要設置的一個參數,該參數表達的意思爲:若是一個Task在必定時間內沒有任何進入,即不會讀取新的數據,也沒有輸出數據,則認爲該Task處於Block狀態,多是卡住了,也許永遠會卡住,爲了防止由於用戶程序永遠Block住不退出,則強制設置了一個該超時時間(單位毫秒),默認是600000。若是你的程序對每條輸入數據的處理時間過長(好比會訪問數據庫,經過網絡拉取數據等),建議將該參數調大,該參數太小常出現的錯誤提示是「AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.」

3 HDFS 小文件優化方法

3.1 HDFS 小文件弊端

HDFS 上每一個文件都要在 NameNode 上創建一個索引,這個索引的大小約爲 150byte,這樣當小文件比較多的時候,就會產生不少的索引文件,一方面會大量佔用 NameNode 的內存空間,另外一方面就是索引文件過大使得索引速度變慢。網絡

3.2 HDFS小文件解決方案

小文件的優化無非如下幾種方式:ide

  • 在數據採集的時候,就將小文件或小批數據合成大文件再上傳 HDFS。
  • 在業務處理以前,在 HDFS 上使用MapReduce程序對小文件進行合併。
  • 在 MapReduce 處理時,可採用 CombineTextInputFormat 提升效率。
    Hadoop 企業優化
相關文章
相關標籤/搜索