您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Hadoop執行路徑的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Hadoop簡介
一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。
簡單地說來,Hadoop是一個可以更容易開發和運行處理大規模數據的軟件平臺。
Hadoop實現了一個分布式文件系統(HadoopDistributedFileSystem),簡稱HDFS。HDFS有著高容錯性(fault-tolerent)的特點,并且設計用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(highthroughput)來訪問應用程序的數據,適合那些有著超大數據集(largedataset)的應用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(streamingaccess)文件系統中的數據。
Hadoop執行路徑。
通常我們在自己編寫的Job代碼中會調用JobClient.runJob(job)方法來啟動任務的真正執行,我們的介紹就從這個命令開始(在調用這個api之前,我們已經設計并且在程序中指定好自己的mapper函數和reducer函數了)
1,JobClient.runJob(job)靜態方法會實例化一個JobClient實例,然后用該實例的submitJob(job)方法向master提交作業,此方法返回一個RunningJob對象,用來跟蹤作業的狀態,作業提交完畢,JobClient會輪訓作業的進度
2,submitJob內部是通過JobSubmitter的submitJobInternal(job)完成實質性的作業提交。submitJobInternal會先向haodoop文件系統上傳3個文件:job.jar,job.split,job.xml這三個文件位置由mapreduce系統路徑mapred.system.dir屬性決定,寫完這三個文件之后,此方法使用RPC調用master節點的JobTracker.submitJob(job)方法。
3,JobTracker收到JobClient提交的作業后,即在JobTracker.submitJob()方法中,首先生成一個JobInProgress對象,此對象代表一個作業,它的作用是維護這道作業的所有信息,包括作業剖析JobProfile和JobStatus,并登記所有Task進任務表中。隨后JobTracker會將此JobInProgress對象通過listener.jobAdd(job)方法加入作業調度隊列,并用一個成員Jobs來表示所有的作業
4,Hadoop默認的調度器是FIFO的JobQueueTaskScheduler。它有2個成員變量JobQueueJobInProgressListener和eagerTaskInitializationListener。后者負責任務初始化。作法為:listerner初始化時,開啟JobInitThread線程,當作業通過JobAdd(job)加入初始化隊列jobInitQueue時,根據作業優先級排序,之后該線程調用JobInProgress的initTasks()來初始化所有的任務。
5,initTasks()過程比較復雜,在這里面會根據原先對輸入任務的分解,來創建對應數目的Map執行管理對象TaskInProgress。
感謝各位的閱讀!關于“Hadoop執行路徑的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。