這篇為學(xué)習(xí)hadoop的筆記,書籍來自《Hadoop構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)實(shí)戰(zhàn)》
hadoop簡(jiǎn)介
??hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),目前已經(jīng)構(gòu)成一個(gè)大數(shù)據(jù)生態(tài)幻工』兑荆基于hadoop,可以組建單臺(tái)到多臺(tái)服務(wù)器的集群热押,來提供大數(shù)據(jù)存儲(chǔ)和計(jì)算方案。
簡(jiǎn)單需求
??假設(shè)我們目前有一個(gè)1g的文件需要存儲(chǔ),使用傳統(tǒng)的文件系統(tǒng)存儲(chǔ)的話趁仙,就需要1g的存儲(chǔ)空間,需要考慮到文件數(shù)據(jù)丟失垦页,我們需要進(jìn)行數(shù)據(jù)的備份雀费,這時(shí)我們搭建一個(gè)集群,使得集群內(nèi)的機(jī)器都會(huì)存儲(chǔ)同樣的文件痊焊。但是實(shí)際上我們不需要每一臺(tái)機(jī)器都存儲(chǔ)文件盏袄,我們只需要整個(gè)集群中每個(gè)文件都存有3個(gè)備份就行。
??hadoop的hdfs文件系統(tǒng)可以提供相應(yīng)的解決方案薄啥。hdfs的存儲(chǔ)原理為:假設(shè)我們有一個(gè)1g的文件辕羽,我們?cè)O(shè)定總共存儲(chǔ)3個(gè)副本,假如集群總共有10臺(tái)機(jī)器垄惧,那個(gè)只有3臺(tái)機(jī)器是存儲(chǔ)有這個(gè)文件的刁愿,假如中途存儲(chǔ)這個(gè)文件的1臺(tái)機(jī)器掛掉,hdfs的策略會(huì)復(fù)制這個(gè)文件到另一臺(tái)機(jī)器上到逊,保證整個(gè)集群中肯定有3臺(tái)機(jī)器存儲(chǔ)有這個(gè)文件铣口。
??這樣,既不需要所有機(jī)器都存儲(chǔ)文件的副本觉壶,又能夠保證文件不會(huì)丟失脑题。
??由此引出hadoop的一些優(yōu)點(diǎn):高容錯(cuò)性使得數(shù)據(jù)能夠保持穩(wěn)定,高擴(kuò)展性使得集群能夠更加強(qiáng)大铜靶,分布式運(yùn)算提高運(yùn)算性能叔遂。
hadoop 構(gòu)成
Hadoop包括以下四個(gè)基本模塊:
Hadoop基礎(chǔ)功能庫(kù):支持其他Hadoop模塊的通用程序包。
HDFS:一個(gè)分布式文件系統(tǒng)争剿,能夠以高吞吐量訪問應(yīng)用的數(shù)據(jù)已艰。
YARN:一個(gè)作業(yè)調(diào)度和資源管理框架。
MapReduce:一個(gè)基于YARN的大數(shù)據(jù)并行處理程序蚕苇。
基于hadoop架構(gòu)的相關(guān)存儲(chǔ)旗芬,計(jì)算組件有:hbase, hive,spark,flink等。
hadoop 架構(gòu)
??hadoop的集群分為主從模式捆蜀,主節(jié)點(diǎn)有一個(gè)Job Tracker和NameNode進(jìn)程疮丛,從節(jié)點(diǎn)會(huì)有Task Tracker和Data Node進(jìn)程幔嫂。NameNode負(fù)責(zé)保存文件系統(tǒng)的索引,DataNode負(fù)責(zé)數(shù)據(jù)存儲(chǔ)和操作誊薄,Job Tracker負(fù)責(zé)作業(yè)間的節(jié)點(diǎn)調(diào)度履恩,Task Tracker負(fù)責(zé)具體節(jié)點(diǎn)的任務(wù)計(jì)算。
HDFS模塊
??HDFS是一個(gè)運(yùn)行在通用硬件設(shè)備之上的分布式文件系統(tǒng)呢蔫。HDFS是高度容錯(cuò)的切心,在廉價(jià)的硬件上部署。HDFS提供以高吞吐量訪問應(yīng)用數(shù)據(jù)的能力片吊,非常適合擁有大數(shù)據(jù)集的應(yīng)用绽昏。
??HDFS命名空間的元數(shù)據(jù)由NameNode進(jìn)程負(fù)責(zé)存儲(chǔ),元數(shù)據(jù)保存有相應(yīng)的文件的所在節(jié)點(diǎn)的索引俏脊,備份數(shù)量等全谤。文件的打開,關(guān)閉爷贫,重命名操作通過NameNode來執(zhí)行认然。NameNode通過一個(gè)叫做FsImage的文件存儲(chǔ)所有整個(gè)hdfs文件的命名空間,包括數(shù)據(jù)塊和文件映射關(guān)系漫萄,文件屬性等卷员。運(yùn)行NameNode的節(jié)點(diǎn)是HDFS的主節(jié)點(diǎn)。
??數(shù)據(jù)的實(shí)際存儲(chǔ)由DataNode進(jìn)程負(fù)責(zé)腾务,運(yùn)行DataNode的節(jié)點(diǎn)成為從節(jié)點(diǎn)毕骡,又叫工作節(jié)點(diǎn),依照NameNode的指令執(zhí)行數(shù)據(jù)塊的創(chuàng)建岩瘦,刪除挺峡,復(fù)制操作。
?? 數(shù)據(jù)存儲(chǔ)過程:HDFS會(huì)把文件分解成多個(gè)數(shù)據(jù)塊担钮,每個(gè)數(shù)據(jù)塊存儲(chǔ)在不同的工作節(jié)點(diǎn)中,然后每個(gè)數(shù)據(jù)塊會(huì)有多個(gè)備份,這個(gè)備份由復(fù)制因子指定尤仍。NameNode會(huì)周期性的檢測(cè)DataNode的心跳箫津,來檢驗(yàn)DataNode是否正常工作,如果不正常宰啦,則會(huì)根據(jù)元數(shù)據(jù)信息苏遥。把該DataNode都是數(shù)據(jù)塊復(fù)制到其他可用工作節(jié)點(diǎn),后面如果重新恢復(fù)了工作節(jié)點(diǎn)的心跳赡模,而該工作節(jié)點(diǎn)的數(shù)據(jù)正常的話田炭,會(huì)刪除多余的數(shù)據(jù)來保證數(shù)據(jù)備份都是固定的。這種機(jī)制使得文件系統(tǒng)能夠穩(wěn)定健壯漓柑。