1. 程式人生 > >hadoop之 map個數控制

hadoop之 map個數控制

hadooop提供了一個設定map個數的引數mapred.map.tasks,我們可以通過這個引數來控制map的個數。但是通過這種方式設定map的個數,並不是每次都有效的。原因是mapred.map.tasks只是一個hadoop的參考數值,最終map的個數,還取決於其他的因素。

為了方便介紹,先來看幾個名詞:
block_size : hdfs的檔案塊大小,1.x預設為64M,2.x為128M,可以通過引數dfs.block.size設定
total_size : 輸入檔案整體的大小
input_file_num : 輸入檔案的個數
mapred.tasktracker.map.tasks.maximum: 任務跟蹤器將同時執行的最大對映任務數,預設為2

(1)預設map個數
如果不進行任何設定,預設的map個數是和blcok_size相關的。
default_num = total_size / block_size;

(2)期望大小
可以通過引數mapred.map.tasks來設定程式設計師期望的map個數,但是這個個數只有在大於default_num的時候,才會生效。
goal_num = mapred.map.tasks;

(3)設定處理的檔案大小
可以通過mapred.min.split.size 設定每個task處理的檔案大小,但是這個大小隻有在大於block_size的時候才會生效。
split_size = max(mapred.min.split.size, block_size);
split_num = total_size / split_size;

(4)計算的map個數
compute_map_num = min(split_num, max(default_num, goal_num))

除了這些配置以外,mapreduce還要遵循一些原則。 mapreduce的每一個map處理的資料是不能跨越檔案的,也就是說min_map_num >= input_file_num。 所以,最終的map個數應該為:
final_map_num = max(compute_map_num, input_file_num)

經過以上的分析,在設定map個數的時候,可以簡單的總結為以下幾點:
(1)如果想增加map個數,則設定mapred.map.tasks 為一個較大的值。
(2)如果想減小map個數,則設定mapred.min.split.size 為一個較大的值。
(3)如果輸入中有很多小檔案,依然想減少map個數,則需要將小檔案merger為大檔案,然後使用準則2。

(5)mapred.tasktracker.map.tasks.maximum >= mapred.map.tasks

補充: hadoop版本中 1.x 與 2.x 引數名稱有變更
1.x 名稱                                                     2.x 名稱
mapred.map.tasks                                     mapreduce.job.maps
mapred.min.split.size                                 mapreduce.input.fileinputformat.split.minsize
mapred.tasktracker.map.tasks.maximum   mapreduce.tasktracker.map.tasks.maximum


相關推薦

hadoop map個數控制

hadooop提供了一個設定map個數的引數mapred.map.tasks,我們可以通過這個引數來控制map的個數。但是通過這種方式設定map的個數,並不是每次都有效的。原因是mapred.map.tasks只是一個hadoop的參考數值,最終map的個數,還取決於其

hadoop控制map個數(轉)

設置 mapred log AI 不能 map 整體 details net 原文鏈接:https://blog.csdn.net/lylcore/article/details/9136555 hadooop提供了一個設置map個數的參數mapred.map.ta

大資料07-Hadoop框架下MapReduce中的map個數如何控制

一個job的map階段並行度由客戶端在提交job時決定 客戶端對map階段並行度的規劃基本邏輯為: 一、將待處理的檔案進行邏輯切片(根據處理資料檔案的大小,劃分多個split),然後每一個split分配一個maptask並行處理例項 二、具體切片規劃是由FileInputFormat實現類的ge

hadoopmap函式<key,value>的來源Inputformat

剛接觸mapreduce的程式設計時很是疑惑,map的<key,value>源源不斷的到底是從哪裡產生的,學習後才知道一切都源自main函式中的Inputformat函式,這個函式的目的就是將源資料切片,並將切片轉變為<key,value>對,源源不斷的供給給map,具體是Inputf

大數據調錯系列hadoop在開發工具控制臺上打印不出日誌的解決方法

ase 解決 sys ali out 視頻資料 .sh initial clip (1)在windows環境上配置HADOOP_HOME環境變量 (2)在eclipse上運行程序 (3)註意:如果eclipse打印不出日誌,在控制臺上只顯示 1.log4j:WARN No

