都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

我今天花了大半個下午的時間,寫了這篇hadoop的架構,全篇都是以大白話的形式,也算是爲後面更加詳細的每一部分開了個好頭吧,如果喜歡請點轉發和關注,如果有疑問,直接在評論裏說出來,大家一起解決,才能進步。

一、概念

Hadoop誕生於2006年,一個分佈式系統基礎架構,由Apache基金會開發。Hadoop的主要目標是對分佈式環境下的“大數據”以一種可靠、高效、可伸縮的方式處理。

Hadoop框架透明地爲應用提供可靠性和數據移動。它實現了名爲MapReduce的編程範式:應用程序被分割成許多小部分,而每個部分都能在集羣中的任意節點上執行或重新執行。

Hadoop還提供了分佈式文件系統,用以存儲所有計算節點的數據,這爲整個集羣帶來了非常高的帶寬。MapReduce和分佈式文件系統的設計,使得整個框架能夠自動處理節點故障。它使應用程序與成千上萬的獨立計算的電腦和PB級的數據。

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

二、組成

1.Hadoop的核心組件

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

分析:Hadoop的核心組件分爲:HDFS(分佈式文件系統)、MapRuduce(分佈式運算編程框架)、YARN(運算資源調度系統)

2.HDFS的文件系統

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

HDFS

1.定義

整個Hadoop的體系結構主要是通過HDFS(Hadoop分佈式文件系統)來實現對分佈式存儲的底層支持,並通過MR來實現對分佈式並行任務處理的程序支持。

HDFS是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

MapReduce

1.定義

Hadoop MapReduce是google MapReduce 克隆版。

MapReduce是一種計算模型,用以進行大數據量的計算。其中Map對數據集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce則對中間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分佈式並行環境裏進行數據處理。

2.組成

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

分析:

(1)JobTracker

JobTracker叫作業跟蹤器,運行到主節點(Namenode)上的一個很重要的進程,是MapReduce體系的調度器。用於處理作業(用戶提交的代碼)的後臺程序,決定有哪些文件參與作業的處理,然後把作業切割成爲一個個的小task,並把它們分配到所需要的數據所在的子節點。

Hadoop的原則就是就近運行,數據和程序要在同一個物理節點裏,數據在哪裏,程序就跑去哪裏運行。這個工作是JobTracker做的,監控task,還會重啓失敗的task(於不同的節點),每個集羣只有唯一一個JobTracker,類似單點的NameNode,位於Master節點

(2)TaskTracker

TaskTracker叫任務跟蹤器,MapReduce體系的最後一個後臺進程,位於每個slave節點上,與datanode結合(代碼與數據一起的原則),管理各自節點上的task(由jobtracker分配),

每個節點只有一個tasktracker,但一個tasktracker可以啓動多個JVM,運行Map Task和Reduce Task;並與JobTracker交互,彙報任務狀態,

Map Task:解析每條數據記錄,傳遞給用戶編寫的map(),並執行,將輸出結果寫入本地磁盤(如果爲map-only作業,直接寫入HDFS)。

Reducer Task:從Map Task的執行結果中,遠程讀取輸入數據,對數據進行排序,將數據按照分組傳遞給用戶編寫的reduce函數執行。

Hive

1.定義

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,並提供完整的sql查詢功能,可以將sql語句轉換爲MapReduce任務進行運行。

Hive是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。

Hive 定義了簡單的類 SQL 查詢語言,稱爲 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜的分析工作。

2.組成

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

分析:Hive架構包括:CLI(Command Line Interface)、JDBC/ODBC、Thrift Server、WEB GUI、Metastore和Driver(Complier、Optimizer和Executor),這些組件分爲兩大類:服務端組件和客戶端組件

3.Hive與傳統數據庫的異同

(1)查詢語言

由於 SQL 被廣泛的應用在數據倉庫中,因此專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發的開發者可以很方便的使用Hive進行開發。

(2)數據存儲位置

Hive是建立在Hadoop之上的,所有Hive的數據都是存儲在HDFS中的。而數據庫則可以將數據保存在塊設備或者本地文件系統中。

(3)數據格式

Hive中沒有定義專門的數據格式,數據格式可以由用戶指定,用戶定義數據格式需要指定三個屬性:列分隔符(通常爲空格、”\t”、”\\\x001″)、行分隔符(”\n”)以及讀取文件數據的方法(Hive中默認有三個文件格式TextFile,SequenceFile以及RCFile)。

(4)數據更新

由於Hive是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive中不支持

對數據的改寫和添加,所有的數據都是在加載的時候中確定好的。而數據庫中的數據通常是需要經常進行修改的,因此可以使用INSERT INTO … VALUES添加數據,使用UPDATE … SET修改數據。

(5)索引

Hive在加載數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引。Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。

由於MapReduce的引入, Hive可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive仍然可以體現出優勢。數據庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,數據庫可以有很高的效率,較低的延遲。

由於數據的訪問延遲較高,決定了Hive不適合在線數據查詢。

(6)執行

Hive中大多數查詢的執行是通過Hadoop提供的MapReduce來實現的(類似select * from tbl的查詢不需要MapReduce)。而數據庫通常有自己的執行引擎。

(7)數據規模

由於Hive建立在集羣上並可以利用MapReduce進行並行計算,因此可以支持很大規模的數據;對應的,數據庫可以支持的數據規模較小。

Hbase

1.定義

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。

HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作爲其文件存儲系統,HBase利用Hadoop HDFS作爲其文件存儲系統;

Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據;

Google Bigtable利用 Chubby作爲協同服務,HBase利用Zookeeper作爲協同服務。

2.組成

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

分析:從上圖可以看出:Hbase主要由Client、Zookeeper、HMaster和HRegionServer組成,由Hstore作存儲系統。

  • Client

HBase Client使用HBase的RPC機制與HMaster和HRegionServer進行通信,對於管理類操作,Client與 HMaster進行RPC;對於數據讀寫類操作,Client與HRegionServer進行RPC

  • Zookeeper

Zookeeper Quorum 中除了存儲了 -ROOT- 表的地址和 HMaster 的地址,HRegionServer 也會把自己以 Ephemeral 方式註冊到 Zookeeper 中,使得 HMaster 可以隨時感知到各個HRegionServer 的健康狀態。

三、Hadoop的應用實例

1.回顧Hadoop的整體架構

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

2.Hadoop的應用——流量查詢系統

(1)流量查詢系統總體框架

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(2)流量查詢系統總體流程

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(3)流量查詢系統數據預處理功能框架

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(4)流量查詢系統數據預處理流程

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(5)流量查詢NoSQL數據庫功能框架

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(6)流量查詢服務功能框架

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

 

(7)實時流計算數據處理流程圖

都說Hadoop與大數據平臺難懂?我就花了6分鐘,但是看得明明白白

歡迎關注我的公衆號“商業智能研究”,私信回覆“資料包”,即可領取大數據、數據中臺、商業智能、數據倉庫等6G精華資料!

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章