Hive数据仓库
一.概念
1.1 數(shù)據倉庫是一個面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數(shù)據集合,用于支持管理決策。
1.2 體系結構
1.3 與傳統(tǒng)數(shù)據庫的區(qū)別
- 數(shù)據相對穩(wěn)定,不會頻繁發(fā)生變化。
- 保留歷史信息;
1.4 基于傳統(tǒng)數(shù)據庫的傳統(tǒng)數(shù)據倉庫面臨的挑戰(zhàn)
- 無法滿足快速增長的海量數(shù)據存儲需求;
- 無法有效處理不同數(shù)據類型的數(shù)據;
- 計算和處理數(shù)據能力不足;
二.Hive 簡介
2.1 基于hadoop的Hive數(shù)據倉庫,水平擴展性好。
- 傳統(tǒng)的數(shù)據倉庫既是數(shù)據存儲產品也是數(shù)據處理分析產品;
- 傳統(tǒng)數(shù)據倉庫同時支持數(shù)據的存儲于處理分析;
- Hive 本身并不支持數(shù)據存儲和處理,但提供了一種編程語言HiveQL;
- 架構在底層hadoop核心組件基礎之上,借助hadoop的HDFS和MapReduce完成數(shù)據的存儲和處理;
2.2 Hive提供類似SQL的查詢語言HiveQL,通過其來執(zhí)行具體的MapReduce任務,支持類似的SQL的接口,移植容易,是一個有效合理直觀組織和使用的數(shù)據分析工具。
2.3 Hive 兩方面特性
- 采用批處理方式處理海量數(shù)據。
- Hive會把HiveQL語言轉化為MapReduce任務進行運行;
- 數(shù)據倉庫存儲的是靜態(tài)數(shù)據,對靜態(tài)數(shù)據分析適合采用批處理方式,不需要快速響應給出結果,而且數(shù)據本省不會頻繁變化。
- Hive提供了一系列對數(shù)據進行提取、轉換、加載(ETL)的工具。
- 可以存儲、查詢和分析存儲在hadoop中的大規(guī)模數(shù)據。
- 這些工具能夠很好滿足數(shù)據倉庫各種應用場景。
2.4 Hive 與hadoop組件的關系
- Hive 依賴于HDFS存儲數(shù)據;
- Hive 依賴于MapReduce處理數(shù)據;
- Pig提供一種面向流式處理的語言Pig Latin(類似SQL),通過Pig Latin腳本語言來執(zhí)行數(shù)據倉庫和數(shù)據處理等工作。與Hive類似,通過轉化為MapReduce任務來執(zhí)行。
- Pig適合處理實時的交互信息,不適合海量的數(shù)據處理。
- Pig 主要用于數(shù)據倉庫的ETL環(huán)節(jié);
- Hive 主要用于數(shù)據倉庫海量數(shù)據的批處理分析。
- HBase 實時交互式查詢的數(shù)據庫產品,彌補HDFS的缺陷。
- Hive 時延高,與Hbase互補;
2.5 Hive與傳統(tǒng)數(shù)據庫
2.6 Hive的應用
- Mahout:構建商務智能應用;
2.7 Hive 系統(tǒng)架構
-
Hive 對外訪問接口
- CLI:一種命令行工具
- HWI:Hive web interface是Hive 的文本接口。
- JDBC和ODBC:開發(fā)數(shù)據庫連接接口
- Thrift Server :基于Thrift架構開發(fā)的接口,允許外界通過這個接口,實現(xiàn)對Hive 倉庫的RPC調用。
-
驅動模塊Driver
- 包含編譯器、優(yōu)化器、執(zhí)行器:負責把HiveQL語句轉換成一些列MapReduce作業(yè);
-
元數(shù)據存儲模塊Metastore:是一個獨立的關系型數(shù)據庫;
- 通過MySQL數(shù)據庫來存儲Hive元數(shù)據。
- 也可以通過上述接口訪問;
- Qubole:直接作為一種服務提供給用戶,通過亞馬遜AWS平臺可以遠程使用數(shù)據倉庫,數(shù)據倉庫由亞馬遜集群管理。
2.8 Hive HA基本原理
- Hive High Availability:由于Hive 很多時候表現(xiàn)出不穩(wěn)定性,高可用性的解決方案即Hive HA。
- 外部多個實例訪問HA Proxy,Proxy在轉發(fā)到底層的多個實例上去,執(zhí)行邏輯可用性測試。
- 每個一定的周期,HA Proxy會重新對列入黑名單的示例進行統(tǒng)一處理。
三.SQL轉換成MapReduce作業(yè)原理
3.1 Hive 不做具體的數(shù)據處理和存儲,它把SQL語句轉換成MapReduce作業(yè)。
3.2 基本原理
-
連接:MapReduce實現(xiàn)數(shù)據庫表的連接
- 編寫MapReduce處理邏輯
- Map處理邏輯輸入關系數(shù)據庫的表;
- 通過Map對它進行轉換,生產鍵值對;
-
轉化原理
- 說明
- 當啟動MapReduce 程序時,Hive 本身是不會生成MapReduce程序的;
- 需要通過一個表示"Job 執(zhí)行計劃"的xml文件驅動執(zhí)行內置的、原生的Mapper和MapReduce模塊。
- Hive 通過和JobTracker通信來初始化MapReduce任務,不必直接部署在JobTracker所在的管理節(jié)點上執(zhí)行
- 通常在大型集群上,會有專門的網關機來部署Hive 工具。
- 數(shù)據文件通常存儲在HDFS 上,HDFS 由名稱節(jié)點管理。
- 說明
四.Impala 簡介
4.1 Impala 是可以實現(xiàn)實時性交互式查詢分析的工具,彌補了Hive 的缺點。
4.2 Impala
- 允許通過SQL語句查詢底層數(shù)據,支持PB級別以上的數(shù)據,數(shù)據可以存儲在HDFS和HBase。
- Impala 運行后依賴Hive 元數(shù)據,不是獨立運行的。
- Impala 是參照Dremel 系統(tǒng)進行設計的;
- Impala 不需要轉換成MapReduce任務,而是采用與商業(yè)并行關系數(shù)據庫類似的分布式查詢引擎,直接與HFDS和HBase進行交互查詢,實時性高;
4.3 系統(tǒng)架構
- 虛線部分是Impala的組件,實現(xiàn)部分是Hadoop的其他組件,這些組件需要一起部署在同一個集群上。
- HDFS 和HBase 存儲數(shù)據;
- Hive 提供元數(shù)據存儲功能;
- Impala 三個典型組件
- Impalad: 負責具體的相關查詢任務;
- Impalad是駐留在不同節(jié)點上的進程;
- 包含三個模塊
- Query Planner: 查詢計劃器
- Query Coordinator :查詢協(xié)調器
- Query Exec Engine:查詢執(zhí)行引擎
- 負責協(xié)調客戶端提交的查詢的執(zhí)行;
- 與HDFS 的數(shù)據節(jié)點(HDFS DN)運行在同一節(jié)點上。
- 給其他Impalad分配任務以及收集其他Impalad的執(zhí)行結果并匯總;
- Impalad也會執(zhí)行其他Impalad給其分配的任務對本地HDFS和HBase 里的部分數(shù)據進行操作。
- State Store:負責運輸局管理和狀態(tài)信息維護;
- 查詢啟動后,系統(tǒng)會創(chuàng)建StateStore的進程;
- 負責收集分布式在集群中各個Impala 進程的資源信息用于查詢調度。
- CLI:用戶訪問接口;
- 提供查詢使用的命令行工具;
- 同時提供Hue 、JDBC及 ODBC 的使用接口;
- Impalad: 負責具體的相關查詢任務;
4.4 Impala 查詢執(zhí)行過程
4.5 Impala 與Hive 比較分析
- 不同點
- Hive 適合于長時間的批處理查詢分析而Impala 適合于實時交互式SQL 查詢。
- Impala 在遇到內存放不下數(shù)據時,不會利用外存所以Impala 目前處理查詢時會受到一定的限制。
- 相同點
- Hive 與Impala 使用相同的存儲數(shù)據池都支持數(shù)據存儲與HDFS和HBase。
- Hive 和Impala 中對SQL 的解釋處理比較相似都是通過詞法分析生成執(zhí)行計劃。
Impala 的目的不在于替代現(xiàn)有的MapReduce工具,使HIve 和 Impala 的配合使用效果最佳,可以先使用HIve 進行數(shù)據轉換處理之后再使用Impala 在 Hive 處理后的數(shù)據集上進行快速的數(shù)據分析。
五.Hive 基本操作
5.1 基本數(shù)據類型
5.2 相關操作
- 創(chuàng)建數(shù)據庫
- 創(chuàng)建表,可以設置存儲路徑。
- 創(chuàng)建視圖
- 查看數(shù)據庫
- 查看表,視圖
- 插入數(shù)據
- 插入或導出數(shù)據
六. Hive 編程
6.1 詞頻統(tǒng)計
6.2 與MapReduce 的不同點
總結
- 上一篇: 计算机网络——标准化工作及相关组织
- 下一篇: 【操作系统复习】进程的定义、组成、组织方