MapReduce最佳化設定

來源:互聯網
上載者:User

標籤:

Map階段的最佳化

主要是確定合適的Map數。那麼首先要瞭解Map數的計算公式:num_Map_tasks = max[${Mapred.min.split.size}, min(${dfs.block.size}, ${Mapred.max.split.size})] 
    • Mapred.min.split.size指的是資料的最小分割單元大小。
    • Mapred.max.split.size指的是資料的最大分割單元大小。
    • dfs.block.size指的是HDFS設定的資料區塊大小。
Reduce階段最佳化(實際的reduce計算)             hive 中的reduce預估         num_Reduce_tasks = min[${Hive.exec.Reducers.max}, (${input.size} / ${ Hive.exec.Reducers.bytes.per.Reducer})]  
reduce在運行時往往需要從相關map端複製資料到reduce節點來處理,因此相比於map任務。reduce節點資源是相對比較缺少的,同時相對運行較慢,正確的reduce任務的個數應該是0.95或者1.75 *(節點數 ×mapred.tasktracker.tasks.maximum參數值)。如果任務數是節點個數的0.95倍,那麼所有的reduce任務能夠在 map任務的輸出傳輸結束後同時開始運行。如果任務數是節點個數的1.75倍,那麼高速的節點會在完成他們第一批reduce任務計算之後開始計算第二批 reduce任務,這樣的情況更有利於負載平衡。同時需要注意增加reduce的數量雖然會增加系統的資源開銷,但是可以改善負載勻衡,降低任務失敗帶來的負面影響。同樣,Reduce任務也能夠與 map任務一樣,通過設定JobConf 的conf.setNumReduceTasks(int num)方法來增加任務個數。 

jvm重用

      正常情況下,MapReduce啟動的JVM在完成一個task之後就退出了,但是如果任務花費時間很短,又要多次啟動JVM的情況下(比如對很                 大資料量進行計數操作),JVM的啟動時間就會變成一個比較大的overhead。在這種情況下,可以使用jvm重用的參數:               Mapred.Job.reuse.jvm.num.tasks

MapReduce最佳化設定

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.