Hadoop基礎(chǔ)

Hadoop基礎(chǔ)

? ? ? ? ? Hadoop是一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),是Appach的一個(gè)用java語言實(shí)現(xiàn)開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算。

Hadoop框架中最核心設(shè)計(jì)就是:HDFS和MapReduce.HDFS提供了海量數(shù)據(jù)的存儲(chǔ),MapReduce提供了對(duì)數(shù)據(jù)的計(jì)算。

HDFS:Hadoop Distributed File System,Hadoop的分布式文件系統(tǒng)。大文件被分成默認(rèn)64M一塊的數(shù)據(jù)塊分布存儲(chǔ)在集群機(jī)器中。

MapReduce:Hadoop為每一個(gè)input split創(chuàng)建一個(gè)task調(diào)用Map計(jì)算,在此task中依次處理此split中的一個(gè)個(gè)記錄(record),map會(huì)將結(jié)果以key--value的形式輸出,hadoop負(fù)責(zé)按key值將map的輸出整理后作為Reduce的輸入,Reduce Task的輸出為整個(gè)job的輸出,保存在HDFS上.

Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker組成.

NameNode中記錄了文件是如何被拆分成block以及這些block都存儲(chǔ)到了那些DateNode節(jié)點(diǎn).

NameNode同時(shí)保存了文件系統(tǒng)運(yùn)行的狀態(tài)信息.

DataNode中存儲(chǔ)的是被拆分的blocks.

Secondary NameNode幫助NameNode收集文件系統(tǒng)運(yùn)行的狀態(tài)信息.

JobTracker當(dāng)有任務(wù)提交到Hadoop集群的時(shí)候負(fù)責(zé)Job的運(yùn)行,負(fù)責(zé)調(diào)度多個(gè)TaskTracker.

TaskTracker負(fù)責(zé)某一個(gè)map或者reduce任務(wù).

HDFS

HDFS 采用Master/Slave的架構(gòu)來存儲(chǔ)數(shù)據(jù),這種架構(gòu)主要由四個(gè)部分組成,分別為HDFS Client、NameNode、DataNode和Secondary NameNode。

Client:即客戶端。

1、文件切分。文件上傳 HDFS 的時(shí)候,Client 將文件切分成 一個(gè)一個(gè)的Block,然后進(jìn)行存儲(chǔ)。

2、與 NameNode 交互,獲取文件的位置信息。

3、與 DataNode 交互,讀取或者寫入數(shù)據(jù)。

4、Client 提供一些命令來管理 HDFS,比如啟動(dòng)或者關(guān)閉HDFS。

5、Client 可以通過一些命令來訪問 HDFS。

NameNode:就是 master,它是一個(gè)主管、管理者。

1、管理 HDFS 的名稱空間。

2、管理數(shù)據(jù)塊(Block)映射信息

3、配置副本策略

4、處理客戶端讀寫請(qǐng)求。

DataNode:就是Slave。NameNode 下達(dá)命令,DataNode 執(zhí)行實(shí)際的操作。

1、存儲(chǔ)實(shí)際的數(shù)據(jù)塊。

2、執(zhí)行數(shù)據(jù)塊的讀/寫操作。

Secondary NameNode:并非 NameNode 的熱備。當(dāng)NameNode 掛掉的時(shí)候,它并不能馬上替換 NameNode 并提供服務(wù)。

1、輔助 NameNode,分擔(dān)其工作量。

2、定期合并 fsimage和fsedits,并推送給NameNode。

3、在緊急情況下,可輔助恢復(fù) NameNode。

MapReduce作業(yè)運(yùn)行流程

流程示意圖:



