1. 程式人生 > >MapReduce中job引數及設定map和reduce的個數

MapReduce中job引數及設定map和reduce的個數

map的個數
在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;
}
14371142.07932


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);
 }



相關推薦

MapReducejob引數設定mapreduce個數

map的個數 在map階段讀取資料前,FileInputFormat會將輸入檔案分割成split。split的個數決定了 map的個數。 影響map個數,即split個數的因素主要有: 1)HDF

Hadoop MapReduce Job效能調優——MapReduce個數

 map task的數量即mapred.map.tasks的引數值,使用者不能直接設定這個引數。Input Split的大小,決定了一個Job擁有多少個map。預設input split的大小是64M(與dfs.block.size的預設值相同)。然而,如果輸入的資料量

mapreducemapreduce個數

case when 生成 task 輸入 slots align reducer 進行 很多 一、 控制hive任務中的map數: 1. 通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的文件總個數,input的

Hadoop MapReduce Job效能調優——修改MapReduce個數

MapReduce框架將檔案分為多個splits,併為每個splits建立一個Mapper,所以Mappers的個數直接由splits的數目決定。而Reducers的數目可以通過job.setNumReduceTasks()函式設定,預設情況只有一個Reducer。在真正的叢集環境下,如果預設,那麼所有的中

hadoop每個節點mapreduce個數設定調優

hadoop中每個節點map和reduce個數的設定調優 2012-02-21 14:40:32|  分類:舉報|字號訂閱 map red.tasktracker.map.tasks.maximum 這個是一個task tracker中可同時執行的map的最大個數,預設值

MapReduce個數設定問題

看了Hadoop的API和官方文件,加上自己原創,大致分析如下: map和reduce是hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就

Hive設定mapreduce個數

一、控制hive任務中的map數: 通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的檔案總個數,input的檔案大小,叢集設定的檔案塊大小(目前為128M, 可在hive中通過set dfs.block

MapReduce 個數設定 (Hive優化)經典

1.    通常情況下,作業會通過input的目錄產生一個或者多個map任務。 主要的決定因素有: input的檔案總個數,input的檔案大小,叢集設定的檔案塊大小(目前為128M, 可在hive中通過set dfs.block.size;命令檢視到,該引數不能自定義修改);2.    舉例: a)   

mapreducemapreduce的最大併發數量設定

     reduce數量究竟多少是適合的。目前測試認為reduce數量約等於cluster中datanode的總cores的一半比較合適,比如cluster中有32臺datanode,每臺8 core,那麼reduce設定為128速度最快。因為每臺機器8 core,4個作m

hadoopmapreduce的數量設定問題

map和reduce是hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就沒有並行執行,但是map和reduce的數量也不能過多,數量過多雖然

HADOOP mapreduce的並行度設定的問題

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

hadoopmapreduce的數量設定

map和reduce是Hadoop的核心功能,hadoop正是通過多個map和reduce的並行執行來實現任務的分散式平行計算,從這個觀點來看,如果將map和reduce的數量設定為1,那麼使用者的任務就沒有並行執行,但是map和reduce的數量也不能過多,數量過多雖然

Pythonmapreduce函數

courier ref tail erl position 必須 第一個 http title ①從參數方面來講: map()函數: map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參

YarnMapReduce的優化

科技;大數據;yarn通過Hive執行的批次任務處理失敗,Spark中報的錯誤日誌如下: [plain] view plain copyERROR : Failed to monitor Job[ 3] with exception ‘java.lang.IllegalStateException(RPC c

python3map()reduce()函數的使用

ada lam map函數 fun name 元組 clas nor 列操作 問題一:利用map()函數,把用戶輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入:[‘adam‘, ‘LISA‘, ‘barT‘],輸出:[‘Adam‘, ‘Lisa‘, ‘Ba

PythonMap Reduce

imp func turn 學習 for 就是 函數 依次 每一個 03 Map map()傳入的第一個參數是f,map將f依次作用到序列的每個元素,並把結

QuartzJob相關類的理解使用

原連結地址: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執行MapReduce數量

目錄 Map Map map任務的個數 map任務的個數是在Map階段中InputSplit決定的,InputSplit將作業的Input目錄下的檔案切片,每個片大小預設是等於block塊大小的。所以不同的m