Hadoop學(xué)習(xí)

Hadoop是什么

開(kāi)源分布式計(jì)算框架,用于存儲(chǔ)和處理大規(guī)模數(shù)據(jù)集

Hadoop優(yōu)勢(shì)

1)高可靠:通過(guò)多副本存儲(chǔ)確保數(shù)據(jù)安全,某個(gè)節(jié)點(diǎn)出現(xiàn)故障,不會(huì)導(dǎo)致數(shù)據(jù)丟失
2)高擴(kuò)展:可以通過(guò)增加節(jié)點(diǎn)擴(kuò)展存儲(chǔ)和計(jì)算能力
3)高效:并行計(jì)算,加快任務(wù)處理速度
4)高容錯(cuò):能夠自動(dòng)將失敗的任務(wù)重新分配
5)成本低:可在廉價(jià)硬件上運(yùn)行

Hadoop核心組件

HDFS分布式文件系統(tǒng)、MapReduce分布式離線(xiàn)計(jì)算系統(tǒng)、Yarn分布式集群資源管理、Common模塊

HDFS

用于存儲(chǔ)大規(guī)模數(shù)據(jù),將大型數(shù)據(jù)集分成塊存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,每個(gè)數(shù)據(jù)塊會(huì)復(fù)制多份到不同節(jié)點(diǎn)上,提高可靠性。HDFS主要有NameNode和DataNode組成,NameNode主要用于管理HDFS,DataNode主要用于存儲(chǔ)文件,SecondaryNameNode用于輔助NameNode。


HDFS架構(gòu)
NameNode

NN是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的命名空間以及客戶(hù)端對(duì)文件的訪(fǎng)問(wèn),其中存儲(chǔ)了文件的元數(shù)據(jù),所有的文件系統(tǒng)操作(讀、寫(xiě)、刪除)都由NN控制。元數(shù)據(jù)主要由Fsimage和Edits兩個(gè)文件組成。
Fsimage:文件系統(tǒng)元數(shù)據(jù)的一個(gè)完整的永久性檢查點(diǎn),包含文件系統(tǒng)中所有目錄和文件信息,如文件名、文件大小、文件路徑、文件副本數(shù)目、文件與Block的映射關(guān)系,以及Block與DN的映射關(guān)系。可用于快速回復(fù)文件系統(tǒng)狀態(tài)。NN會(huì)定期將Edits文件和Fsimage進(jìn)行合并,生成新的Fsimage
Edits:記錄了文件系統(tǒng)的所有變更操作,例如文件創(chuàng)建、刪除、修改。它是一個(gè)日志文件,記錄了上一次Fsimage生成以來(lái)的所有文件系統(tǒng)變更操作。

NN的容錯(cuò)機(jī)制有兩種:
1)將持久化存儲(chǔ)在本地硬盤(pán)的文件系統(tǒng)元數(shù)據(jù)備份
2)借助SNN(SecondaryNameNode),定期備份NN元數(shù)據(jù),用于恢復(fù)NN

DataNode

用于在本地文件系統(tǒng)存放數(shù)據(jù),向NN報(bào)告存儲(chǔ)信息,定期向NN發(fā)送心跳,確保數(shù)據(jù)塊的完整性和可用性。DN的基本單位是塊(block),默認(rèn)128M。在HDFS上會(huì)保存數(shù)據(jù)的副本,默認(rèn)是3個(gè)

HDFS寫(xiě)流程

HDFS寫(xiě)流程

1)客戶(hù)端通過(guò)DFS模塊向NN請(qǐng)求上傳文件,NN檢查目標(biāo)文件是否已存在,目錄是否存在
2)NN返回是否可以上傳
3)客戶(hù)端請(qǐng)求第一個(gè)Block(包含0-128的數(shù)據(jù)),詢(xún)問(wèn)NN可以上傳到哪幾個(gè)DN節(jié)點(diǎn)上
4)NN返回3個(gè)DN,分別為dn1、dn2、dn3,表示這些節(jié)點(diǎn)可以存儲(chǔ)
5)客戶(hù)端通過(guò)FSDOS模塊請(qǐng)求dn1上傳數(shù)據(jù),dn1收到請(qǐng)求會(huì)繼續(xù)調(diào)用dn2,然后dn2調(diào)用dn3,將這個(gè)通信管道建立完成,dn3、dn2、dn1逐級(jí)應(yīng)答客戶(hù)端
6)客戶(hù)端開(kāi)始往dn1上傳第一個(gè)Block,已Packet為單位,dn1收到一個(gè)Packet會(huì)傳給dn2,db2傳給dn3,dn1每傳一個(gè)Packet會(huì)放入一個(gè)應(yīng)答隊(duì)列等待應(yīng)答
7)當(dāng)一個(gè)Block傳輸完成之后,客戶(hù)端在請(qǐng)求NN上傳第二個(gè)Block,重復(fù)步驟3-6

HDFS讀流程

HDFS讀流程

1)客戶(hù)端通過(guò)DFS模塊向NN請(qǐng)求下載文件,NN通過(guò)查詢(xún)?cè)獢?shù)據(jù),找到文件所在的DN地址
2)挑選最近的DN節(jié)點(diǎn),請(qǐng)求讀取數(shù)據(jù)
3)DN開(kāi)始傳輸數(shù)據(jù)給客戶(hù)端
4)客戶(hù)端接收數(shù)據(jù)寫(xiě)入目標(biāo)文件

MapReduce

