目前為止,我們知(zhi)道了海量數(shu)據(ju)(ju)的(de)(de)存儲是使用(yong)數(shu)據(ju)(ju)倉(cang)庫,而(er)為了保(bao)證數(shu)據(ju)(ju)的(de)(de)質量呢(ni),我們要有元數(shu)據(ju)(ju)管理,還有數(shu)據(ju)(ju)治理。而(er)為了保(bao)證這些數(shu)據(ju)(ju)的(de)(de)性(xing)能、還有使用(yong)的(de)(de)效率(lv)等(deng)等(deng),那(nei)么(me)我們采取的(de)(de)是分(fen)層架(jia)構。
在目(mu)前市(shi)面上(shang)(shang)用的比較廣泛的數據倉庫是(shi)Hive,而Hive又(you)是(shi)依存于Hadoop這樣一個開源的分布(bu)式計算平臺上(shang)(shang)。所以本篇博客我們就來介紹一下Hadoop。
Hadoop概述
1 Hadoop簡介
Hadoop是什(shen)么(me)?簡單來說,Hadoop就是解決(jue)?數據(ju)時代(dai)下海量(liang)數據(ju)的(de)存儲和分析(xi)計算(suan)問題。
Hadoop不(bu)是(shi)指具(ju)體的(de)(de)(de)(de)?個框架或者組件,它是(shi)Apache軟件基?會下?Java語?開(kai)發的(de)(de)(de)(de)?個開(kai)源分布(bu)式(shi)計算(suan)(suan)平臺,實現在?量計算(suan)(suan)機(ji)組成的(de)(de)(de)(de)集群中(zhong)對海量數(shu)據(ju)進?分布(bu)式(shi)計算(suan)(suan),適(shi)合(he)?數(shu)據(ju)的(de)(de)(de)(de)分布(bu)式(shi)存儲和計算(suan)(suan),從?有效彌補了傳統數(shu)據(ju)庫在海量數(shu)據(ju)下的(de)(de)(de)(de)不(bu)?。
2 Hadoop優點
?可靠(kao)性:Hadoop按位存儲和(he)處理(li)數據的能?值(zhi)得?們信(xin)賴(lai)。
?擴(kuo)展性(xing):Hadoop是在(zai)可?的(de)計(ji)算(suan)機集群間(jian)分配數(shu)據并(bing)完成計(ji)算(suan)任(ren)務,這些集群可以(yi)?便地擴(kuo)展到數(shu)以(yi)千計(ji)的(de)節點中。
?效性:Hadoop能夠(gou)在節(jie)點之間動態地移動數據,并保(bao)持各個節(jie)點的動態平(ping)衡,因(yin)此處理(li)速度?常快。
?容錯性(xing):Hadoop能夠?動保存數據的(de)多個(ge)(ge)副(fu)本,并且(qie)能夠?動將失敗的(de)任務重新(xin)分配(比如(ru)一個(ge)(ge)計(ji)算(suan)機出現(xian)故障了,那有其(qi)他副(fu)本的(de)計(ji)算(suan)機會重新(xin)進行(xing)工作,也就是說它這個(ge)(ge)容錯性(xing)是很高的(de)。)。
低成本:Hadoop是(shi)開源的(de),項?的(de)軟件成本因?得(de)以??降低。
3 Hadoop?態圈
我們再來看一(yi)下Hadoop的生(sheng)態圈,它的核心組(zu)件(jian)是(shi)HDFS,還(huan)有(you)MapReduce。那隨(sui)著處理任務(wu)的多(duo)樣性(xing),Hadoop生(sheng)態圈它的組(zu)件(jian)會越來越多(duo)。


