MapReduce併發參數控制

maper數量控制

  • 決定參數
    • 配置參數
      • mapreduce.input.fileinputformat.split.minsize //啓動map最小的split size大小,默認0
      • mapreduce.input.fileinputformat.split.maxsize //啓動map最大的split size大小,默認256M
      • dfs.block.size //block塊大小,默認64M
      • mapreduce.job.maps //顯示設定的期望的mapper的數量
      • 計算公式:splitSize = Math.max(minSize, Math.min(maxSize, blockSize));
    • 輸入文件數目與單個文件大小
      • 不進行顯式設定 splitSize 和 mapper 數量參數時,通常一個文件分配給一個獨立的mapper
      • 顯式設定了參數時
        1. 若只顯式設定 splitSize 或 mapper數量 中的一個
          • Hadoop並不會按照設定的參數進行分片大小和mapper數量的設置,而是按照blocksize的大小進行切分和創建mapper
        2. 若同時顯式設定了 splitSize 和 mapper 數量
          • 此時會按照設定的 splitSize 大小進行設置分片,而 mapper 的數量並不一定與顯式設定的 mapper 數量一致,而是對輸入的文件大小和數量按照顯式設定的 splitSize 的大小對輸入文件切分後所得的 mapper 數量
          • 對輸入文件進行切分時
            • 若單個文件大小 < splitSize,則該單個文件將分配給一個獨立的mapper
            • 若單個文件大小 > splitSize,則將該文件按照splitSize大小拆分後分給多個mapper
            • 若單個文件切分後最後剩餘的部分 < splitSize,則該分部也會被分配給一個獨立的mapper,即一個split不會跨越兩個文件
  • 運行時併發度控制
    • 在創建了一定數目的 mapper 後,若要控制運行時併發度,可以通過如下參數進行
      • mapreduce.job.running.map.limit
    • 在參數可以實現控制在同一時刻處於running狀態的mapper數量,是實際運行時的併發控制

reducer 數量控制

  • reducer 數量與 partition 數量相同,每個reducer對應生成一個獨立的結果文件(或文件夾)
  • reducer 數量默認爲1,即將mapper的處理結果數據合併到一個文件(或文件夾)中
  • 如果不需要進行規約處理,將reducer數量設置爲0即可,此時作業的運行速度相對較高
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章