1. 作業(yè)運(yùn)行過程:首先向JobTracker請(qǐng)求一個(gè)新的作業(yè)ID;然后檢查輸出說明(如輸出目錄已存在)、輸出劃分(如輸入路徑不存在);JobTracker配置好所有需要的資源,然后把作業(yè)放入到一個(gè)內(nèi)部的隊(duì)列中,并對(duì)其進(jìn)行初始化,初始化包括創(chuàng)建一個(gè)代表該正在運(yùn)行的作業(yè)對(duì)象(封裝任務(wù)和記錄信息),以便跟蹤任務(wù)的狀態(tài)和進(jìn)程;作業(yè)調(diào)度器獲取分片信息,每個(gè)分片創(chuàng)建一個(gè)map任務(wù)。TaskTracker會(huì)執(zhí)行一個(gè)簡單的循環(huán)定期發(fā)送heartbeat給JobTracker,心跳間隔可自由設(shè)置,通過心跳JobTracker可以監(jiān)控TaskTracker是否存活,同時(shí)也能獲得TaskTracker處理的狀態(tài)和問題,同時(shí)也能計(jì)算出整個(gè)Job的狀態(tài)和進(jìn)度。當(dāng)JobTracker獲得了最后一個(gè)完成指定任務(wù)的TaskTracker操作成功的通知時(shí)候,JobTracker會(huì)把整個(gè)Job狀態(tài)置為成功,然后當(dāng)客戶端查詢Job運(yùn)行狀態(tài)時(shí)候(注意:這個(gè)是異步操作),客戶端會(huì)查到Job完成的通知的。


2. 邏輯角度分析作業(yè)運(yùn)行順序:輸入分片(input split)、map階段、combiner階段、shuffle階段、reduce階段。

input split:在map計(jì)算之前,程序會(huì)根據(jù)輸入文件計(jì)算split,每個(gè)input split針對(duì)一個(gè)map任務(wù)。input split存儲(chǔ)的并非是數(shù)據(jù)本身,而是一個(gè)分片長度和一個(gè)記錄數(shù)據(jù)的位置的數(shù)組。

map階段:即執(zhí)行map函數(shù)。

combiner階段:這是一個(gè)可選擇的函數(shù),實(shí)質(zhì)上是一種reduce操作。combiner是map的后續(xù)操作,主要是在map計(jì)算出中間文件前做一個(gè)簡單的合并重復(fù)key值的操作。

shuffle階段:指從map輸出開始,包括系統(tǒng)執(zhí)行排序即傳送map輸出到reduce作為輸入的過程。另外針對(duì)map輸出的key進(jìn)行排序又叫sort階段。map端shuffle,簡單來說就是利用combiner對(duì)數(shù)據(jù)進(jìn)行預(yù)排序,利用內(nèi)存緩沖區(qū)來完成。reduce端的shuffle包括復(fù)制數(shù)據(jù)和歸并數(shù)據(jù),最終產(chǎn)生一個(gè)reduce輸入文件。shuffle過程有許多可調(diào)優(yōu)的參數(shù)來提高M(jìn)apReduce的性能,其總原則就是給shuffle過程盡量多的內(nèi)存空間。

reduce階段:即執(zhí)行reduce函數(shù)并存到hdfs文件系統(tǒng)中。

3. 作業(yè)調(diào)度器:目前hadoop的作業(yè)調(diào)度器主要有三種:

先進(jìn)先出調(diào)度器:優(yōu)點(diǎn),算法簡單,JobTracker工作負(fù)擔(dān)輕;缺點(diǎn)忽略不同作業(yè)的需求差異。

容量調(diào)度器

公平調(diào)度器

MapReduce容錯(cuò)

hadoop的好處之一就是能處理輸入進(jìn)程崩潰、機(jī)器故障、代碼錯(cuò)誤等問題并能成功運(yùn)行完成任務(wù)。

參考資料:http://note.youdao.com/share/?id=f8ba788138259ea5d048a9317f91e032&type=note#/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先,我們?cè)谑褂们跋瓤纯碒DFS是什麼?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,472評(píng)論 0 2
  • 1.job的本質(zhì)是什么? 2.任務(wù)的本質(zhì)是什么? 3.文件系統(tǒng)的Namespace由誰來管理,Namespace的...
    云中撈月閱讀 1,635評(píng)論 0 3
  • MapReduce框架結(jié)構(gòu)## MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)處理的分布式計(jì)算模型MapReduce模型主...
    Bloo_m閱讀 3,955評(píng)論 0 4
  • 目的這篇教程從用戶的角度出發(fā),全面地介紹了Hadoop Map/Reduce框架的各個(gè)方面。先決條件請(qǐng)先確認(rèn)Had...
    SeanC52111閱讀 1,841評(píng)論 0 1
  • 人,善良很重要,人生,選擇很重要。
    琬在琬里閱讀 564評(píng)論 0 1

友情鏈接更多精彩內(nèi)容