Impala 技術原理
Impala 簡介
Impala 是由 Cloudera 公司開發的新型查詢系統,它提供 SQL 語義,能查詢存儲在 Hadoop 的 HDFS 和 HBase 上的 PB 級大數據,在性能上比 Hive 高出 3~30 倍。
Impala 的運行需要依賴於 Hive 的元數據。Impala 是參照 Dremel 系統進行設計的。
Impala 採用了與商用並行關係數據庫類似的分佈式查詢引擎,可以直接與 HDFS 和 HBase 進行交互查詢。
Impala 和 Hive 採用相同的 SQL 語法、ODBC 驅動程序和用戶接口。
組件
圖:Impala 與其他組件的關係
Impala 系統架構
系統架構
圖:Impala 系統架構圖
Impala 和 Hive、HDFS、HBase 等工具是統一部署在一個 Hadoop 平臺上的。Impala 主要由 Impalad,State Store 和 CLI 三部分組成。
(1)Impalad
-
負責協調客戶端提交的查詢的執行
-
包含 Query Planner、Query Coordinator 和 Query Exec Engine 三個模塊。
-
與 HDFS 的數據節點(HDFS DN)運行在同一節點上。
-
給其他 Impalad 分配任務以及收集其他 Impalad 的執行結果進行彙總。
-
Impalad 也會執行其他 Impalad 給其分配的任務,主要就是對本地 HDFS 和 HBase 裏的部分數據進行操作。
(2)State Store
-
會創建一個 statestored 進程。
-
負責收集分佈在集羣中各個 Impalad 進程的資源信息,用於查詢調度。
(3)CLI
-
給用戶提供查詢使用的命令行工具。
-
還提供了 Hue、JDBC 及 ODBC 的使用接口。
說明:Impala 中的元數據直接存儲在 Hive 中。Impala 採用與 Hive 相同的元數據、SQL 語法、ODBC 驅動程序和用戶接口,從而使得在一個 Hadoop 平臺上,可以統一部署 Hive 和 Impala 等分析工具,同時支持批處理和實時查詢。
Impala 查詢執行過程
過程圖
圖:Impala 查詢執行過程圖
Impala 執行查詢的具體過程:
-
第 0 步,當用戶提交查詢前,Impala 先創建一個負責協調客戶端提交的查詢的 Impalad 進程,該進程會向 Impala State Store 提交註冊訂閱信息,State Store 會創建一個 statestored 進程,statestored 進程通過創建多個線程來處理 Impalad 的註冊訂閱信息。
-
第 1 步,用戶通過 CLI 客戶端提交一個查詢到 impalad 進程,Impalad 的 Query Planner 對 SQL 語句進行解析,生成解析樹;然後,Planner 把這個查詢的解析樹變成若干 PlanFragment,發送到 Query Coordinator.
-
第 2 步,Coordinator 通過從 MySQL 元數據庫中獲取元數據,從 HDFS 的名稱節點中獲取數據地址,以得到存儲這個查詢相關數據的所有數據節點。
-
第 3 步,Coordinator 初始化相應 impalad 上的任務執行,即把查詢任務分配給所有存儲這個查詢相關數據的數據節點。
-
第 4 步,Query Executor 通過流式交換中間輸出,並由 Query Coordinator 匯聚來自各個 impalad 的結果。
-
第 5 步,Coordinator 把彙總後的結果返回給 CLI 客戶端。
Impala 與 Hive 的比較
對比
圖:Impala 與 Hive 的對比
Hive 與 Impala 的不同點總結如下:
-
Hive 適合於長時間的批處理查詢分析,而 Impala 適合於實時交互式 SQL 查詢。
-
Hive 依賴於 MapReduce 計算框架,Impala 把執行計劃表現爲一棵完整的執行計劃樹,直接分發執行計劃到各個 Impalad 執行查詢。
-
Hive 在執行過程中,如果內存放不下所有數據,則會使用外存,以保證查詢能順序執行完成,而 Impala 在遇到內存放不下數據時,不會利用外存,所以 Impala 目前處理查詢時會受到一定的限制。
Hive 與 Impala 的相同點總結如下:
-
Hive 與 Impala 使用相同的存儲數據池,都支持把數據存儲於 HDFS 和 HBase 中。
-
Hive 與 Impala 使用相同的元數據。
-
Hive 與 Impala 中對 SQL 的解釋處理比較相似,都是通過詞法分析生成執行計劃。
總結:
-
Impala 的目的不在於替換現有的 MapReduce 工具。
-
把 Hive 與 Impala 配合使用效果最佳。
-
可以先使用 Hive 進行數據轉換處理,之後再使用 Impala 在 Hive 處理後的結果數據集上進行快速的數據分析。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/NVNlYfdRBbe5N-7MSgEAVA