6g下載網
當前位置: 主頁 > 軟件教程 > 云計算 >

怎么理解impala(impala工作原理是什么)

時間: 2016-01-12 17:11 來源: 本站整理

分享到:

怎么理解impala(impala工作原理是什么),下面給大家介紹怎么理解impala,impala工作原理是什么。

Impala是hadoop上交互式MPP SQL引擎, 也是目前性能最好的開源SQL-on-hadoop方案。 如下圖所示, impala性能超過SparkSQL、 Presto、 Hive。

怎么理解impala(impala工作原理是什么)

impala與hadoop生態結合緊密

(1) HDFS是impala最主要的數據源。 除此之外, impala也支持HBase,甚至支持S3存儲。

(2) impala表定義存儲在hive metastore中, 支持讀取hive表定義。

(3) 支持Parquet, RCFile, sequence file, txt等常見文件格式, 其中Parquet是列存格式,性能最佳。

(4) 集成YARN。

SQL支持度:

支持SQL92中的大部分select語句, 以及SQL2003標準中的分析函數。 不支持DELETE和UPDATE, 但是支持批量裝載數據(insert into select, LOAD DATA) 和批量刪除數據(drop partition)。除此之外, 用戶也可直接操作HDFS文件實現數據裝載和清理。

怎么理解impala(impala工作原理是什么)

架構如上圖所示。

impalad是最核心組件, 負責接收用戶查詢請求(ODBC協議), 生成查詢計劃, 協調其他impalad執行查詢計劃, 并匯總查詢結果返回給用戶。 impalad部署在每個datanode上, 一般來說impalad只讀取本機數據, 盡量避免遠程訪問HDFS文件數據。

statestore負責集群元數通知和分發。 元數據包括catalog和集群成員關系等, SQL查詢依賴于這些元數據, 所以元數據會緩存在每個impalad節點。 statestore通過publish/subsriber機制確保impalad及時拿到最新元數據, 但是它本身不需要理解元數據, 也不需要持久化元數據 。 statestore宕機重啟時, 元數據可從權威數據源或者從impalad重構, 因此statestore雖是全局單點, 但也不影響可用性。

catalogd負責數據庫、表等catalog信息, 實現DDL功能, catalog更新通過statestore分發給impalad。

查詢執行

impalad分為frontend和backend兩個層次, frondend用java實現(通過JNI嵌入impalad), 負責查詢計劃生成, 而backend用C++實現, 負責查詢執行。

frontend生成查詢計劃分為兩個階段:(1)生成單機查詢計劃,單機執行計劃與關系數據庫執行計劃相同,所用查詢優化方法也類似。(2)生成分布式查詢計劃。 根據單機執行計劃, 生成真正可執行的分布式執行計劃,降低數據移動, 盡量把數據和計算放在一起。

怎么理解impala(impala工作原理是什么)

上圖是SQL查詢例子, 該SQL的目標是在三表join的基礎上算聚集, 并按照聚集列排序取topN。 impala的查詢優化器支持代價模型: 利用表和分區的cardinality,每列的distinct值個數等統計數據, impala可估算執行計劃代價, 并生成較優的執行計劃。 上圖左邊是frontend查詢優化器生成的單機查詢計劃, 與傳統關系數據庫不同, 單機查詢計劃不能直接執行, 必須轉換成如圖右半部分所示的分布式查詢計劃。 該分布式查詢計劃共分成6個segment(圖中彩色無邊框圓角矩形), 每個segment是可以被單臺服務器獨立執行的計劃子樹。

impala支持兩種分布式join方式, 表廣播和哈希重分布:表廣播方式保持一個表的數據不動, 將另一個表廣播到所有相關節點(圖中t3); 哈希重分布的原理是根據join字段哈希值重新分布兩張表數據(譬如圖中t1和t2)。分布式計劃中的聚集函數分拆為兩個階段執行。第一步針對本地數據進行分組聚合(Pre-AGG)以降低數據量, 并進行數據重分步, 第二步, 進一步匯總之前的聚集結果(mergeAgg)計算出最終結果。 與聚集函數類似, topN也是分為兩個階段執行, (1)本地排序取topN,以降低數據量; (2) merge sort得到最終topN結果。

Backend從frontend接收plan segment并執行, 執行性能非常關鍵,impala采取的查詢性能優化措施有

向量執行。 一次getNext處理一批記錄, 多個操作符可以做pipeline。

LLVM編譯執行, CPU密集型查詢效率提升5倍以上。

IO本地化。 利用HDFS short-circuit local read功能,實現本地文件讀取

Parquet列存,相比其他格式性能最高提升5倍。

資源管理

impala通常與MR等離線任務運行在一個集群上, 通過YARN統一管理資源, 如何同時滿足交互式查詢和離線查詢兩種需求具有較大挑戰性。 YARN通過全局唯一的Resource Mananger調度資源, 好處是RM擁有整個集群全局信息,能做出更好調度決策, 缺點是資源分配的性能不足。 Impala每個查詢都需要分配資源, 當每秒查詢數上千時, YARN資源分配的響應時間變的很長, 影響到查詢性能。 目前通過兩個措施解決這個問題:(1)引入快速、非集中式的查詢準入機制, 控制查詢并發度。(2)LLAM(low latency application master)通過緩存資源, 批量分配,增量分配等方式實現降低資源分配延時。

相關系統對比

怎么理解impala(impala工作原理是什么)

(責任編輯:6g下載網)
標簽:impala

分享到:

------分隔線----------------------------
? 35选7福利彩票