Hadoop生態(tài)圈小貼士

小貼士為你帶來hadoop生態(tài)圈常用組件的基本原理,方便看官快速理解組件基本原理,構(gòu)造hadoop生態(tài)圈的全貌。??

一、MapReduce的工作原理

MapReduce的工作原理,簡單來說就是下面一幅圖,

1-MapReduce簡單工作原理

map函數(shù)接收一個<key,value>的輸入,同樣產(chǎn)生<key,value>的輸出。Hadoop中的有玄學(xué)意味的shuffle階段將具有相同中間key值的value集合到一起傳遞給reduce函數(shù),reduce函數(shù)接受一個如<key,(list of values)>的輸入,對value的集合進(jìn)行處理,輸出同樣為<key,value>形式。那么其具體的工作流程如何呢?請看下圖,

2-MapReduce具體工作流程

客戶端:(1)從JobTrack中獲取當(dāng)前作業(yè)ID(2)檢查作業(yè)的相關(guān)路徑(3)計算作業(yè)的劃分,并將劃分信息寫入job.split文件(4)將運(yùn)行所需要的資源復(fù)制到對應(yīng)的HDFS上(5)調(diào)用JobTracker對象來真正提交作業(yè)

JobTracker:(1)讀取客戶端在第3步中的job.split(2)創(chuàng)建對應(yīng)的map和reduce任務(wù)(3)創(chuàng)建兩個初始化的task,注意會根據(jù)TaskTracker在網(wǎng)絡(luò)中的位置,選擇一個距離此TaskTracker map任務(wù)最近的輸入劃分文件給該TaskTracker

TaskTracker:(1)執(zhí)行任務(wù)(2)更新任務(wù)執(zhí)行進(jìn)度和狀態(tài)(3)通過心跳監(jiān)測向JobTrack匯報狀態(tài)

如何對mapreduce進(jìn)行優(yōu)化呢?主要根據(jù)執(zhí)行的過程,從計算性能和IO操作上進(jìn)行優(yōu)化,(1)任務(wù)調(diào)度時,優(yōu)先將任務(wù)分配給空閑的機(jī)器,同時會盡量將map任務(wù)分配給InputSplit所在的機(jī)器,以減少網(wǎng)絡(luò)I/O的消耗(2)更加善于處理少量的大數(shù)據(jù)(3)設(shè)置map任務(wù)的數(shù)量時,主要參考map的執(zhí)行時間,設(shè)置reduce任務(wù)時,基于不同的考慮,通常是任務(wù)槽的0.95倍和1.75倍(4)map函數(shù)產(chǎn)生的中間數(shù)據(jù)有很多重復(fù)的數(shù)據(jù),利用combine函數(shù)進(jìn)行本地數(shù)據(jù)的合并(5)可以針對map的輸出和最終的輸出結(jié)果進(jìn)行壓縮

眾多周知,Hadoop具有很強(qiáng)的容錯性,具體體現(xiàn)在兩方面,(1)硬件故障,當(dāng)JobTracker發(fā)生故障時,通過領(lǐng)導(dǎo)選舉算法從備用的JobTracker中選擇新的主JobTracker,當(dāng)TaskTracker發(fā)生故障時,如果是map任務(wù)則重新執(zhí)行,如果是reduce任務(wù),則分配新的TaskTracker完成未完成的任務(wù);(2)任務(wù)失敗,JobTracker接收到TaskTracker的任務(wù)失敗通知時,通過重置任務(wù)狀態(tài),將其加入到調(diào)度隊列來重新分配任務(wù)執(zhí)行,嘗試4次仍沒有完成,作業(yè)就失敗了

插張圖,休息片刻,想起了《無問西東》中的那句,如果提前了解你所要面對的人生,你是否還會有勇氣前來?希望自己永葆童心,簡單充實(shí)......

1-無問西東

二、HDFS的工作原理

HDFS便于進(jìn)行流式數(shù)據(jù)訪問和處理超大文件,那么該如何設(shè)計滿足此要求呢?邏輯塊橫空出世,和操作系統(tǒng)中的文件塊類似,是一個抽象的概念,是文件存儲處理的邏輯單元。邏輯塊有以下優(yōu)勢,(1)通過將超大文件分成眾多塊,存儲到不同的機(jī)器上,實(shí)現(xiàn)大文件存儲(2)簡化存儲子系統(tǒng),固定大小的塊,簡化存儲系統(tǒng)的管理,尤其是元數(shù)據(jù)信息和文件塊內(nèi)容可以分開存儲(3)有利于分布式文件系統(tǒng)中復(fù)制容錯的實(shí)現(xiàn)。

HDFS中有兩類節(jié)點(diǎn),NameNode和DataNode。NameNode管理文件系統(tǒng)的命名空間,從中可以獲得每個文件的每個塊的DataNode,這些信息不是永久保存,NameNode在每次啟動時動態(tài)地重建這些信息。DataNode用來執(zhí)行具體的任務(wù),存儲文件塊,被客戶端和NameNode調(diào)用,同時基于心跳定時向NameNode發(fā)送存儲的文件塊信息。

從下圖,我們學(xué)習(xí)HDFS的體系結(jié)構(gòu),

