大数据技术原理与应用学习笔记(九)
大數據技術原理與應用學習筆記(九)
- 本系列歷史文章
- 數據倉庫Hive
- 數據倉庫概念
- Hive簡介
- Hive系統架構
- 用戶接口模塊
- Hive HA基本原理——(高可用性)
- Hive的工作原理
- 由SQL轉換為MapReduce的工作原理
- Impala——開源大數據分析引擎
- Impala簡介
- Impala架構
- Impalad
- State Store
- CLI——執行查詢的命令行工具
- Impala執行過程
- Hive與Impala的比較
- Hive編程實踐
本系列歷史文章
大數據技術原理與應用學習筆記(一)
大數據技術原理與應用學習筆記(二)
大數據技術原理與應用學習筆記(三)
大數據技術原理與應用學習筆記(四)
大數據技術原理與應用學習筆記(五)
大數據技術原理與應用學習筆記(六)
大數據技術原理與應用學習筆記(七)
大數據技術原理與應用學習筆記(八)
數據倉庫Hive
數據倉庫概念
數據倉庫: 數據倉庫是一個面向主題的集成的相對穩定的、反映歷史變化的數據集合,用來支撐管理決策。
數據倉庫的體系結構包括:數據源、數據存儲和管理、分析、挖掘引擎及應用。
傳統數據倉庫面臨的挑戰:
- 無法滿足快速增長的海量數據存儲需求
- 無法有效處理不同類型的數據
- 計算和處理能力不足
Hive簡介
Hive——構建在Hadoop之上的數據倉庫工具。
Hive本身并不存儲處理數據
- 依賴于HDFS存儲
- 依賴于MapReduce處理
Hive采用HiveQL語言
Hive兩方面特性:
- 采用批處理方式處理海量數據
- Hive提供了一系列對數據進行提取、轉換、加載(ETL)的工具
Hive與其他組件的關系:
- Pig可替代Hive用于數據倉庫的ETL環節
- Hive主要用于數據倉庫海量數據的批處理分析
- HBase支持實時數據訪問,與Hive互補
Hive與傳統數據庫的對比:
如下表:
| 數據存儲 | HDFS | 本地文件系統 |
| 數據插入 | 支持批量導入 | 支持單條和批量導入 |
| 數據更新 | 不支持 | 支持 |
| 索引 | 支持 | 支持 |
| 分區 | 支持 | 支持 |
| 執行引擎 | MapReduce、Tez、Spark | 使用自身引擎 |
| 執行延遲 | 高 | 低 |
| 擴展性 | 好 | 有限 |
Hive系統架構
用戶接口模塊
用戶接口模塊主要包括:
- CLI——命令行
- HWI——Hive的Web接口
- JDBC和ODBC——開放數據庫連接接口
- Thrift Server——基于Thrift架構開發的接口
包含編譯器、優化器、執行器。負責把HiveQL語句轉換成MapReduce作業。
獨立的關系型數據庫。
Hive HA基本原理——(高可用性)
Hive HA基本原理如圖所示:
在Hive HA中,在Hadoop集群上構建的數據倉庫是由多個Hive實例進行管理的,這些Hive實例被納入一個資源池中,并由HAProxy提供一個統一的對外接口。客戶端的查詢請求首先訪問HAProxy,由HAProxy對訪問請求進行轉發。HAProxy收到請求后,會輪詢資源池里可用的Hive實例,執行邏輯可用性測試。如果某個Hive實例邏輯可用,就會把客戶端的訪問請求轉發到該Hive實例,如果該Hive實例邏輯不可用,就把它放入黑名單,并繼續從資源池取出下一個Hive實例進行邏輯可用性測試,如果重啟成功,就再次放入資源池中。
Hive的工作原理
由SQL轉換為MapReduce的工作原理
- Input(SQL)轉換為抽象語法樹(AST)
- AST轉換成查詢塊(Query Block)
- 將Query Block轉換成邏輯查詢計劃
- 重寫邏輯查詢計劃,合并優化等,減少MapReduce的任務數量
- 轉換成MapReduce作業
- 優化生成最終版的執行計劃。
- 執行并輸出
Impala——開源大數據分析引擎
Impala簡介
Impala是由Cloudera公司開發的新型查詢系統。Impala的目的不在于替換現有的MapReduce工具,而是提供一個統一的平臺用于實時查詢。
- 與Hive類似,Impala也可以直接與HDFS和HBase進行交互。
Hive底層執行使用的是MapReduce,所以主要用于處理長時間運行的批處理任務,例如批量提取、轉化、加載類型的任務。 - Impala通過與商用并行關系數據庫中類似的分布式查詢引擎,可以直接從HDFS或者HBase中用SQL語句查詢數據,從而大大降低了延遲,主要用于實時查詢。
- Impala和Hive采用相同的SQL語法、ODBC 驅動程序和用戶接口。
Impala架構
Impala主要由3部分構成:Impalad、State Store、CLI
Impalad
- Query Planner
- Query Coordinator
- Query Exec Engine
作用:
- 協調Client提交的查詢的執行
- 給其他Impalad分配任務
- 收集其他Impalad執行結果并匯總
State Store
創建一個State Stored進程,負責收集分布在集群中各個Impalad進程的資源信息用于查詢調度。
CLI——執行查詢的命令行工具
Notes:
- Impala元數據直接存儲在Hive中
- 與HIve相同的元數據,相同的SQL,相同的ODBC驅動程序和用戶接口
- 目的:可以在Hadoop統一部署Hive/Impala使同時滿足批處理和實時處理
Impala執行過程
執行過程可簡略記為:
- 注冊和訂閱
- 提交查詢
- 獲取元數據與數據地址
- 分發查詢任務
- 匯聚結果
- 返回結果
Hive與Impala的比較
不同點:
- Hive適合長時間批處理查詢分析,而Impala適合實時交互式SQL查詢;
- Hive依賴于MapReduce,而Impala把執行計劃表現為完整的執行計劃樹;
- Hive內存不夠時,利用外存,而Impala在內存不夠時,也不會用外存(適合小規模);
相同點:
- Hive與Impala使用相同的存儲數據池,支持存入HDFS、HBase
- Hive與Impala使用相同的元數據
- Hive與Impala中對SQL解釋處理較為相似(都是通過詞法分析生成執行計劃)
在實際應用中,由于Hive和Impala的不同特性,可以先由Hive進行數據轉換,在用Impala進行數據分析。
Hive編程實踐
關于Hive的編程實踐可參考廈大數據庫博客:基于Hadoop的數據倉庫Hive 學習指南
總結
以上是生活随笔為你收集整理的大数据技术原理与应用学习笔记(九)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spyder kernel died 错
- 下一篇: jQuery使用(八):运动方法