Hadoop3-MapReduce1.x-框架

Hadoop-MapReduce1.x-框架

1.主要成員

1)Client

?用戶編寫的MapReduce程序通過Client提交到JobTracker端;同時(shí),用戶可通過Client提供的一些接口查看作業(yè)的運(yùn)行狀態(tài)馋没。在Hadoop內(nèi)部用“作業(yè)”(Job)表示MapReduce程序浊伙。一個(gè)MapReduce程序可對(duì)應(yīng)若干個(gè)作業(yè)淹真,而每個(gè)作業(yè)會(huì)被分解成若干個(gè)Map/Reduce任務(wù)(Task)。

2)JobTracker

?JobTracke負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度肴捉。JobTracker 監(jiān)控所有TaskTracker 與job的健康狀況,一旦發(fā)現(xiàn)失敗叔收,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn)齿穗;同時(shí),JobTracker 會(huì)跟蹤任務(wù)的執(zhí)行進(jìn)度饺律、資源使用量等信息窃页,并將這些信息告訴任務(wù)調(diào)度器,而調(diào)度器會(huì)在資源出現(xiàn)空閑時(shí),選擇合適的任務(wù)使用這些資源脖卖。在Hadoop 中乒省,任務(wù)調(diào)度器是一個(gè)可插拔的模塊,用戶可以根據(jù)自己的需要設(shè)計(jì)相應(yīng)的調(diào)度器畦木。

3)TaskTracker

?TaskTracker 會(huì)周期性地通過Heartbeat 將本節(jié)點(diǎn)上資源的使用情況和任務(wù)的運(yùn)行進(jìn)度匯報(bào)給JobTracker袖扛,同時(shí)接收J(rèn)obTracker 發(fā)送過來的命令并執(zhí)行相應(yīng)的操作(如啟動(dòng)新任務(wù)、殺死任務(wù)等)十籍。TaskTracker 使用“slot”等量劃分本節(jié)點(diǎn)上的資源量蛆封。“slot”代表計(jì)算資源(CPU勾栗、內(nèi)存等)娶吞。一個(gè)Task 獲取到一個(gè)slot 后才有機(jī)會(huì)運(yùn)行,而Hadoop 調(diào)度器的作用就是將各個(gè)TaskTracker 上的空閑slot 分配給Task 使用械姻。slot 分為Map slot 和Reduce slot 兩種妒蛇,分別供MapTask 和Reduce Task 使用。TaskTracker 通過slot 數(shù)目(可配置參數(shù))限定Task 的并發(fā)度楷拳。

4)Task

?Task 分為Map Task 和Reduce Task 兩種绣夺,均由TaskTracker 啟動(dòng)。HDFS 以固定大小的block 為基本單位存儲(chǔ)數(shù)據(jù)欢揖,而對(duì)于MapReduce 而言陶耍,其處理單位是split。split 是一個(gè)邏輯概念她混,它只包含一些元數(shù)據(jù)信息烈钞,比如數(shù)據(jù)起始位置、數(shù)據(jù)長度坤按、數(shù)據(jù)所在節(jié)點(diǎn)等毯欣。它的劃分方法完全由用戶自己決定。但需要注意的是臭脓,split 的多少?zèng)Q定了Map Task 的數(shù)目酗钞,因?yàn)槊總€(gè)split 只會(huì)交給一個(gè)Map Task 處理。

2.主要過程

  1. run job

? 在客戶端来累,用戶編寫Java程序砚作,編寫完成后,打包為jar包嘹锁,然后提交葫录。JobClient的run job()方法是用于新建JobClient實(shí)例,并調(diào)用其submitjob()方法的快捷方式 也可以用 job.waitcomplication()领猾。提交作業(yè)后米同,run job()每秒輪詢作業(yè)的進(jìn)度骇扇,如果發(fā)現(xiàn)自上次報(bào)告后有改變,便把進(jìn)度打印到控制臺(tái)窍霞,作業(yè)完成后匠题,如果成功,就顯示作業(yè)計(jì)數(shù)器但金,如果失敗韭山,導(dǎo)致錯(cuò)誤的原因打印到控制臺(tái)。

  1. get new job id

? -->向jobTracker請(qǐng)求一個(gè)job id (JobTracker.getNewJobId());

? -->檢查作業(yè)的輸出說明冷溃,如果輸出目錄已經(jīng)存在或者沒有指定輸出目錄钱磅,則拋出異常給客戶端,

? -->檢查作業(yè)的輸入切片似枕,如果輸入分片不能計(jì)算如沒有指定輸入目錄盖淡,如拋出異常給客戶端。

  1. copy job resources

? 將運(yùn)行作業(yè)所需要的資源包括

? -->打包好的jar包(運(yùn)行程序)

? -->配置文件(xml)

? -->計(jì)算所得的輸入分片

? 復(fù)制到一job id 命名的目錄下jobtracker的文件系統(tǒng)中凿歼,作業(yè)jar的副本較多(由mapred.submin.replication)控制默認(rèn)為10

? 因此在運(yùn)行作業(yè)的時(shí)候褪迟,集群中有許多tasktracker訪問

  1. summit job

? 通知JobTracker 作業(yè)準(zhǔn)備執(zhí)行。(通過調(diào)用jobtracker的submitjob()方法實(shí)現(xiàn))

  1. initlialize job (初始化)

