欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Hadoop源代碼分析(*IDs類和*Context類)

我們開始來分析Hadoop MapReduce的內(nèi)部的運行機制。用戶向Hadoop提交Job(作業(yè)),作業(yè)在JobTracker對象的控制下執(zhí)行。Job被分解成為Task(任務(wù)),分發(fā)到集群中,在TaskTracker的控制下運行。Task包括MapTask和ReduceTask,是MapReduce的Map操作和Reduce操作執(zhí)行的地方。這中任務(wù)分布的方法比較類似于HDFS中NameNode和DataNode的分工,NameNode對應(yīng)的是JobTracker,DataNode對應(yīng)的是TaskTracker。JobTracker,TaskTracker和MapReduce的客戶端通過RPC通信,具體可以參考HDFS部分的分析。
我們先來分析一些輔助類,首先是和ID有關(guān)的類,ID的繼承樹如下:

Hadoop源代碼分析(*IDs類和*Context類) 

這張圖可以看出現(xiàn)在Hadoop的org.apache.hadoop.mapred向org.apache.hadoop.mapreduce遷移帶來的一些問題,其中灰色是標注為@Deprecated的。ID攜帶一個整型,實現(xiàn)了WritableComparable接口,這表明它可以比較,而且可以被Hadoop的io機制串行化/解串行化(必須實現(xiàn)compareTo/readFields/write方法)。JobID是系統(tǒng)分配給作業(yè)的唯一標識符,它的toString結(jié)果是job_<jobtrackerID>_<jobNumber>。例子:job_200707121733_0003表明這是jobtracker200707121733(利用jobtracker的開始時間作為ID)的第3號作業(yè)。
作業(yè)分成任務(wù)執(zhí)行,任務(wù)號TaskID包含了它所屬的作業(yè)ID,同時也有任務(wù)ID,同時還保持了這是否是一個Map任務(wù)(成員變量isMap)。任務(wù)號的字符串表示為task_<jobtrackerID>_<jobNumber>_[m|r]_<taskNumber>,如task_200707121733_0003_m_000005表示作業(yè)200707121733_0003的000005號任務(wù),改任務(wù)是一個Map任務(wù)。
一個任務(wù)有可能有多個執(zhí)行(錯誤恢復(fù)/消除Stragglers等),所以必須區(qū)分任務(wù)的多個執(zhí)行,這是通過類TaskAttemptID來完成,它在任務(wù)號的基礎(chǔ)上添加了嘗試號。一個任務(wù)嘗試號的例子是attempt_200707121733_0003_m_000005_0,它是任務(wù)task_200707121733_0003_m_000005的第0號嘗試。
JVMId用于管理任務(wù)執(zhí)行過程中的Java虛擬機,我們后面再討論。
為了使Job和Task工作,Hadoop提供了一系列的上下文,這些上下文保存了Job和Task工作的信息。

Hadoop源代碼分析(*IDs類和*Context類) 

處于繼承樹的最上方是org.apache.hadoop.mapreduce.JobContext,前面我們已經(jīng)介紹過了,它提供了Job的一些只讀屬性,兩個成員變量,一個保存了JobID,另一個類型為JobConf,JobContext中除了JobID外,其它的信息都保持在JobConf中。它定義了如下配置項:

l          mapreduce.inputformat.class:InputFormat的實現(xiàn)

創(chuàng)新互聯(lián)建站始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達10年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:成都效果圖設(shè)計等企業(yè),備受客戶贊譽。

l          mapreduce.map.class:Mapper的實現(xiàn)

l          mapreduce.combine.class: Reducer的實現(xiàn)

l          mapreduce.reduce.class:Reducer的實現(xiàn)

l          mapreduce.outputformat.class: OutputFormat的實現(xiàn)

l          mapreduce.partitioner.class: Partitioner的實現(xiàn)

同時,它提供方法,使得通過類名,利用Java反射提供的Class.forName方法,獲得類對應(yīng)的Class。org.apache.hadoop.mapred的JobContext對象比org.apache.hadoop.mapreduce.JobContext多了成員變量progress,用于獲取進度信息,它類型為JobConf成員job指向mapreduce.JobContext對應(yīng)的成員,沒有添加任何新功能。
JobConf繼承自Configuration,保持了MapReduce執(zhí)行需要的一些配置信息,它管理著46個配置參數(shù),包括上面mapreduce配置項對應(yīng)的老版本形式,如mapreduce.map.class 對應(yīng)mapred.mapper.class。這些配置項我們在使用到它們的時候再介紹。
org.apache.hadoop.mapreduce.JobContext的子類Job前面也已經(jīng)介紹了,后面在討論系統(tǒng)的動態(tài)行為時,再回來看它。

TaskAttemptContext用于任務(wù)的執(zhí)行,它引入了標識任務(wù)執(zhí)行的TaskAttemptID和任務(wù)狀態(tài)status,并提供新的訪問接口。org.apache.hadoop.mapred的TaskAttemptContext繼承自mapreduce的對應(yīng)版本,只是增加了記錄進度的progress。

更多精彩內(nèi)容請關(guān)注:http://bbs.superwu.cn 

關(guān)注超人學院微信二維碼:Hadoop源代碼分析(*IDs類和*Context類)

網(wǎng)頁名稱:Hadoop源代碼分析(*IDs類和*Context類)
本文地址:http://chinadenli.net/article32/jiggsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄定制開發(fā)網(wǎng)站設(shè)計公司虛擬主機手機網(wǎng)站建設(shè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營