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分鍾,但是看得明明白白


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM