Impala簡介------學習筆記

Impala是由Cloudera公司開發的新型查詢系統,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase上的PB級大數據,在性能上比Hive高出3~30倍
Impala的運行需要依賴於Hive的元數據
Impala是參照 Dremel系統進行設計的
Impala採用了與商用並行關係數據庫類似的分佈式查詢引擎,可以直接與HDFS和HBase進行交互查詢

Impala和Hive採用相同的SQL語法、ODBC驅動程序和用戶接口



註釋:虛線框爲自身組件,實線框爲外部結構;

Impala主要由Impalad,State Store和CLI三部分組成:

Impalad:
負責協調客戶端提交的查詢的執行
包含Query Planner、Query Coordinator和Query Exec Engine三個模塊
與HDFS的數據節點(HDFS DN)運行在同一節點上
給其他Impalad分配任務以及收集其他Impalad的執行結果進行彙總
Impalad也會執行其他Impalad給其分配的任務,主要就是對本地HDFS和HBase裏的部分數據進行操作
State Store:
會創建一個statestored進程

負責收集分佈在集羣中各個Impalad進程的資源信息,用於查詢調度

CLI:
給用戶提供查詢使用的命令行工具

還提供了Hue、JDBC及ODBC的使用接口

說明:

Impala中的元數據直接存儲在Hive中。Impala採用與Hive相同的元數據、SQL語法、ODBC驅動程序和用戶接口,從而使得在一個Hadoop平臺上,可以統一部署Hive和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客戶端。

Hive與Impala的不同點總結如下:

1、Hive適合批處理;Impala適合實時交互;

2、Hive一來MapReduce計算框架,Impala把執行計劃表現爲一棵完整的執行計劃樹,直接分發執行計劃到各個Impalad執行查詢

3、Hive可以溢寫磁盤;Impala受限於內存大小;

Hive與Impala的相同點總結如下:

1、相同存儲數據池HDFS、HBase;

2、相同元數據;

3、對SQL解釋處理比較相似(通過詞法分析生成執行計劃XML文件);

總結:

Impala是彌補Hive中的不足之處而非替代;

Impala的目的不在於替換現有的MapReduce工具
把Hive與Impala配合使用效果最佳
可以先使用Hive進行數據轉換處理,之後再使用Impala在Hive處理後的結果數據集上進行快速的數據分析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章