Hive學習筆記一 -- Hive與數據倉庫

1、Hive

  隨着數據地海量增長,HDFS和MapReduce應運而生。MapReduce可以實現分佈式處理,而數據的存儲依賴於Hadoop分佈式文件系統(HDFS)。不過,仍然存在一個挑戰,就是用戶如何從一個現有的數據基礎架構轉移到Hadoop上,而這個基礎架構是基於傳統關係型數據庫和結構化查詢語句(SQL)的,例如MySQL等傳統關係型數據庫。對於大量的SQL用戶(包括專業數據庫設計師、管理員及那些使用SQL從數據倉庫中抽取信息的臨時用戶)來說,這個問題又將如何解決呢?

  Hive的出現正好可以解決這一系列問題,Hive最初是由Facebook設計的,是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,並提供簡單的類SQL查詢語言(稱爲HiveQL)。底層將HiveQL語句轉換爲MapReduce任務運行,它允許熟悉SQL的用戶基於Hadoop框架分析數據。其優點是學習成本低,對於簡單的統計分析,不必開發專門的MapReduce程序,直接通過HiveQL即可實現。

2、數據倉庫

  數據倉庫名稱爲Data Warehouse,可簡寫爲DW或DWH。數據倉庫的目的是構建面向分析的集成化數據環境,爲企業提供決策支持(Decision Support)。它出於分析性報告和決策支持目的而創建。數據倉庫本身並不“生產”任何數據,同時自身也不需要“消費”任何的數據,數據來源於外部,並且開放給外部應用,這也是爲什麼叫“倉庫”,而不叫“工廠”的原因。

3、數據庫與數據倉庫

  數據庫與數據倉庫的區別實際上是 OLTP 與 OLAP 的區別。 操作型處理,叫聯機事務處理 OLTP(On-Line Transaction Processing),也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較爲關心操作的響應時間、數據的安全性、完整性和併發支持的用戶數等問題。傳統的數據庫系統作爲數據管理的主要手段,主要用於操作型處理。 分析型處理,叫聯機分析處理 OLAP(On-Line Analytical Processing)一般針對某些主題的歷史數據進行分析,支持管理決策。

  首先要明白,數據倉庫的出現,並不是要取代數據庫。數**據庫是面向事務的設計,數據倉庫是面向分析設計的。**數據庫一般存儲業務數據,數據倉庫存儲的一般是歷史數據。數據庫設計是盡量避免冗餘,一般針對某一業務應用進行設計,比如一張簡單的User表,記錄用戶名、密碼等簡單數據即可,符合業務應用,但是不符合分析。數據倉庫在設計是有意引入冗餘, 依照分析需求,分析維度、分析指標進行設計。數據庫是爲捕獲數據而設計,數據倉庫是爲分析數據而設計。

  以銀行業務爲例:數據庫是事務系統的數據平臺,客戶在銀行做的每筆交易都會寫入數據庫,被記錄下 來,這里,可以簡單地理解爲用數據庫記賬。數據倉庫是分析系統的數據平臺,它從事務系統獲取數據,並做彙總、加工,爲決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當 前存款餘額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。 顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性, 客戶存一筆錢需要幾十秒是無法忍受的,這就要求數據庫只能存儲很短一段時間的數據。而分析系統是 事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,彙總計算起來也要慢一些,但 是,只要能夠提供有效的分析數據就達到目的了。數據倉庫,是在數據庫已經大量存在的情況下,爲了進一步挖掘數據資源、爲了決策需要而產生的,它絕不是所謂的“大型數據庫”。

4、數據存儲架構

在這裏插入圖片描述

5、Hive架構

在這裏插入圖片描述

①用戶接口。用戶與Hive交互主要有3種方式:CLI、Client和WUI。CLI方式主要用於Linux平臺命令行查詢。WUI方式是Hive的Web界面訪問方式,通過瀏覽器訪問Hive。Client是Hive的客戶端,連接至遠程服務HiveServer2。

②元數據存儲。Hive將元數據存儲在數據庫中,如MySQL、Derby等,其中元數據存儲依賴於Metastore DB服務。Hive中的元數據包括表名、表的列和分區及其屬性、表的屬性(是否爲外部表)、表的數據所在目錄等。

③解析器、編譯器、優化器。完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成,隨後由MapReduce調用執行。

④數據存儲。Hive中表的數據存儲在HDFS中,包含表(Table)、外部表(External Table)、分區(Partition)、桶(Bucket)等數據模型,其中數據庫、分區、表都對應HDFS上的某個目錄,Hive表裏的數據存儲在表目錄下面。

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