第8章 基于Hadoop的數(shù)據(jù)倉庫-Hive

(本章教材上沒有)

8.1 概述

8.1.1 數(shù)據(jù)倉庫概念

概念
數(shù)據(jù)倉庫是一個面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數(shù)據(jù)結(jié)合,用于支持管理決策。
典型的體系結(jié)構(gòu)
包含四個層次:數(shù)據(jù)源、數(shù)據(jù)存儲和管理、分析和挖掘引擎、應(yīng)用。分別闡述如下。
1)數(shù)據(jù)源:企業(yè)各個環(huán)節(jié)中所產(chǎn)生的所有數(shù)據(jù)。
2)數(shù)據(jù)存儲和管理:① ETL過程,即數(shù)據(jù)的抽取、轉(zhuǎn)換、加載、存儲等;② 數(shù)倉的監(jiān)視、運(yùn)行、維護(hù)工具等
3)分析與挖掘:與傳統(tǒng)數(shù)據(jù)庫相比兩個特點(diǎn):① 很多數(shù)據(jù)都是一經(jīng)寫入不再更改,② 數(shù)倉保留了幾乎全部的歷史數(shù)據(jù)。基于上述數(shù)據(jù)可以進(jìn)行各種統(tǒng)計、機(jī)器學(xué)習(xí)等
4)應(yīng)用:報表、查詢工具、分析工具等

8.1.2 傳統(tǒng)數(shù)倉面臨的挑戰(zhàn)

傳統(tǒng)數(shù)倉都是基于關(guān)系型數(shù)據(jù)庫構(gòu)建,有以下老生常談的缺點(diǎn):
1)無法滿足海量數(shù)據(jù)的存儲需求
2)無法處理不同類型的數(shù)據(jù)
3)計算和處理能力不足,擴(kuò)展性差

8.1.3 Hive簡介

1)構(gòu)建于Hadoop頂層的數(shù)倉工具,支持大規(guī)模數(shù)據(jù)的存儲、分析,具有良好的擴(kuò)展性
2)但hive本身只是提供用戶編程接口,存儲依賴為HDFS,處理依賴于MapReduce
3)提供了類SQL語句,稱之為HiveQL,學(xué)習(xí)門檻低
4)采用批處理方式
5)提供了一系列ETL工具,可滿足數(shù)倉各種業(yè)務(wù)場景

8.1.4 Hive和Hadoop生態(tài)系統(tǒng)中其它組件的關(guān)系

1)如前文所描述:依賴于HDFS進(jìn)行存儲,依賴于MR進(jìn)行處理
2)Pig則是與Hive些許類似的產(chǎn)品,但Pig更適合于輕量級、實時交互式分析,主戰(zhàn)場是ETL環(huán)節(jié)。而hive的戰(zhàn)場是后續(xù)的分析工作。當(dāng)然Pig和Hive都可以完成ETL工作。
3)HBase提供數(shù)據(jù)的實時訪問、隨機(jī)讀寫,適用于實時交互式查詢。

8.1.5 Hive與傳統(tǒng)數(shù)據(jù)庫對比

1)hive只支持批量導(dǎo)入,而傳統(tǒng)數(shù)據(jù)庫可支持單條和批量
2)hive不支持?jǐn)?shù)據(jù)更新
3)都支持索引
4)都支持分區(qū)
5)傳統(tǒng)數(shù)據(jù)庫秒級響應(yīng),hive最快也得分鐘級響應(yīng)
6)hive強(qiáng)擴(kuò)展性

8.1.6 hive在企業(yè)中的應(yīng)用

0)HDFS和MR是核心組件沒得說,其它產(chǎn)品都是基于這兩個核心組件
1)hive和pig應(yīng)用于報表生成等組件
2)HBase應(yīng)用于在線業(yè)務(wù)
3)Mahout應(yīng)用于商務(wù)智能,其實現(xiàn)了很多機(jī)器學(xué)習(xí)算法
注:Hive是facebook開發(fā)的

