MapReduce中job引數及設定map和reduce的個數
在map階段讀取資料前,FileInputFormat會將輸入檔案分割成split。split的個數決定了
map的個數。
影響map個數,即split個數的因素主要有:
1)HDFS塊的大小,即HDFS中dfs.block.size的值。如果有一個輸入檔案為1024m,當塊為
256m時,會被劃分為4個split;當塊為128m時,會被劃分為8個split。
2)檔案的大小。當塊為128m時,如果輸入檔案為128m,會被劃分為1個split;當塊為256m,
會被劃分為2個split。
3)檔案的個數。FileInputFormat按照檔案分割split,並且只會分割大檔案,即那些大小超過
HDFS塊的大小的檔案。如果HDFS中dfs.block.size設定為64m,而輸入的目錄中檔案有100個,則
劃分後的split個數至少為100個。
4)splitsize的大小。分片是按照splitszie的大小進行分割的,一個split的大小在沒有設定的情況下,
預設等於hdfs block的大小。但應用程式可以通過兩個引數來對splitsize進行調節。
map個數的計算公式如下:
1,splitsize=max(minimumsize,min(maximumsize,blocksize))。
如果沒有設定minimumsize和maximumsize,splitsize的大小預設等於blocksize
2,計算公式
計算過程可以簡化為如下的公式,詳細演算法可以參照FileInputSplit類中的getSplits方法
total_split ;
for(file :輸入目錄中的每個檔案)
{
file_split = 1;
if(file.size>splitsize)
{
file_split=file_size/splitsize;
}
total_split+=file_split;
}
Reduce個數
public static void main(String[] args) throws Exception, IOException, InterruptedException { Configuration conf = new Configuration(); Job job = Job.getInstance(conf); FileSystem fs=FileSystem.get(conf); job.setJarByClass(FlowBeanRunner.class); job.setMapperClass(FlowBeanMapper.class); job.setReducerClass(FlowBeanReduce.class); job.setOutputKeyClass(FlowBean.class); job.setOutputValueClass(Text.class); //指定自定義的partitioner類,替換掉框架預設的HashPartitioner job.setPartitionerClass(ProvincePartitioner.class); //指定reduce task數量,跟ProvincePartitioner的分割槽數匹配 job.setNumReduceTasks(6); //Reduce的個數在這裡設定 //要處理的資料所在的path //指定資料夾即可,該資料夾下的所有檔案都會被處理 FileInputFormat.setInputPaths(job, new Path("/phone/logs")); Path destPath= new Path("/phone/cleanlogs"); if(fs.exists(destPath)){ fs.delete(destPath, true); } //處理完得到的結果輸出的path FileOutputFormat.setOutputPath(job, destPath);//提交本次作業 job.waitForCompletion(true); }
相關推薦
MapReduce中job引數及設定map和reduce的個數
map的個數 在map階段讀取資料前,FileInputFormat會將輸入檔案分割成split。split的個數決定了 map的個數。 影響map個數,即split個數的因素主要有: 1)HDF
Hadoop MapReduce Job效能調優——Map和Reduce個數
map task的數量即mapred.map.tasks的引數值,使用者不能直接設定這個引數。Input Split的大小,決定了一個Job擁有多少個map。預設input split的大小是64M(與dfs.block.size的預設值相同)。然而,如果輸入的資料量
mapreduce中map和reduce個數
case when 生成 task 輸入 slots align reducer 進行 很多 一、 控制hive任務中的map數: 1. 通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的文件總個數,input的
Hadoop MapReduce Job效能調優——修改Map和Reduce個數
MapReduce框架將檔案分為多個splits,併為每個splits建立一個Mapper,所以Mappers的個數直接由splits的數目決定。而Reducers的數目可以通過job.setNumReduceTasks()函式設定,預設情況只有一個Reducer。在真正的叢集環境下,如果預設,那麼所有的中
hadoop中每個節點map和reduce個數的設定調優
hadoop中每個節點map和reduce個數的設定調優 2012-02-21 14:40:32| 分類:舉報|字號訂閱 map red.tasktracker.map.tasks.maximum 這個是一個task tracker中可同時執行的map的最大個數,預設值
Map和Reduce個數設定問題
看了Hadoop的API和官方文件,加上自己原創,大致分析如下: map和reduce是hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就
Hive設定map和reduce的個數
一、控制hive任務中的map數: 通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的檔案總個數,input的檔案大小,叢集設定的檔案塊大小(目前為128M, 可在hive中通過set dfs.block
Map和Reduce 個數的設定 (Hive優化)經典
1. 通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的檔案總個數,input的檔案大小,叢集設定的檔案塊大小(目前為128M, 可在hive中通過set dfs.block.size;命令檢視到,該引數不能自定義修改);2. 舉例: a)
mapreduce中map和reduce的最大併發數量設定
reduce數量究竟多少是適合的。目前測試認為reduce數量約等於cluster中datanode的總cores的一半比較合適,比如cluster中有32臺datanode,每臺8 core,那麼reduce設定為128速度最快。因為每臺機器8 core,4個作m
hadoop中map和reduce的數量設定問題
map和reduce是hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就沒有並行執行,但是map和reduce的數量也不能過多,數量過多雖然
HADOOP 中map和reduce的並行度設定的問題
1.3 MapTask並行度決定機制 maptask的並行度決定map階段的任務處理併發度,進而影響到整個job的處理速度 那麼,mapTask並行例項是否越多越好呢?其並行度又是如何決定呢? 1.3.1 mapTask並行度的決定機制 一個job的map階段並行度由客戶
JM、H.264中一些引數的設定和含義
一·引數說明 這一節闡述的是encoder.cfg 中的引數對編碼過程的影響 要注意的是encoder.cfg 中的引數跟input 結構體中的變數是一一對應的 StartFrame:從視訊流的第幾幀開始編碼 FramesToBeEncoded:指明瞭除去 B幀後將要被編碼的幀數 inp
hadoop中map和reduce的數量設定
map和reduce是Hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就沒有並行執行,但是map和reduce的數量也不能過多,數量過多雖然
Python中map和reduce函數
courier ref tail erl position 必須 第一個 http title ①從參數方面來講: map()函數: map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參
Yarn中的Map和Reduce的優化
科技;大數據;yarn通過Hive執行的批次任務處理失敗,Spark中報的錯誤日誌如下: [plain] view plain copyERROR : Failed to monitor Job[ 3] with exception ‘java.lang.IllegalStateException(RPC c
python3中map()和reduce()函數的使用
ada lam map函數 fun name 元組 clas nor 列操作 問題一:利用map()函數,把用戶輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入:[‘adam‘, ‘LISA‘, ‘barT‘],輸出:[‘Adam‘, ‘Lisa‘, ‘Ba
Python中的 Map 和 Reduce
imp func turn 學習 for 就是 函數 依次 每一個 03 Map map()傳入的第一個參數是f,map將f依次作用到序列的每個元素,並把結
Quartz中Job相關類的理解和使用
原連結地址:https://www.jianshu.com/p/de06cf3c946b (一)、Job Job可以理解為就是一個工作任務,程式碼中就是一個實現了org.quartz.Job或org.quartz.StatefulJob介面的java類。當Scheduler決定執行Job
【8】caffe的python介面學習:caffemodel中的引數及特徵的抽取
如果用公式 y=f(wx+b) 來表示整個運算過程的話,那麼w和b就是我們需要訓練的東西,w稱為權值,在cnn中也可以叫做卷積核(filter),b是偏置項。f是啟用函式,有sigmoid、relu等。x就是輸入的資料。 資料訓練完成後,儲存的caffemodel裡面,
如何控制Hive執行中的Map和Reduce數量
目錄 Map Map map任務的個數 map任務的個數是在Map階段中InputSplit決定的,InputSplit將作業的Input目錄下的檔案切片,每個片大小預設是等於block塊大小的。所以不同的m