mapreduce的資料流
1)問題引入
maptask的並行度決定map階段的任務處理併發度,進而影響到整個job的處理速度。
思考:1g的資料,啟動8個maptask,可以提高集群的併發處理能力。那麼1k的資料,也啟動8個maptask,會提高集群效能嗎?maptask並行任務是否越多越好呢?哪些因素影響了maptask並行度?
2)maptask並行度決定機制
資料塊:block是hdfs物理上把資料分成一塊一塊,資料塊是hdfs儲存資料單位.
資料切片:資料切片只是在邏輯上對輸入進行分片,並不會在磁碟上將其切分成片進行儲存.資料切片是mapreduce程式計算輸入資料的單位,乙個切片會對應啟動乙個maptask
1)乙個job的map階段並行度由客戶端在提交job時的切片數決定
2)每乙個split切片分配乙個maptask並行例項處理
3)預設情況下,切片大小=blocksize
4)切片時不考慮資料集整體,而是逐個針對每乙個檔案單獨切片
waitforcompletion()
submit()
;// 1建立連線
connect()
;// 1)建立提交job的**
newcluster
(getconfiguration()
);// (1)判斷是本地執行環境還是yarn集群執行環境
initialize
(jobtrackaddr, conf)
;// 2 提交job
submitter.
submitjobinternal
(job.
this
, cluster)
// 1)建立給集群提交資料的stag路徑
path jobstagingarea = jobsubmissionfiles.
getstagingdir
(cluster, conf)
;// 2)獲取jobid ,並建立job路徑
jobid jobid = submitclient.
getnewjobid()
;// 3)拷貝jar包到集群
copyandconfigurefiles
(job, submitjobdir)
; ruploader.
uploadfiles
(job, jobsubmitdir)
;// 4)計算切片,生成切片規劃檔案
writesplits
(job, submitjobdir)
; maps =
writenewsplits
(job, jobsubmitdir)
; input.
getsplits
(job)
;// 5)向stag路徑寫xml配置檔案
writeconf
(conf, submitjobfile)
; conf.
writexml
(out)
;// 6)提交job,返回提交狀態
1.切片機制(1)簡單的按照檔案的內容長度進行切片
(2)切片大小,預設等於block大小
(3)切片時不考慮資料集整體,而是逐個針對每乙個檔案單獨切片
2.案例分析
(1)輸入的資料有兩個檔案:
(2)經過fileinputformat的切片機制運算後,形成的切片資訊如下:
(1)原始碼中計算切片大小的公式
(2)切片大小設定
(3) 獲取切片資訊api
fileinputformat常見的介面實現類包括:textinputformat,keyvaluetextinputformat,nlineinputformat,combinetextinputformat和自定義inputformat等.
textinputformat是預設的fileinputformat實現類,按行讀取每天記錄.鍵是儲存改行在整個檔案中的起始位元組偏移量,longwritable型別.值是這行的內容,不包括任何終止符(換行符和回車符),text型別
hadoop批量計算框架 MapReduce
結合自身的經驗記錄,mapreduce中的一些知識點以及乙個wordcount小實踐 核心思想 分而治之 map程式 需要根據自己的需求開發 shuffle 緩衝區大小設定 core site.xml設定為100m io.file.buffer.size 100000000 以位元組為單位 hdfs...
Hadoop的分布式計算 MapReduce
什麼是mapreduce?你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。mapreduce方法則是 1.給在座的所有玩家中分配這摞牌 2.讓每個玩家數自己手中的牌有幾張是黑桃,然後把這個數目匯報給你 3.你把所有玩家告訴你的數字加起來,得到最後的結論 1 mapredu...
Hadoop基本原理之一 MapReduce
1 為什麼需要hadoop 目前,一塊硬碟容量約為1tb,讀取速度約為100m s,因此完成一塊硬碟的讀取需時約2.5小時 寫入時間更長 若把資料放在同一硬碟上,且全部資料均需要同乙個程式進行處理,此程式的處理時間將主要浪費在i o時間上。在過去幾十年,硬碟的讀取速度並未明顯增長,而網路傳輸速度此飛...