8.2 Hive系統(tǒng)架構(gòu)

三個核心模塊:用戶接口模塊、驅(qū)動模塊、元數(shù)據(jù)存儲模塊。分別加以闡述。


Hive系統(tǒng)架構(gòu)

1)用戶接口模塊包括:
CLI - 命令行接口,
HWI - Web訪問,
JDBC、ODBC、Thrift Server - 通過這些接口實現(xiàn)RPC訪問
2)驅(qū)動模塊(driver),包括編譯器、優(yōu)化器、執(zhí)行器,負(fù)責(zé)把HiveSQL語句轉(zhuǎn)換為一系列的MapReduce作業(yè)
3)元數(shù)據(jù)存儲模塊(Metastore):用于存儲元數(shù)據(jù)(有那些表,表有哪些列,列叫啥名)。這個模塊用的其實是一個獨(dú)立的關(guān)系型數(shù)據(jù)庫。
在架構(gòu)圖上可以看出,還有Karamasphere、Hue、Qubole等訪問工具,其中HUE應(yīng)用應(yīng)該較多

8.3 Hive工作原理

8.3.1 把SQL語句轉(zhuǎn)換為MR作業(yè)的基本原理 略
8.3.2 把SQL語句轉(zhuǎn)換為MR作業(yè)的過程 略

8.4 Hive HA基本原理

是一個提高穩(wěn)定性的工具,具體略

8.5 Impala

8.5.1 Impala簡介

由Cloudera公司開發(fā),與Hive類似,但在性能上比Hive高出3~30倍,依賴于Hive的元數(shù)據(jù),提供SQL語句,可查詢存儲在HDFS和HBase上的PB級數(shù)據(jù)。
與Hive不同的是,其查詢時底層用的是類似商用并行關(guān)系型數(shù)據(jù)庫的分布式查詢引擎,而不是轉(zhuǎn)化成MR作業(yè),所以快的多。

8.5.2 Impala系統(tǒng)架構(gòu)
impala系統(tǒng)架構(gòu)

上圖所示中,虛線框是Impala組件,實線框是其它組件,可以看到Impala每個組件都是架構(gòu)在某些Hadoop組件之上的。核心部分包括Impalad、State Store、CLI三個模塊。
1)Impalad:協(xié)調(diào)客戶端提交的查詢的執(zhí)行,與HDFS的數(shù)據(jù)節(jié)點(diǎn)運(yùn)行在同一個節(jié)點(diǎn)上,Impalad之間可以互相分配任務(wù),等。
2)State Store:收集各個Impalad進(jìn)程的資源信息,用于查詢調(diào)度。
3)CLI:命令行工具

8.5.3 Impala查詢執(zhí)行過程
impala查詢執(zhí)行過程圖
8.5.4 Impala和Hive的比較

不同點(diǎn)
1)hive適合長時間批處理查詢分析,impala適合實時交互式查詢
2)hive依賴于MR,impala則不然
3)hive查詢過程中內(nèi)存不夠則啟用外存,但impala不會
相同點(diǎn)
1)使用相同的存儲數(shù)據(jù)池,都支持HDFS和HBase
2)使用相同的元數(shù)據(jù)
3)都是SQL語句
總結(jié)
impala不能取代現(xiàn)有的MR,把hive和impala配合使用效果最佳,可以先使用hive進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理,生成比較規(guī)范的數(shù)據(jù),然后在此結(jié)果之上應(yīng)用impala進(jìn)行快速的數(shù)據(jù)分析。

8.6 Hive編程實踐

1)創(chuàng)建表:create
2)查看數(shù)據(jù)庫、表、視圖等:show
3)向表中裝載數(shù)據(jù):load data (local inpath|hdfs path) ‘/xx/xx/xx’ overwrite/into datble tablename
4)向表中插入數(shù)據(jù):insert overwrite/into table tablename select ...

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

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

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