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

專家剖析 Hadoop源代碼中的Task類用法

開發 架構 Hadoop
Hadoop源代碼相信大家應該有所了解,這里就向大家介紹一下Hadoop源代碼中的類Task,歡迎大家一起來學習,相信通過本文的介紹大家對Hadoop源代碼中的類有一定的了解。

本節和大家一起學習一下Hadoop源代碼中的Task類,Task是一個虛基類,它有兩個子類:MapTask,ReduceTask,分別對應著Map和Reduce。下面就來看一下本節的具體介紹吧。

Hadoop源代碼中的類Task

Task是一個虛基類,它有兩個子類:MapTask,ReduceTask,分別對應著Map和Reduce。先從成員變量開始:

首先是和作業任務相關的信息,包括jobFile,作業的配置文件;taskId,任務ID,從中可以獲取作業ID;partition,Job內ID;taskStatus,任務狀態。jobCleanup,jobSetup和taskCleanup是三個標志位。

接下來是一組和錯誤回復的變量。我們知道,如果在Task執行過程中出錯,很有可能是因為輸入有問題,一個常用的策略是在下一次回復性執行過程中,忽略這部分輸入,skipRanges,skipping和writeSkipRecs就是用來控制這個行為的。
currentRecStartIndex和currentRecIndexIterator配合,可以得到當前的任務輸入。
conf保存了當前任務的配置(JobConf形式),MapOutputFile上一部分已經介紹了,用于管理臨時文件,跟它配合的是lDirAlloc,類型為LocalDirAllocator,是本地文件分配器。jobContext和taskContext保持了Job和Task的上下文。committer定制了和Task生命周期相關的一些特殊處理(也可以看出是上下文)。

最后一部分應該是輸出outputFormat。
和統計/狀態監視的成員變量分散在類的各處,如spilledRecordsCounter,taskProgress,counters等,我們就不再介紹了。


下面我們開始來進行分析一下Hadoop源代碼中類Task的成員函數,首先是虛方法,Task包含了下面3個虛方法:
publicabstractvoidrun(JobConfjob,TaskUmbilicalProtocolumbilical)
throwsIOException,ClassNotFoundException,InterruptedException;

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

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


publicvoiddone(TaskUmbilicalProtocolumbilical,TaskReporterreporter)
done被多個方法調用(下圖),用于做結束任務的一些清理工作,步驟如下:
l更新計數器updateCounters();
l如果任務需要提交,設置Taks狀態為COMMIT_PENDING,并利用TaskUmbilicalProtocol,匯報Task完成,等待提交;然后調用commit提交任務(下面分析)
l設置任務結束標志位;結束Reporter通信線程;
l發送最后一次統計報告(通過sendLastUpdate方法,很簡單);
l利用TaskUmbilicalProtocol報告結束狀態(通過sendDone方法,很簡單)。


commit方法被done方法調用,用于等待TaskTracker的可提交信號。通過這種機制,Task可以等待TaskTracker上需要的一些后續處理,比方說,把Task的結果取走,需要TaskTracker的協調和確認。commit還會調用org.apache.hadoop.mapreduce.OutputCommitter的commitTask方法,執行一些子類需要的commit事件處理。
runJobCleanupTask,runJobSetupTask和runTaskCleanupTask應用在Maptask和ReduceTask的run方法中,用于做一些準備和可能的清除任務。
runJobSetupTask:為建立Job做準備,執行狀態設置,然后調用org.apache.hadoop.mapreduce.OutputCommitter的setupJob,最后通過done,通知TaskTracker任務完成。
runJobCleanupTask:清理Job,包括步驟狀態設置,更新狀態到TaskTracker,調用org.apache.hadoop.mapreduce.OutputCommitter的相關方法,通過done,通知TaskTracker任務完成。
runTaskCleanupTask:清理Task任務,和runJobCleanupTask類似。
應該說,這些方法只是提供了一個通用的框架,具體需要的執行,在于org.apache.hadoop.mapreduce.OutputCommitter的具體實現。本節關于Hadoop源代碼中的類Task相關內容介紹完畢。

【編輯推薦】

  1. 學習筆記 Hadoop集群如何搭建
  2. Hadoop0.20.2集群配置入門指導手冊
  3. Hadoop文件系統如何快速安裝?
  4. Hadoop集群搭建過程中相關環境配置詳解
  5. Hadoop完全分布模式安裝實現詳解

 

責任編輯:佚名 來源: javaeye.com
相關推薦

2010-06-07 11:12:52

Hadoop-0.20

2010-03-12 14:28:45

Python if語句

2010-03-16 14:48:02

云計算

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文件系統

2010-06-02 10:26:06

SVN源代碼管理

2010-09-17 09:28:19

Java API

2023-07-13 09:28:29

設計模式.NET

2010-01-11 16:59:50

C++源代碼

2009-02-25 14:08:45

綠色IT虛擬環境虛擬化

2010-08-16 13:03:37

IP路由選擇

2015-03-24 15:08:21

mapreducehadoop

2010-06-03 10:22:17

Hadoop入門

2010-09-02 15:54:54

CSS邊界疊加

2010-08-24 16:17:27

CSS簡寫

2010-06-03 13:08:51

2010-02-04 13:45:36

C++類模板
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久88av | 亚洲永久入口 | 亚洲精品久久久久久久久久久久久 | 美女爽到呻吟久久久久 | 成人免费小视频 | 日韩中文字幕视频 | 男女视频在线观看 | 久久久免费少妇高潮毛片 | 亚洲精品久久久久久一区二区 | 国产h视频| 欧美日韩在线免费观看 | 久草综合在线视频 | 欧洲精品码一区二区三区免费看 | 国内精品视频在线观看 | 超碰97人人人人人蜜桃 | 精品国产一区三区 | 久久国产一区二区三区 | 日韩在线观看一区 | 91在线免费观看 | 色香婷婷 | 久久精品亚洲 | 999在线精品| 中文字幕亚洲区一区二 | 亚洲一区二区免费看 | 日本一二三区电影 | 男女羞羞的网站 | 日韩一级精品视频在线观看 | 国产污视频在线 | 女同av亚洲女人天堂 | 成人国产一区二区三区精品麻豆 | 日韩成人高清 | 美女国内精品自产拍在线播放 | 亚洲视频在线看 | 在线观看免费福利 | 成人在线精品视频 | 欧美一级免费看 | 国产一级免费视频 | 免费国产一区 | 日韩精品视频一区二区三区 | 精品一区二区三区在线观看国产 | 中文字幕一区二区三区在线观看 |