MapReduce分布式離線(xiàn)計(jì)算框架,將用戶(hù)編寫(xiě)的業(yè)務(wù)邏輯代碼和自動(dòng)默認(rèn)組件整合成一個(gè)完整的分布式運(yùn)算程序,并發(fā)運(yùn)行在Hadoop集群上。MapReduce計(jì)算=Map階段+Reduce階段

MapReduce執(zhí)行流程

1)輸入分片:輸入數(shù)據(jù)被分割成多個(gè)分片,每個(gè)分片通過(guò)對(duì)應(yīng)一個(gè)Map任務(wù)
2)Map階段:Map任務(wù)讀取輸入分片,轉(zhuǎn)換成鍵值對(duì),用戶(hù)定義的Map函數(shù)處理這些鍵值對(duì),生成中間鍵值對(duì)
3)Shuffle階段:將Map輸出的中間鍵值對(duì)根據(jù)鍵進(jìn)行分區(qū)、排序、合并,然后發(fā)送給相應(yīng)的Reduce任務(wù)
4)Reduce階段:接受經(jīng)過(guò)Shuffle階段后的數(shù)據(jù),經(jīng)過(guò)用戶(hù)定義的Reduce函數(shù)處理,得到最終結(jié)果
5)結(jié)果輸出:Reduce階段輸出的結(jié)果會(huì)被寫(xiě)到HDFS


MapReduce執(zhí)行流程

Yarn

YARN(Yet Another Resource Negotiator)用于集群資源管理和作業(yè)調(diào)度,是 Hadoop 的第二代資源管理器。YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等組件構(gòu)成。
ResourceManager(RM):整個(gè)集群資源(內(nèi)存、CPU等)的管理者
NodeManager(NM):?jiǎn)蝹€(gè)節(jié)點(diǎn)資源的管理者
ApplicationMaster(AM):?jiǎn)蝹€(gè)任務(wù)運(yùn)行的管理者
Container:容器,相當(dāng)于一臺(tái)獨(dú)立的服務(wù)器,里面封裝了任務(wù)運(yùn)行所需要的資源,如內(nèi)存、CPU、磁盤(pán)、網(wǎng)絡(luò)等


Yarn架構(gòu)
Yarn執(zhí)行流程

作業(yè)提交
1.客戶(hù)端向RM提交作業(yè)并申請(qǐng)一個(gè)作業(yè)ID
2.RM向客戶(hù)端返回作業(yè)ID以及作業(yè)資源的提交路徑
3.客戶(hù)端提交jar包、切片信息和配置文件到指定的資源提交路徑
4.資源提交完畢,向RM發(fā)送執(zhí)行作業(yè)請(qǐng)求
作業(yè)初始化
5.RM收到客戶(hù)端的請(qǐng)求后,將該作業(yè)添加到調(diào)度器隊(duì)列中
6.空閑的NM就會(huì)領(lǐng)取到該作業(yè)
7.NM會(huì)創(chuàng)建Container
8.Container會(huì)啟動(dòng)AM,下載作業(yè)資源到本地
任務(wù)分配
9.AM向RM申請(qǐng)運(yùn)行MapTask資源
10.RM將MapTask分配給空閑的NM,NM領(lǐng)取到任務(wù)會(huì)創(chuàng)建Container
任務(wù)運(yùn)行
11.AM向NM發(fā)送運(yùn)行腳本,NM執(zhí)行MapTask
12.AM等所有MapTask運(yùn)行完,向RM申請(qǐng)容器,運(yùn)行ReduceTask
13.ReduceTask獲取MapTask相應(yīng)分區(qū)的數(shù)據(jù)
14.所有任務(wù)完成之后,AM會(huì)向RM申請(qǐng)注銷(xiāo)自己
作業(yè)完成
框架會(huì)更新作業(yè)計(jì)算的進(jìn)度和狀態(tài)

Yarn執(zhí)行流程

參考資料

Hadoop的入門(mén)學(xué)習(xí)(理論知識(shí))
圖解 Hadoop 架構(gòu) |Yarn、MapReduce
大數(shù)據(jù)資源調(diào)度框架--Yarn

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、Hadoop是什么 1)Hadoop是一個(gè)由Apache基金會(huì)所開(kāi)發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu) 分布式系統(tǒng),一份工作...
    一顆西藍(lán)花_閱讀 245評(píng)論 0 0
  • 四、hadoop之HDFS 4.1HDFS的定義 HDFS定義:分布式文件系統(tǒng) HDFS使用場(chǎng)景:一次寫(xiě)入,多次讀...
    不吃海帶吃海苔閱讀 400評(píng)論 0 4
  • HADOOP框架 大數(shù)據(jù)技術(shù)解決的是什么問(wèn)題? 解決海量數(shù)據(jù)的存儲(chǔ)和計(jì)算 Hadoop的廣義和狹義之分 狹義的Ha...
    啦啦啦嘍啰閱讀 672評(píng)論 0 0
  • 一、HDFS Hadoop中的分布式文件系統(tǒng),高容錯(cuò)(數(shù)據(jù)庫(kù)blcok備份),可擴(kuò)展,適合存儲(chǔ)大文件,不適合存儲(chǔ)小...
    Tu_jc閱讀 174評(píng)論 0 0
  • @Hadoop 試題一 單選題 1、Hadoop 的作者(C) A:Martin Fowler #敏捷開(kāi)發(fā)方法論-...
    jiangliu閱讀 4,846評(píng)論 0 0