成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

專(zhuān)家剖析 Hadoop源代碼中的Task類(lèi)用法

開(kāi)發(fā) 架構(gòu) Hadoop
Hadoop源代碼相信大家應(yīng)該有所了解,這里就向大家介紹一下Hadoop源代碼中的類(lèi)Task,歡迎大家一起來(lái)學(xué)習(xí),相信通過(guò)本文的介紹大家對(duì)Hadoop源代碼中的類(lèi)有一定的了解。

本節(jié)和大家一起學(xué)習(xí)一下Hadoop源代碼中的Task類(lèi),Task是一個(gè)虛基類(lèi),它有兩個(gè)子類(lèi):MapTask,ReduceTask,分別對(duì)應(yīng)著Map和Reduce。下面就來(lái)看一下本節(jié)的具體介紹吧。

Hadoop源代碼中的類(lèi)Task

Task是一個(gè)虛基類(lèi),它有兩個(gè)子類(lèi):MapTask,ReduceTask,分別對(duì)應(yīng)著Map和Reduce。先從成員變量開(kāi)始:

首先是和作業(yè)任務(wù)相關(guān)的信息,包括jobFile,作業(yè)的配置文件;taskId,任務(wù)ID,從中可以獲取作業(yè)ID;partition,Job內(nèi)ID;taskStatus,任務(wù)狀態(tài)。jobCleanup,jobSetup和taskCleanup是三個(gè)標(biāo)志位。

接下來(lái)是一組和錯(cuò)誤回復(fù)的變量。我們知道,如果在Task執(zhí)行過(guò)程中出錯(cuò),很有可能是因?yàn)檩斎胗袉?wèn)題,一個(gè)常用的策略是在下一次回復(fù)性執(zhí)行過(guò)程中,忽略這部分輸入,skipRanges,skipping和writeSkipRecs就是用來(lái)控制這個(gè)行為的。
currentRecStartIndex和currentRecIndexIterator配合,可以得到當(dāng)前的任務(wù)輸入。
conf保存了當(dāng)前任務(wù)的配置(JobConf形式),MapOutputFile上一部分已經(jīng)介紹了,用于管理臨時(shí)文件,跟它配合的是lDirAlloc,類(lèi)型為L(zhǎng)ocalDirAllocator,是本地文件分配器。jobContext和taskContext保持了Job和Task的上下文。committer定制了和Task生命周期相關(guān)的一些特殊處理(也可以看出是上下文)。

最后一部分應(yīng)該是輸出outputFormat。
和統(tǒng)計(jì)/狀態(tài)監(jiān)視的成員變量分散在類(lèi)的各處,如spilledRecordsCounter,taskProgress,counters等,我們就不再介紹了。


下面我們開(kāi)始來(lái)進(jìn)行分析一下Hadoop源代碼中類(lèi)Task的成員函數(shù),首先是虛方法,Task包含了下面3個(gè)虛方法:
publicabstractvoidrun(JobConfjob,TaskUmbilicalProtocolumbilical)
throwsIOException,ClassNotFoundException,InterruptedException;

執(zhí)行Task;
publicabstractTaskRunnercreateRunner(TaskTrackertracker,TaskTracker.TaskInProgresstip)throwsIOException;

創(chuàng)建一個(gè)TaskRunner;
publicabstractbooleanisMapTask();
是否是一個(gè)Map任務(wù)。上面這3個(gè)方法自然是和MapTask,ReduceTask相關(guān),也需要它們實(shí)現(xiàn)。
Hadoop源代碼中的構(gòu)造函數(shù)很簡(jiǎn)單,主要是初始化一些成員函數(shù)。initialize也用于初始化成員,它被Task的子類(lèi)調(diào)用,用于子類(lèi)傳入一些子類(lèi)中構(gòu)造的對(duì)象。構(gòu)造函數(shù)后面是一系列的setter和getter,還有實(shí)現(xiàn)Writable的write和readFields。
localizeConfiguration函數(shù)用于將一些和Task相關(guān)的信息存放到JobConf里,這也是HadoopMapReduce中重要的參數(shù)傳遞方式。
接下來(lái)分析的是一系列和Task生命周期相關(guān)的函數(shù)。


publicvoiddone(TaskUmbilicalProtocolumbilical,TaskReporterreporter)
done被多個(gè)方法調(diào)用(下圖),用于做結(jié)束任務(wù)的一些清理工作,步驟如下:
l更新計(jì)數(shù)器updateCounters();
l如果任務(wù)需要提交,設(shè)置Taks狀態(tài)為COMMIT_PENDING,并利用TaskUmbilicalProtocol,匯報(bào)Task完成,等待提交;然后調(diào)用commit提交任務(wù)(下面分析)
l設(shè)置任務(wù)結(jié)束標(biāo)志位;結(jié)束Reporter通信線(xiàn)程;
l發(fā)送最后一次統(tǒng)計(jì)報(bào)告(通過(guò)sendLastUpdate方法,很簡(jiǎn)單);
l利用TaskUmbilicalProtocol報(bào)告結(jié)束狀態(tài)(通過(guò)sendDone方法,很簡(jiǎn)單)。


