新聞中心
本節(jié)和大家一起學(xué)習(xí)一下Hadoop的相關(guān)知識(shí),主要包括Hadoop概念介紹和Hadoop執(zhí)行路徑兩部分內(nèi)容,歡迎大家一起來(lái)學(xué)習(xí)Hadoop。下面是具體介紹。

Hadoop簡(jiǎn)介
一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。
簡(jiǎn)單地說(shuō)來(lái),Hadoop是一個(gè)可以更容易開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(HadoopDistributedFileSystem),簡(jiǎn)稱HDFS。HDFS有著高容錯(cuò)性(fault-tolerent)的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(highthroughput)來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(largedataset)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(wèn)(streamingaccess)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop執(zhí)行路徑。
通常我們?cè)谧约壕帉懙腏ob代碼中會(huì)調(diào)用JobClient.runJob(job)方法來(lái)啟動(dòng)任務(wù)的真正執(zhí)行,我們的介紹就從這個(gè)命令開始(在調(diào)用這個(gè)api之前,我們已經(jīng)設(shè)計(jì)并且在程序中指定好自己的mapper函數(shù)和reducer函數(shù)了)
1,JobClient.runJob(job)靜態(tài)方法會(huì)實(shí)例化一個(gè)JobClient實(shí)例,然后用該實(shí)例的submitJob(job)方法向master提交作業(yè),此方法返回一個(gè)RunningJob對(duì)象,用來(lái)跟蹤作業(yè)的狀態(tài),作業(yè)提交完畢,JobClient會(huì)輪訓(xùn)作業(yè)的進(jìn)度
2,submitJob內(nèi)部是通過(guò)JobSubmitter的submitJobInternal(job)完成實(shí)質(zhì)性的作業(yè)提交。submitJobInternal會(huì)先向haodoop文件系統(tǒng)上傳3個(gè)文件:job.jar,job.split,job.xml這三個(gè)文件位置由mapreduce系統(tǒng)路徑mapred.system.dir屬性決定,寫完這三個(gè)文件之后,此方法使用RPC調(diào)用master節(jié)點(diǎn)的JobTracker.submitJob(job)方法。
3,JobTracker收到JobClient提交的作業(yè)后,即在JobTracker.submitJob()方法中,首先生成一個(gè)JobInProgress對(duì)象,此對(duì)象代表一個(gè)作業(yè),它的作用是維護(hù)這道作業(yè)的所有信息,包括作業(yè)剖析JobProfile和JobStatus,并登記所有Task進(jìn)任務(wù)表中。隨后JobTracker會(huì)將此JobInProgress對(duì)象通過(guò)listener.jobAdd(job)方法加入作業(yè)調(diào)度隊(duì)列,并用一個(gè)成員Jobs來(lái)表示所有的作業(yè)
4,Hadoop默認(rèn)的調(diào)度器是FIFO的JobQueueTaskScheduler。它有2個(gè)成員變量JobQueueJobInProgressListener和eagerTaskInitializationListener。后者負(fù)責(zé)任務(wù)初始化。作法為:listerner初始化時(shí),開啟JobInitThread線程,當(dāng)作業(yè)通過(guò)JobAdd(job)加入初始化隊(duì)列jobInitQueue時(shí),根據(jù)作業(yè)優(yōu)先級(jí)排序,之后該線程調(diào)用JobInProgress的initTasks()來(lái)初始化所有的任務(wù)。
5,initTasks()過(guò)程比較復(fù)雜,在這里面會(huì)根據(jù)原先對(duì)輸入任務(wù)的分解,來(lái)創(chuàng)建對(duì)應(yīng)數(shù)目的Map執(zhí)行管理對(duì)象TaskInProgress。
之后即是TaskTracker請(qǐng)求任務(wù)的過(guò)程,請(qǐng)看下節(jié)Hadoop介紹。
【編輯推薦】
- 學(xué)習(xí)筆記 Hadoop組成詳解
- Hadoop開源已經(jīng)實(shí)現(xiàn)
- Hadoop集群與Hadoop性能優(yōu)化
- Hadoop 從Yahoo向Google的技術(shù)轉(zhuǎn)折
- Yahoo公布Hadoop的源代碼
網(wǎng)站標(biāo)題:Hadoop執(zhí)行路徑深入剖析
轉(zhuǎn)載來(lái)于:http://m.fisionsoft.com.cn/article/cohogcg.html


咨詢
建站咨詢
