快速認識Hadoop生態(tài)系統(tǒng)

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

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

Hadoop1.0和Hadoop2.0

要學習hadoop首先就要認識Hadoop的版本問題,因為網上很多資料都是很混淆的,有的介紹的其實是Hadoop1.0的問題,有的資料都搞混Hadoop1.0與Hadoop2.0,這對學習很不利。


360截圖173705179310989.png
首先我們應該知道Hadoop1.0最大的問題是單點故障問題

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

Hadoop2.0

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

HDFS

360截圖17290506114124152.png

HDFS的基本原理,就是將大文件切分為同樣大小的數據塊(128MB),進行冗余(3份)存儲在不同的機器上。同時調控集群的負載均衡。

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

Yarn

360截圖17571120377276.png

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

MapReduce

20170730014216035.png

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

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

360截圖17900104136343.png

Hive

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

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

pig

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

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

Mahout

基于Hadoop的機器學習和數據挖掘的分布 式計算框架
mahout主要包含以下5部分

頻繁挖掘模式:挖掘數據中頻繁出現的項集。

聚類:將諸如文本、文檔之類的數據分成局部相關的組。

分類:利用已經存在的分類文檔訓練分類器,對未分類的文檔進行分類。

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

頻繁子項挖掘:利用一個項集(查詢記錄或購物記錄)去識別經常一起出現的項目。

Hbase

4951489-8dee031e87bde745.jpg

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

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

Column Family 組成
一個Column Family中可以由任意多個Column組 成

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

每行數據均對應一個時間戳 ?版本號
Client:

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

HMaster:

這個東西是HBase的主節(jié)點,用來協(xié)調Client端應用程序和HRegionServer的關系,管理分配HRegion給HRegionserver服務器。

HRegionServer:

Hbase的從節(jié)點,管理當前自己這臺服務器上面的HRegion,HRegion是Hbase表的基礎單元組建,存儲了分布式的表。HRegionserver負責切分在運行過程中變得過大的HRegion。

HRegion:

一個Table可以有多個HRegion,HBase使用rowKey將表水平切割成多個HRegion,每個HRegion都紀錄了它的StartKey和EndKey(第一個HRegion的StartKey為空,最后一個HRegion的EndKey為空),由于RowKey是排序的,因而Client可以通過HMaster快速的定位每個RowKey在哪個HRegion中。HRegion由HMaster分配到相應的HRegionServer中,然后由HRegionServer負責HRegion的啟動和管理,和Client的通信,負責數據的讀(使用HDFS)。每個HRegionServer可以同時管理1000個左右的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:

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

StoreFile:

1個HStore,由一個MemStore和0~N個StoreFile組成。

HFile:

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

Zookeeper:

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

Zookeeper

Zookeeper本質上是一個MapReduce程序。


20141108213346_932.png

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

Oozie

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

周期性作業(yè)

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

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

360截圖17290513287528.png

開源版本

Apache Hadoop

CDH

HDP

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

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容