快速認(rèn)識(shí)Hadoop生態(tài)系統(tǒng)

就目前來說Hadoop已經(jīng)成為處理大數(shù)據(jù)的問題的必備的組件,許多的大廠都已經(jīng)在使用Hadoop軟件棧處理自己的問題,那為什么Hadoop技術(shù)棧這么流行?

其實(shí)不外乎幾個(gè)原因:首先Hadoop是完全開源的,雖然Oracle也可以搭建集群但是畢竟Oracle不是開源的,其次是當(dāng)數(shù)據(jù)量大的時(shí)候Oracle的計(jì)算也會(huì)變得很慢。其次是Hadoop的社區(qū)比較活躍,這樣解決問題的成本就會(huì)很低,因?yàn)楹芸赡芤恍﹩栴}早已經(jīng)被別人解決了。最后是Hadoop已經(jīng)被很多企業(yè)投入使用,有了實(shí)戰(zhàn)的經(jīng)驗(yàn),同時(shí)Hadoop有很廣泛的大數(shù)據(jù)解決面。

Hadoop1.0和Hadoop2.0

要學(xué)習(xí)hadoop首先就要認(rèn)識(shí)Hadoop的版本問題,因?yàn)榫W(wǎng)上很多資料都是很混淆的,有的介紹的其實(shí)是Hadoop1.0的問題,有的資料都搞混Hadoop1.0與Hadoop2.0,這對學(xué)習(xí)很不利。


360截圖173705179310989.png
首先我們應(yīng)該知道Hadoop1.0最大的問題是單點(diǎn)故障問題

Hadoop2.0就是針對Hadoop1.0的問題進(jìn)行解決與優(yōu)化。根據(jù)上圖我們知道,Hadoop1.0只支持單一的計(jì)算模型MapReduce,Hadoop2.0加入Yarn資源調(diào)度器,可以支持多種類型的計(jì)算模型,Yarn同時(shí)可以給不同的計(jì)算任務(wù)進(jìn)行計(jì)算資源的分配。

Hadoop2.0

  • HDFS 主要提供了分布式存儲(chǔ)系統(tǒng),供了高可靠性、高擴(kuò)展性和高吞吐率的數(shù)據(jù)存儲(chǔ)服務(wù),同時(shí)基于對數(shù)據(jù)的操作基本屬于順序讀取的流式讀取,并且Hadoop可以承載草大文件的存儲(chǔ)。
  • Yarn 主要負(fù)責(zé)集群的資源的管理,同時(shí)也可以進(jìn)行資源的分配。
  • Mapreduce分布式計(jì)算框架,具有易于編程、高容錯(cuò)性和高擴(kuò)展性等優(yōu)點(diǎn).

HDFS

360截圖17290506114124152.png

HDFS的基本原理,就是將大文件切分為同樣大小的數(shù)據(jù)塊(128MB),進(jìn)行冗余(3份)存儲(chǔ)在不同的機(jī)器上。同時(shí)調(diào)控集群的負(fù)載均衡。

如上圖所示,在Hadoop2.0中Namenode節(jié)點(diǎn)有兩個(gè)為了解決但節(jié)點(diǎn)故障問題,不過現(xiàn)在的備份節(jié)點(diǎn)是屬于靜態(tài)綁定,如果兩個(gè)節(jié)點(diǎn)都故障,就不得使用冷啟動(dòng)方式啟動(dòng)。

Yarn

360截圖17571120377276.png

了解Hadoop1.0的一定知道其是通過JobTracker和TaskTracker進(jìn)行任務(wù)與資源的分配,但是也存在單節(jié)點(diǎn)故障的問題。Yarn目前很復(fù)雜,但目前也符合主/從的模式,由上圖知,ResourceManager管理著NodeManage從節(jié)點(diǎn)。具有良好的擴(kuò)展性和高可用性。

MapReduce

20170730014216035.png

上圖是MapReduce計(jì)算的過程,主要分為input,splitting,Mapping,shuffing,Reducing,output五個(gè)過程。但是其他復(fù)雜過程都被封裝了,我們只需要進(jìn)行編寫Mapping和Reducing的過程。

Hadoop生態(tài)系統(tǒng)

360截圖17900104136343.png

Hive

最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計(jì)問題,其是構(gòu)建在HDFS數(shù)據(jù)倉庫上的,其底層就是MapReduce計(jì)算實(shí)現(xiàn)。Hive定義了一種HiveQL語言,可以使Hive通過簡單的類SQL語句實(shí)現(xiàn)MapReduce程序。

SELECT word, COUNT(*) FROM doc  LATERAL VIEW explode(split(text, ' ')) lTable 
as word  GROUP BY word; 

pig

pig與hive類似,但是pig不管數(shù)據(jù)是不是關(guān)系型的,有無元數(shù)據(jù),是否嵌套都可以進(jìn)行操作,而且pig也可以在其他平臺(tái)上進(jìn)行使用。
定義了一種數(shù)據(jù)流語言——Pig Latin

 ① 加載數(shù)據(jù) input = load ‘/input/data’ as (line:chararray); 
 ② 將字符串分割成單詞 words = foreach input generate                      flatten(TOKENIZE(line)) as word; 
 ③ 對單詞進(jìn)行分組 grpd = group words by word; 
 ④ 統(tǒng)計(jì)每組中單詞數(shù)量 cntd = foreach grpd generate group,               COUNT(words); 
 ⑤ 打印結(jié)果 dump cntd; 

Mahout

基于Hadoop的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的分布 式計(jì)算框架
mahout主要包含以下5部分

頻繁挖掘模式:挖掘數(shù)據(jù)中頻繁出現(xiàn)的項(xiàng)集。

聚類:將諸如文本、文檔之類的數(shù)據(jù)分成局部相關(guān)的組。

分類:利用已經(jīng)存在的分類文檔訓(xùn)練分類器,對未分類的文檔進(jìn)行分類。

推薦引擎(協(xié)同過濾):獲得用戶的行為并從中發(fā)現(xiàn)用戶可能喜歡的事物。

頻繁子項(xiàng)挖掘:利用一個(gè)項(xiàng)集(查詢記錄或購物記錄)去識(shí)別經(jīng)常一起出現(xiàn)的項(xiàng)目。

Hbase

4951489-8dee031e87bde745.jpg

Table:表:類似于傳統(tǒng)傳統(tǒng)數(shù)據(jù)庫中的表

Column Family:列簇:Table在水平方向有一個(gè)或者多個(gè)

Column Family 組成
一個(gè)Column Family中可以由任意多個(gè)Column組 成

Row Key: 行鍵 ?Table的主鍵 ?Table中的記錄按照Row Key排序 ?Timestamp: 時(shí)間戳

每行數(shù)據(jù)均對應(yīng)一個(gè)時(shí)間戳 ?版本號
Client:

包含訪問HBase的接口,并維護(hù)cache來加快對HBase的訪問。說白了,就是用來訪問HBase的客戶端。

HMaster:

這個(gè)東西是HBase的主節(jié)點(diǎn),用來協(xié)調(diào)Client端應(yīng)用程序和HRegionServer的關(guān)系,管理分配HRegion給HRegionserver服務(wù)器。

HRegionServer:

Hbase的從節(jié)點(diǎn),管理當(dāng)前自己這臺(tái)服務(wù)器上面的HRegion,HRegion是Hbase表的基礎(chǔ)單元組建,存儲(chǔ)了分布式的表。HRegionserver負(fù)責(zé)切分在運(yùn)行過程中變得過大的HRegion。

HRegion:

一個(gè)Table可以有多個(gè)HRegion,HBase使用rowKey將表水平切割成多個(gè)HRegion,每個(gè)HRegion都紀(jì)錄了它的StartKey和EndKey(第一個(gè)HRegion的StartKey為空,最后一個(gè)HRegion的EndKey為空),由于RowKey是排序的,因而Client可以通過HMaster快速的定位每個(gè)RowKey在哪個(gè)HRegion中。HRegion由HMaster分配到相應(yīng)的HRegionServer中,然后由HRegionServer負(fù)責(zé)HRegion的啟動(dòng)和管理,和Client的通信,負(fù)責(zé)數(shù)據(jù)的讀(使用HDFS)。每個(gè)HRegionServer可以同時(shí)管理1000個(gè)左右的HRegion,出處請參看論文:BigTable(5 Implementation節(jié)):Each tablet server manages a set of tablets(typically we have somewhere between ten to a thousand tablets per tablet server))。

