日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MapTask并行度决定机制、FileInputFormat切片机制、map并行度的经验之谈、ReduceTask并行度的决定、MAPREDUCE程序运行演示(来自学笔记)

發布時間:2024/9/27 编程问答 51 豆豆

1.3 MapTask并行度決定機制

maptask的并行度決定map階段的任務處理并發度,進而影響到整個job的處理速度

那么,mapTask并行實例是否越多越好呢?其并行度又是如何決定呢?

?

1.3.1mapTask并行度的決定機制

一個job的map階段并行度由客戶端在提交job時決定

而客戶端對map階段并行度的規劃的基本邏輯為:

將待處理數據執行邏輯切片(即按照一個特定切片大小,將待處理數據劃分成邏輯上的多個split),然后每一個split分配一個mapTask并行實例處理

?

這段邏輯及形成的切片規劃描述文件,FileInputFormat實現類的getSplits()方法完成,其過程如下圖:



1.3.2 FileInputFormat切片機制

1、切片定義在InputFormat類中的getSplit()方法

2、FileInputFormat中默認的切片機制:

a)????????簡單地按照文件的內容長度進行切片

b)????????切片大小,默認等于block大小

c)????????切片時不考慮數據集整體,而是逐個針對每一個文件單獨切片

比如待處理數據有兩個文件:

file1.txt??? 320M

file2.txt? ??10M

?

經過FileInputFormat的切片機制運算后,形成的切片信息如下:?

file1.txt.split1--? 0~128

file1.txt.split2--? 128~256

file1.txt.split3--? 256~320

file2.txt.split1--? 0~10M

?

3、FileInputFormat中切片的大小的參數配置

通過分析源碼,在FileInputFormat中,計算切片大小的邏輯:

Math.max(minSize,Math.min(maxSize, blockSize));? 切片主要由這幾個值來運算決定

minsize:默認值:1?

? ???? 配置參數: mapreduce.input.fileinputformat.split.minsize???

maxsize:默認值:Long.MAXValue?

?? ?配置參數:mapreduce.input.fileinputformat.split.maxsize

blocksize

因此,默認情況下,切片大小=blocksize

maxsize(切片最大值):

參數如果調得比blocksize小,則會讓切片變小,而且就等于配置的這個參數的值

minsize (切片最小值):

參數調的比blockSize大,則可以讓切片變得比blocksize還大

?

但是,不論怎么調參數,都不能讓多個小文件“劃入”一個split

?

選擇并發數的影響因素:

1、運算節點的硬件配置

2、運算任務的類型:CPU密集型還是IO密集型

3、運算任務的數據量

1.4map并行度的經驗之談

如果硬件配置為2*12core + 64G,恰當的map并行度是大約每個節點20-100個map,最好每個map的執行時間至少一分鐘。

l? 如果job的每個map或者 reduce task的運行時間都只有30-40秒鐘,那么就減少該job的map或者reduce數,每一個task(map|reduce)的setup和加入到調度器中進行調度,這個中間的過程可能都要花費幾秒鐘,所以如果每個task都非常快就跑完了,就會在task的開始和結束的時候浪費太多的時間。

配置task的JVM重用[dht1]?可以改善該問題:

mapred.job.reuse.jvm.num.tasks默認是1,表示一個JVM上最多可以順序執行的task

數目(屬于同一個Job)是1。也就是說一個task啟一個JVM

?

l? 如果input的文件非常的大,比如1TB,可以考慮將hdfs上的每個block size設大,比如設成256MB或者512MB

?

?

?

1.5 ReduceTask并行度的決定

reducetask的并行度同樣影響整個job的執行并發度和執行效率,但與maptask的并發數由切片數決定不同,Reducetask數量的決定是可以直接手動設置:

?

//默認值是1,手動設置為4

job.setNumReduceTasks(4);

?

如果數據分布不均勻,就有可能在reduce階段產生數據傾斜

注意: reducetask數量并不是任意設置,還要考慮業務邏輯需求,有些情況下,需要計算全局匯總結果,就只能有1reducetask

?

盡量不要運行太多的reduce task。對大多數job來說,最好rduce的個數最多和集群中的reduce持平,或者比集群的reduce slots小。這個對于小集群而言,尤其重要。

?

?

1.6 MAPREDUCE程序運行演示

Hadoop的發布包中內置了一個hadoop-mapreduce-example-2.4.1.jar,這個jar包中有各種MR示例程序,可以通過以下步驟運行:

啟動hdfs,yarn

然后在集群中的任意一臺服務器上啟動執行程序(比如運行wordcount):

hadoop jarhadoop-mapreduce-example-2.4.1.jar wordcount?/wordcount/data /wordcount/out

?


JVM重用技術不是指同一Job的兩個或兩個以上的task可以同時運行于同一JVM上,而是排隊按順序執行。

總結

以上是生活随笔為你收集整理的MapTask并行度决定机制、FileInputFormat切片机制、map并行度的经验之谈、ReduceTask并行度的决定、MAPREDUCE程序运行演示(来自学笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。