OpenLayers官方示例詳解九鷹眼控制元件(Overview Map Control)

  一、示例簡介     這個示例演示了OpenLayers中鷹眼控制元件(ol.control.OverviewMap)的使用。 二、程式碼詳解 <!DOCTYPE html> <html lang="en"> <h

hadoop筆記切片大小控制

       HDFS的block是邏輯上的資料塊.Hadoop2.0中每一塊預設大小128MB,實際儲存過程中block大小小於等128MB,它是以檔案為儲存物件.如一200MB大小檔案,分兩個資料

全文索引-lucene,solr,nutch,hadoopnutch與hadoop

aof java get 查詢 自己 結構 目的 strong 之間 全文索引-lucene。solr。nutch,hadoop之lucene 全文索引-lucene。solr,nutch,hadoop之solr 我在去年的時候,就想把lucene,sol

python map/reduce

keyword 運算 論文 說明 htm 實現 而且 下一個 html Python內建了map()和reduce()函數。 如果你讀過Google的那篇大名鼎鼎的論文“MapReduce: Simplified Data Processing on Large Clust

python基礎map/reduce/filter/sorted

排序。 strong func iterable 例子 決定 tools sort .com ---map(fun,iterable)   首先來看一看map()函數,map函數接受兩個參數,第一個參數是函數的名稱,第二個參數一個可叠代對象。即map(fun,iterabl

HadoopWordCount詳解

ride 開始 zookeepe ati 程序 form 數組 -c 狀態 花了好長時間查找資料理解、學習、總結 這應該是一篇比較全面的MapReduce之WordCount文章了 耐心看下去 1,創建本地文件 在hadoop-2.6.0文件夾下創建一個文件夾data,在其

HadoopCombiners編程

cer 大量 使用 ges 一個 分享 類型 log .com 每一個map可能會產生大量的輸出,combiner的作用就是在map端對輸出先做一次合並,以減少傳輸到reducer的數據量。 combiner最基本是實現本地key的歸並,c

Java基礎Map的遍歷

print try main map.entry void clas 推薦 highlight col 遍歷Map集合,有四種方法: public static void main(String[] args) { Map<String, String&g

HadoopHDFS文件操作

文件操作命令 help 文件夾 利用 jpg 查看 作文 rgs fill 摘要:Hadoop之HDFS文件操作常有兩種方式。命令行方式和JavaAPI方式。本文介紹怎樣利用這兩種方式對HDFS文件進行操作。 關鍵詞:HDFS文件 命令行

Zookeeper 學習筆記 節點個數

容災 2個 工作 不必要 ade 為什麽 per 正常 lead zookeeper的節點配置的個數推薦是奇數個這是為什麽呢? 選舉機制 兩種情況無法選出leader: 整個集群只有2臺服務器(註意不是只剩2臺,而是集群的總節點數為2) 整個集群超過半數機器掛掉。

STLmap

pla 所有 air namespace iter mar 相同 main bsp 度熊所居住的 D 國,是一個完全尊重人權的國度。以至於這個國家的所有人命名自己的名字都非常奇怪。一個人的名字由若幹個字符組成,同樣的,這些字符的全排列的結果中的每一個字符

1.5編程基礎循環控制_29:數字反轉

noip c++ 信息學奧賽總時間限制: 1000ms 內存限制: 65536kB描述給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零(參見樣例2)。輸入輸入共 1 行,一個整數N。-1,000,000,000

2.淺析HadoopYARN

返回 ica 組件 任務管理 管理者 節點 container 狀態 nod YARN也是主從架構,主節點是ResourceManager,從節點是NodeManager,是一種資源分配及任務管理的組件 針對每個任務還有ApplicationMaster應用管理者和Cont

hadoop HDFS-Hadoop存檔

文件的 指定 文件創建 ruby 所有 元數據 不能 選項 輸入 每個文件按塊方式存儲, 每個塊的元數據存儲在namenode的內存中 Hadoop存檔文件或HAR文件是一個更高效的文件存檔工具,它將文件存入HDFS塊,在減少內存使用的同時,允許對文件進行透明地訪問 Ha

一臉懵逼學習hadoopHDFS的java客戶端編寫

txt 維護 刪除文件 trac 實例 for nod delete reat 1:eclipse創建一個項目,然後導入對應的jar包: 鼠標右擊項目,點擊properties或者alt+enter快捷鍵--->java build path--->libra