MemStore:

它是一個(gè)寫緩存,數(shù)據(jù)先WAL[write ahead log](也就是HLog它是一個(gè)二進(jìn)制文件,所有寫操作都會(huì)先保證將數(shù)據(jù)寫入這個(gè)Log文件后,才會(huì)真正更新MemStore,最后寫入HFile中),在寫入MemStore后,由MemStore根據(jù)一定的算法將數(shù)據(jù)Flush到底層HDFS文件中(HFile),一般而言,對于每個(gè)HRegion中的每個(gè)Column Family來說,有一個(gè)自己的MemStore。

StoreFile:

1個(gè)HStore,由一個(gè)MemStore和0~N個(gè)StoreFile組成。

HFile:

用于存儲(chǔ)HBase的數(shù)據(jù)(Cell/KeyValue),在HFile中的數(shù)據(jù)是按RowKey、Column Family、Column排序,對于相同的數(shù)據(jù)單元,排序則按照時(shí)間戳(Timestamp)倒敘排列。

Zookeeper:

HBase內(nèi)置有zookeeper,但一般我們會(huì)有其他的Zookeeper集群來監(jiān)管master和regionserver,Zookeeper通過選舉,保證任何時(shí)候,集群中只有一個(gè)活躍的HMaster,HMaster與HRegionServer 啟動(dòng)時(shí)會(huì)向ZooKeeper注冊,存儲(chǔ)所有HRegion的尋址入口,實(shí)時(shí)監(jiān)控HRegionserver的上線和下線信息。并實(shí)時(shí)通知給HMaster,存儲(chǔ)HBase的schema和table元數(shù)據(jù),默認(rèn)情況下,HBase 管理ZooKeeper 實(shí)例,Zookeeper的引入使得HMaster不再是單點(diǎn)故障。一般情況下會(huì)啟動(dòng)兩個(gè)HMaster,非Active的HMaster會(huì)定期的和Active HMaster通信以獲取其最新狀態(tài),從而保證它是實(shí)時(shí)更新的,因而如果啟動(dòng)了多個(gè)HMaster反而增加了Active HMaster的負(fù)擔(dān)。

Zookeeper

Zookeeper本質(zhì)上是一個(gè)MapReduce程序。


20141108213346_932.png

連接Hadoop與傳統(tǒng)數(shù)據(jù)庫之間的橋梁 支持多種數(shù)據(jù)庫,包括MySQL、DB2等 插拔式,用戶可根據(jù)需要支持新的數(shù)據(jù)庫 本質(zhì)上是一個(gè)MapReduce程序 充分利用了MR分布式并行的特點(diǎn),充分利用MR容錯(cuò)性

Oozie

如何對這些框架和作業(yè)進(jìn)行統(tǒng)一管理和調(diào)度?
不同作業(yè)之間存在依賴關(guān)系(DAG);

周期性作業(yè)

定時(shí)執(zhí)行的作業(yè)

作業(yè)執(zhí)行狀態(tài)監(jiān)控與報(bào)警(發(fā)郵件、短信等)

360截圖17290513287528.png

開源版本

Apache Hadoop

CDH

HDP

建議選擇公司發(fā)行版,比如CDH或HDP

不用考慮不同軟件間的版本匹配

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

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

  • 簡介 HBase是高可靠性,高性能,面向列,可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Serve...
    九世的貓閱讀 2,388評論 1 6
  • 本文首先簡單介紹了HBase,然后重點(diǎn)講述了HBase的高并發(fā)和實(shí)時(shí)處理數(shù)據(jù) 、HBase數(shù)據(jù)模型、HBase物理...
    達(dá)微閱讀 2,854評論 1 13
  • HBase工作原理學(xué)習(xí) 1 HBase簡介 HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用...
    miss幸運(yùn)閱讀 852評論 0 11
  • I pretended not to notice him in the street while I saw N...
    化真閱讀 151評論 0 1
  • 我們都知道,孩子的成長需要夢想 今天等人的時(shí)間,看了一個(gè)小故事,故事說—— 一個(gè)電視節(jié)目做了一個(gè)實(shí)驗(yàn):主持人在黑板...
    小賈教我家庭教育觀閱讀 288評論 2 3

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