? 當(dāng)JobTracker接收到對(duì)其submitjob()方法的調(diào)用后答憔,會(huì)把此調(diào)用放入一個(gè)內(nèi)部隊(duì)列中味赃,交由作業(yè)調(diào)度器(job scheduler)進(jìn)行調(diào)度

? 并對(duì)其進(jìn)行初始化。初始化包括創(chuàng)建一個(gè)表示正在運(yùn)行的作業(yè)對(duì)象--封裝任務(wù)和記錄信息虐拓,以便跟蹤任務(wù)的狀態(tài)和進(jìn)程心俗。

  1. retrieve input splits (檢索 恢復(fù))

? --> 為了創(chuàng)建任務(wù)運(yùn)行列表,作業(yè)調(diào)度器首先從共享文件系統(tǒng)中獲取JobClient以計(jì)算好的輸入分片信息蓉驹,然后為每個(gè)分片分配一個(gè) map 任 務(wù)

? --> 創(chuàng)建的reduce任務(wù)數(shù)量有job的mapred.reduce.task屬性決定(setNumReduceTask()設(shè)置)城榛,scheduler創(chuàng)建相應(yīng)數(shù)量的r educe任 務(wù),任務(wù)在此時(shí)被分配ID

? --> 除了map任務(wù)和reduce任務(wù)态兴,還有setupJob,cleanupJob需要建立狠持,有tasktracker在所有map開始前和所有reduce結(jié)束后分別 執(zhí)行,這兩個(gè)方法在OutPutCommitter中(默認(rèn)是FileOutputCommiter),setupjob()創(chuàng)建輸出目錄和任務(wù)的臨時(shí)工作目錄诗茎, cleanupjob刪除臨時(shí)工作目錄

  1. heartbeat(returns task)

? -->TaskTracker運(yùn)行一個(gè)簡單的循環(huán)來定期發(fā)送心跳給JobTasker."心跳"告知JobTracker,tasktacker是否還存活工坊,同時(shí)也充當(dāng)著兩 者 之間的消息通道,作為心跳的一部分敢订,tasktracker 還會(huì)指明他自己是否準(zhǔn)備好運(yùn)行下一次任務(wù),如果是罢吃,jobtracker會(huì)為他分 配一 個(gè)新的任務(wù)楚午,并通過心跳的返回值與tasktracker進(jìn)行通信

? -->每個(gè)tasktracker會(huì)有固定的map和reduce任務(wù)槽,數(shù)量由tasktracker核的數(shù)量和內(nèi)存的大小來決定尿招,jobtracker會(huì)先將 tasktracker的所有map槽填滿矾柜,然后再填reduce槽

? -->jobtracker分配map任務(wù)時(shí)阱驾,會(huì)選取與輸入分片最近的tasktracker,分配reduce任務(wù)用不著考慮數(shù)據(jù)本地化怪蔑。

  1. retrieve job resources

? -->通過從共享文件系統(tǒng)把作業(yè)的JAR文件復(fù)制到tasktracker所在的文件系統(tǒng)里覆,從而實(shí)現(xiàn)作業(yè)的jar文件本地化,同時(shí) tasktracker將 應(yīng)用程序所需要的全部文件從分布式緩存復(fù)制到本地磁盤缆瓣。

? -->tasktracker為任務(wù)新建一個(gè)本地工作目錄喧枷,并把jar文件中的內(nèi)容解壓到這個(gè)文件夾下

  1. launch(發(fā)起)

? Tasktracker新建一個(gè)TaskRunner實(shí)例來運(yùn)行該任務(wù)

  1. run

? TaskRunner啟動(dòng)一個(gè)新的JVM來運(yùn)行每個(gè)任務(wù),以便客戶的map/reduce不會(huì)影響到tasktracker

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弓坞,一起剝皮案震驚了整個(gè)濱河市隧甚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渡冻,老刑警劉巖戚扳,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異族吻,居然都是意外死亡棕叫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門檐迟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來单料,“玉大人,你說我怎么就攤上這事握础》” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵禀综,是天一觀的道長简烘。 經(jīng)常有香客問我,道長定枷,這世上最難降的妖魔是什么孤澎? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮欠窒,結(jié)果婚禮上覆旭,老公的妹妹穿的比我還像新娘。我一直安慰自己岖妄,他們只是感情好型将,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荐虐,像睡著了一般七兜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上福扬,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天腕铸,我揣著相機(jī)與錄音惜犀,去河邊找鬼。 笑死狠裹,一個(gè)胖子當(dāng)著我的面吹牛虽界,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涛菠,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼莉御,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碗暗?” 一聲冷哼從身側(cè)響起颈将,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎言疗,沒想到半個(gè)月后晴圾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡噪奄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年死姚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勤篮。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡都毒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碰缔,到底是詐尸還是另有隱情账劲,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布金抡,位于F島的核電站瀑焦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梗肝。R本人自食惡果不足惜榛瓮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巫击。 院中可真熱鬧禀晓,春花似錦、人聲如沸坝锰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顷级。三九已至崎淳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愕把,已是汗流浹背拣凹。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恨豁,地道東北人嚣镜。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像橘蜜,于是被迫代替她去往敵國和親菊匿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容