commit方法被done方法調(diào)用,用于等待TaskTracker的可提交信號(hào)。通過(guò)這種機(jī)制,Task可以等待TaskTracker上需要的一些后續(xù)處理,比方說(shuō),把Task的結(jié)果取走,需要TaskTracker的協(xié)調(diào)和確認(rèn)。commit還會(huì)調(diào)用org.apache.hadoop.mapreduce.OutputCommitter的commitTask方法,執(zhí)行一些子類(lèi)需要的commit事件處理。
runJobCleanupTask,runJobSetupTask和runTaskCleanupTask應(yīng)用在Maptask和ReduceTask的run方法中,用于做一些準(zhǔn)備和可能的清除任務(wù)。
runJobSetupTask:為建立Job做準(zhǔn)備,執(zhí)行狀態(tài)設(shè)置,然后調(diào)用org.apache.hadoop.mapreduce.OutputCommitter的setupJob,最后通過(guò)done,通知TaskTracker任務(wù)完成。
runJobCleanupTask:清理Job,包括步驟狀態(tài)設(shè)置,更新?tīng)顟B(tài)到TaskTracker,調(diào)用org.apache.hadoop.mapreduce.OutputCommitter的相關(guān)方法,通過(guò)done,通知TaskTracker任務(wù)完成。
runTaskCleanupTask:清理Task任務(wù),和runJobCleanupTask類(lèi)似。
應(yīng)該說(shuō),這些方法只是提供了一個(gè)通用的框架,具體需要的執(zhí)行,在于org.apache.hadoop.mapreduce.OutputCommitter的具體實(shí)現(xiàn)。本節(jié)關(guān)于Hadoop源代碼中的類(lèi)Task相關(guān)內(nèi)容介紹完畢。

【編輯推薦】

  1. 學(xué)習(xí)筆記 Hadoop集群如何搭建
  2. Hadoop0.20.2集群配置入門(mén)指導(dǎo)手冊(cè)
  3. Hadoop文件系統(tǒng)如何快速安裝?
  4. Hadoop集群搭建過(guò)程中相關(guān)環(huán)境配置詳解
  5. Hadoop完全分布模式安裝實(shí)現(xiàn)詳解

 

責(zé)任編輯:佚名 來(lái)源: javaeye.com
相關(guān)推薦

2010-06-07 11:12:52

Hadoop-0.20

2010-03-12 14:28:45

Python if語(yǔ)句

2010-03-16 14:48:02

云計(jì)算

2010-02-05 18:00:18

Android源代碼

2009-06-12 19:03:41

Hadoop源代碼Yahoo

2010-06-03 18:32:51

Hadoop

2010-02-26 10:24:43

Python源代碼

2011-08-01 16:42:24

ibmdwNFS文件系統(tǒng)

2010-06-02 10:26:06

SVN源代碼管理

2010-09-17 09:28:19

Java API

2023-07-13 09:28:29

設(shè)計(jì)模式.NET

2010-01-11 16:59:50

C++源代碼

2009-02-25 14:08:45

綠色I(xiàn)T虛擬環(huán)境虛擬化

2010-08-16 13:03:37

IP路由選擇

2015-03-24 15:08:21

mapreducehadoop

2010-06-03 10:22:17

Hadoop入門(mén)

2010-09-02 15:54:54

CSS邊界疊加

2010-08-24 16:17:27

CSS簡(jiǎn)寫(xiě)

2010-06-03 13:08:51

2010-02-04 13:45:36

C++類(lèi)模板
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 视频羞羞| 欧美性高潮 | 亚洲欧美国产一区二区三区 | 国产一区二区三区视频 | 亚洲精品日韩精品 | 中文字幕乱码视频32 | 中文字幕免费观看 | 午夜看看 | 国产精品视频免费看 | 一本色道久久综合亚洲精品高清 | 色资源av| 蜜桃av鲁一鲁一鲁一鲁 | 欧美高清视频在线观看 | 欧美成人免费在线 | 国产午夜精品一区二区三区嫩草 | 黄色男女网站 | 狠狠操狠狠操 | 亚洲一区二区视频 | 久久久久久高潮国产精品视 | 亚洲一区中文 | 男人天堂网址 | 亚洲 欧美 另类 综合 偷拍 | 综合网在线 | 久久精品视频亚洲 | 一级做a爰片性色毛片 | 久草久草久草 | 国产综合网址 | 日韩精品成人 | 免费成人高清在线视频 | 欧美成年黄网站色视频 | 国产ts人妖系列高潮 | 久久网国产| 免费一区二区三区 | 91精品国产欧美一区二区 | 99久久精品免费看国产高清 | 最新伦理片 | 亚洲精品视频在线观看免费 | 日韩中文字幕 | 久久黄色精品视频 | 在线免费观看毛片 | 黄色免费在线观看 |