3.1 分布式存儲(HDFS)
HDFS就是將?件切分成固定??的(de)數據塊block(?件嚴(yan)格按照字節來切,所(suo)以若是最后切得省?點(dian)(dian)點(dian)(dian),也算單獨?塊,hadoop2.x默(mo)認的(de)固定??是128MB,不同版本,默(mo)認值不同.可(ke)以通過(guo)Client端上傳?件設置)。
它主要是(shi)負責(ze)分(fen)布式存儲(chu)的,它把(ba)一(yi)個(ge)大文件切割成(cheng)(cheng)不同的小塊(kuai),然后存儲(chu)在相(xiang)應的節點上(shang)(shang),也就(jiu)是(shi)計算機上(shang)(shang)。默認情況下呢它是(shi)把(ba)這個(ge)塊(kuai)分(fen)成(cheng)(cheng)一(yi)百二十八兆,當文件大于一(yi)百二十八兆的時候(hou),它就(jiu)會進行切割。
舉個(ge)例子(zi)(zi)(如圖(tu)),假(jia)如我現在(zai)有一個(ge)文件是二(er)百兆,那(nei)它就(jiu)切割了兩塊,分別放在(zai)不同的(de)(de)節(jie)點(dian)上(shang)。并且它對每一塊進行(xing)備(bei)份,默認(ren)情況下是三個(ge)部分(本身加兩個(ge)備(bei)份)。對于(yu)不同的(de)(de)副本,它是存(cun)儲在(zai)不同的(de)(de)節(jie)點(dian)上(shang)的(de)(de),那(nei)下一個(ge)我們可(ke)以這樣算,也達到(dao)了這樣子(zi)(zi)的(de)(de)三塊。