1-HDFS的體系結(jié)構(gòu)

在此,我們主要關(guān)注DataNode的副本存放策略和NameNode的節(jié)點(diǎn)安全問題。副本存放策略,主要考慮數(shù)據(jù)的可靠性和讀寫的性能。將副本存放在一個機(jī)架上,讀取數(shù)據(jù)時不能充分利用帶寬,提高寫的效率,也不同保證數(shù)據(jù)的可靠性(節(jié)點(diǎn)故障)。將副本存放在不同的機(jī)架上,數(shù)據(jù)讀取時,可以充分利用帶寬,但是寫操作效率低下,可以保證數(shù)據(jù)的可靠性。HDFS的存放策略中,副本系數(shù)默認(rèn)是3,將一個副本放在不同機(jī)架的節(jié)點(diǎn)上,另一個副本放在同一機(jī)架的另一個節(jié)點(diǎn)上,最后一個副本放在不同機(jī)架的節(jié)點(diǎn)上。這一策略在不損害數(shù)據(jù)可靠性和讀取性能的情況下改進(jìn)了寫操作。

NameNode啟動后會進(jìn)入一個稱為安全模式的特殊狀態(tài),當(dāng)NameNode檢測確認(rèn)某個數(shù)據(jù)塊的副本數(shù)目達(dá)到最小值時,該數(shù)據(jù)塊被認(rèn)為是副本安全的;在一定百分比的數(shù)據(jù)塊被NameNode檢測安全后,其將退出安全模式狀態(tài)。NameNode容易產(chǎn)生單點(diǎn)故障,主要通過將NameNode中的元數(shù)據(jù)轉(zhuǎn)儲到遠(yuǎn)程的NFS文件系統(tǒng)中,或者同步運(yùn)行一個Secondary NameNode。


三、HBase的基本原理

HBase的表和關(guān)系型數(shù)據(jù)庫一致,由行和列構(gòu)成。不同的是,HBase中的列組成列族,且至少有一個列族,y以user表為例,其物理存儲如下圖所示,

1-HBase的物理存儲

那么似乎和Mysql中的存儲相似,如何體現(xiàn)其巨大威力呢?我們來看其邏輯模型,

2-HBase的邏輯模型

行鍵類似于Mysql中的主鍵,保證數(shù)據(jù)存儲的唯一性,info構(gòu)成其列族,列族中包含name、email和passwordd列,被稱為列限定符。同時,HBase記錄操作的時間戳。可以視為,以行鍵、列族、列限定符和時間戳為鍵,以單元內(nèi)容為值進(jìn)行存儲。那么既然是分布式的數(shù)據(jù)庫,其如何進(jìn)行讀寫操作呢?下面一起來看看寫操作,

3-HBase的寫操作

MemStore是內(nèi)存里面的寫入緩沖區(qū),累積填滿后書寫到硬盤上,生成一個HFile。WAL是預(yù)寫入日志,每臺服務(wù)器都維護(hù)一個WAL來記錄發(fā)生的變化。如果MemStore沒有刷寫到硬盤上,服務(wù)器就崩潰了,可以根據(jù)WAL中記錄的變化,恢復(fù)數(shù)據(jù),有點(diǎn)類似于Mysql中的binlog日志。讀操作呢?HBase可以快速訪問數(shù)據(jù),其在讀操作上使用了LRU(最近最少使用算法)緩存技術(shù),也稱為BlockCache,和MemStore在一個JVM堆里,用來保存從HFile里讀入內(nèi)存的頻繁訪問的數(shù)據(jù),如下圖所示,

4-HBase的讀操作

HBase是列式存儲數(shù)據(jù)庫,每一個列族有自己的HFile文件,意味著當(dāng)執(zhí)行讀操作時,HBase不需要讀取一行的數(shù)據(jù),只需要讀取用到的列族數(shù)據(jù),有利于稀疏數(shù)據(jù)的高效存儲和快速讀取,如下圖所示,

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

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

  • 1.job的本質(zhì)是什么? 2.任務(wù)的本質(zhì)是什么? 3.文件系統(tǒng)的Namespace由誰來管理,Namespace的...
    云中撈月閱讀 1,633評論 0 3
  • ivvi V3自6.15發(fā)布以來,引起了熱議。從游艇發(fā)布會這樣創(chuàng)新又時尚感爆棚的方式,到它成為新一代俊男美女的自...
    妮莫_7e34閱讀 263評論 0 0
  • 還有問題沒有問呢~我總是需要翻過去想才能分析清楚,這樣容易錯過問問題的機(jī)會呀~ 參訪最好還是問問具體案例,發(fā)現(xiàn)很多...
    annibabi閱讀 159評論 0 0
  • 人的一生,不知道會遭遇多少次擦肩而過。就在昨天,上午10點(diǎn),許久不聯(lián)系的閨蜜發(fā)來微信:“我在北京,你來找我啊,咱們...
    田小等閱讀 405評論 0 1
  • 廣州東-萍鄉(xiāng) 萍鄉(xiāng)-廣州東 收拾行囊清單 收拾收拾就 這樣了 大包早早(6.30)前往公司 5號線人多多 擠上去下...
    2yy閱讀 786評論 12 2

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