從幾個角度看hadoop相關參數最佳化

來源:互聯網
上載者:User

HDFS檔案系統調優

  1、系統角度

              儲存方式,NameNode採用raid1+0,DataNode採用磁碟組JBOD方式

               在順序讀檔案的情境中,比如mapreduce,可以調整檔案系統預讀緩衝的大小。

               檔案掛載設定noaptime、nodiratime,提升檔案系統的效能

2、hdfs的參數最佳化

             dfs.namenode.handler.count(預設是10,調大一些64)
             dfs.datanode.handler.count(預設是3,調大一下,8)
             dfs.datanode.max.xcievers(預設是256,設定大一些4096),datanode所允許同時執行的發送和接受任務的數量,類似於linux上的檔案控制代碼限制
             dfs.replication(3)
             dfs.block.size(預設是64M,設定為128M,或者更大)
             dfs.name.dir(多個位置冗餘備份,一份在本地,另外一份NFS )
             dfs.data.dir(多個位置分布式儲存,盡量多分布幾個分區目錄)

MapReduce調優

    1、Map端的調優(map>partion sort>spill>merge)

a、對磁碟和記憶體的影響的角度:

  mapred.local.dir(盡量多分布幾個分區目錄) 

  io.sort.mb(預設100M,設定成200M),調大,減少對磁碟的影響,不過需要考慮記憶體的大小

  io.sort.factor(預設是10),增大,可以減少merge時對磁碟的訪問次數,不過需要考慮記憶體的大小
  io.sort.spill.percent(預設是0.8),buffer中達到80%時,進行spill。
  io.sort.record.percent(0.05),用來儲存索引數組的百分比(記憶體Buffer包括兩個數組,一個是索引數組,索引數組的每個元素大小是固定的,一個是資料Buffer,索引數組中   包含key value在資料Buffer中的位移量,便於在spill寫本地檔案時,一個一個的key value定位寫)

  min.num.spill.for.combine(3),如果設定combine函數,且spill檔案最少3個時,在merge之前做combine操作,減少資料量,間接減少對磁碟的訪問

  mapred.compress.map.output/ Mapred.output.compress(LZO),啟用壓縮,減少IO的影響,需要考慮CPU的影響
  mapred.child.java.opts(設定成1G)
b、並發處理能力角度

   mapred.job.tracker.handler.count(60),job traker用於處理RPC的線程數
   tasktracker.http.threads(預設是40),tasktracker開啟的http服務,用於copy資料
   mapred.tasktracker.map.tasks.maximum(預設是2,一般設為(core_per_node)/2~2*(cores_per_node),目前多為6--8core)
2、reduce端調優(copy->sort>reduce)

a、對磁碟和記憶體的影響

     io.sort.factor(同map端)

     mapred.job.shuffle.input.buffer.percent(0.7 of reduce heap),類似於map端的io.sort.mb,shuffle最大使用的記憶體量

     mapred.job.shuffle.merge.percent(0.66 of mapred.job.shuffle.input.buffer.percent),到達這個值時,做merge操作,就flush到磁碟

     mapred.job.reduce.input.buffer.percent(sort完成後reduce計算階段用來快取資料的百分比)

b、並發處理能力角度

      mapred.reduce.copy.backoff(reduce下載線程的最大時間,300s)

      mapred.reduce.parallel.copies(shuffle階段copy線程數,預設是5,可以設定為40),對於map數量較多的情境,可以設定大一點

     mapred.tasktracker.reduce.tasks.maximum(預設是2)

     

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.