也正(zheng)是因為HDFS的(de)這(zhe)樣一個分布(bu)式存儲,還有(you)(you)多副本的(de)備份(fen),實現了Hadoop的(de)這(zhe)樣一個容錯性(xing),還有(you)(you)就(jiu)是工作(zuo)量的(de)均衡。
那(nei)如果(guo)我們(men)把兩(liang)塊(kuai)都(dou)存在了一(yi)個(ge)節(jie)點(dian)上,那(nei)當對這個(ge)數據進行處(chu)理(li)的(de)時候,我們(men)可以第一(yi)塊(kuai)的(de)計(ji)算那(nei)是在節(jie)點(dian)1,那(nei)對于(yu)第二塊(kuai)的(de)計(ji)算,我們(men)就(jiu)到其他的(de)副(fu)本(ben)節(jie)點(dian)上計(ji)算,讓(rang)工作量保持(chi)均衡。
所(suo)以(yi)分(fen)布式存儲(chu)保證了(le)我們Hadoop系統的這(zhe)樣一個高容特(te)性(xing),還有(you)高效性(xing)。
HDFS 的優點:
分布式存儲
?持分布式(shi)和(he)并?計算
?平可伸縮性
3.2 分布式計算(MapReduce)
MapReduce為海量的數據提供了計算。
MapReduce從它名(ming)字上(shang)來(lai)看就(jiu)(jiu)?致可以看出個(ge)緣由(you),兩(liang)個(ge)動(dong)詞Map和Reduce,“Map(展開(kai))”就(jiu)(jiu)是將?個(ge)任(ren)務(wu)分(fen)解(jie)成為多個(ge)任(ren)務(wu),“Reduce”就(jiu)(jiu)是將分(fen)解(jie)后(hou)多任(ren)務(wu)處理的(de)(de)結果(guo)匯(hui)總(zong)起來(lai),得出最(zui)后(hou)的(de)(de)分(fen)析結果(guo)。MapReduce采(cai)?"分(fen)?治之(zhi)"的(de)(de)思想,簡單地說(shuo),MapReduce就(jiu)(jiu)是"任(ren)務(wu)的(de)(de)分(fen)解(jie)與結果(guo)的(de)(de)匯(hui)總(zong)"。
舉個(ge)例(li)子,當有(you)(you)了對剛(gang)才的(de)二百兆這(zhe)(zhe)個(ge)文件的(de)一個(ge)計(ji)算(suan)的(de)任務(wu)的(de)時候,那MapReduce會(hui)把我們的(de)這(zhe)(zhe)個(ge)任務(wu)分發給(gei)有(you)(you)這(zhe)(zhe)個(ge)塊(kuai)的(de)這(zhe)(zhe)樣一個(ge)節點,節點進行計(ji)算(suan)之后,然后他再整(zheng)合輸出。同理,也是因(yin)為(wei)MapReduce的(de)分布式計(ji)算(suan)保證了Hadoop的(de)高(gao)效性(xing)。
3.3 HBase
對于(yu)數(shu)據(ju)倉庫來說(shuo)(shuo),它(ta)存儲(chu)的多數(shu)是(shi)(shi)歷史數(shu)據(ju),不太(tai)支(zhi)持實時(shi)的這樣(yang)一個交(jiao)互(hu)。但(dan)是(shi)(shi)HBase它(ta)既(ji)存儲(chu)數(shu)據(ju),也能和HDFS進行交(jiao)互(hu),所以HBase存儲(chu)的數(shu)據(ju)是(shi)(shi)可(ke)以支(zhi)持實時(shi)的這樣(yang)一個交(jiao)互(hu)的,也就是(shi)(shi)說(shuo)(shuo)它(ta)可(ke)以用來完(wan)成MySQL、Oracle和SqlServer這樣(yang)業務(wu)型數(shu)據(ju)庫的功能,但(dan)是(shi)(shi)這樣(yang)使用的還是(shi)(shi)比較少的。
所以在業(ye)務系統中,數據需要實時交互的,我們還是采用傳統數據庫比較好(hao)一些。
3.4 Zookeeper
Zookeeper,主(zhu)要是對于我(wo)們的(de)數(shu)據平臺(tai)進行(xing)配置和(he)調度的(de),主(zhu)要是用(yong)(yong)來解決分布式應(ying)用(yong)(yong)中經(jing)常遇到的(de)一些數(shu)據管理問題(ti),例如統一命(ming)名、狀(zhuang)態同步等等。它的(de)目標就是封裝好復雜、易(yi)出錯的(de)相關服(fu)務,將(jiang)簡單、易(yi)用(yong)(yong)的(de)系(xi)統提供給用(yong)(yong)戶。
舉個例子,假設我(wo)們(men)的(de)(de)程(cheng)序是(shi)分(fen)布式部署在(zai)(zai)多(duo)臺(tai)(tai)機器(qi)上的(de)(de),也(ye)就(jiu)(jiu)(jiu)是(shi)我(wo)們(men)每(mei)(mei)一臺(tai)(tai)機器(qi)上都有相應(ying)(ying)的(de)(de)應(ying)(ying)用(yong)程(cheng)序。但(dan)是(shi)我(wo)們(men)現在(zai)(zai)要(yao)(yao)更新,要(yao)(yao)改配置文(wen)件(jian)(jian)(jian),那就(jiu)(jiu)(jiu)需要(yao)(yao)逐臺(tai)(tai)的(de)(de)來進行改變,這(zhe)樣(yang)就(jiu)(jiu)(jiu)比較麻(ma)煩。但(dan)是(shi)現在(zai)(zai)呢我(wo)們(men)把這(zhe)個配置文(wen)件(jian)(jian)(jian)全部放在(zai)(zai)Zookeeper上,存儲(chu)在(zai)(zai)Zookeeper上的(de)(de)某個目錄中(zhong),然后相關的(de)(de)應(ying)(ying)用(yong)程(cheng)序,也(ye)就(jiu)(jiu)(jiu)是(shi)在(zai)(zai)每(mei)(mei)一臺(tai)(tai)機器(qi)上的(de)(de)應(ying)(ying)用(yong)程(cheng)序就(jiu)(jiu)(jiu)會監測(ce)Zookeeper。當Zookeeper上的(de)(de)配置文(wen)件(jian)(jian)(jian)發(fa)生變化了之后,就(jiu)(jiu)(jiu)會自動的(de)(de)進行下載、更新,這(zhe)樣(yang)我(wo)們(men)就(jiu)(jiu)(jiu)避免了每(mei)(mei)一臺(tai)(tai)機器(qi)都進行逐步的(de)(de)更改。
3.5 Pig Hive ChuKwa
Pig、Hive和ChuKwa屬于Hadoop生態(tai)圈的(de)(de)應用(yong)層(ceng),主要都(dou)是對數據進行處(chu)理和分析的(de)(de),只是不(bu)同的(de)(de)場(chang)景,選擇不(bu)同的(de)(de)組件會(hui)更好一些。
后期我會(hui)詳細介紹Hive,其他兩(liang)部分(fen)就暫(zan)時(shi)不介紹了(le)。
結束語
一直在學習路上!
————————————————
版(ban)權(quan)聲明:本文為CSDN博(bo)主(zhu)「報告(gao),今天也有好好學(xue)習」的原創文章,遵(zun)循(xun)CC 4.0 BY-SA版(ban)權(quan)協議(yi),轉載(zai)請(qing)附上原文出處鏈接(jie)及(ji)本聲明。
原文(wen)鏈接://blog.csdn.net/qq_44186838/article/details/119942818