MPP架構之Apache Impala

什麼是MPP?

MPP是massively parallel processing(大規模並行處理)縮寫,是由程序中的多個處理器進行的協同計算處理,每個處理器使用其自己的操作系統和內存。通常,MPP處理器使用某些消息傳遞接口進行通信。在某些實現中,同一應用程序上最多可以使用200個或更多處理器。數據路徑的“互連”設置允許在處理器之間發送消息。通常,MPP的設置更為複雜,需要考慮如何在處理器之間劃分公用數據庫以及如何在處理器之間分配工作。 MPP系統也稱為“loosely coupled(松耦合)”或“shared nothing(無共享)”系統。其中Presto和Apache Impala都是MPP架構的具體實現。這篇文章將介紹Apache Impala及其具體結構。

MPP架構之Apache Impala

什麼是Impala

Impala是一個MPP(大規模並行處理)SQL查詢引擎,用於處理存儲在Hadoop集群中的大量數據。它是一個用C++和Java編寫的開源軟件。與其他用於Hadoop的SQL引擎相比,它提供了高性能和低延遲。

換句話說,Impala是性能最高的SQL引擎(具有類似RDBMS的經驗),它提供了最快的方法來訪問Hadoop分佈式文件系統中存儲的數據。

為什麼選擇Impala?

Impala通過利用諸如HDFS,HBase,Metastore,YARN和Sentry之類的標準組件,將傳統分析數據庫的SQL支持和多用戶性能與Apache Hadoop的可伸縮性和靈活性相結合。

  • 與Hive等其他SQL引擎相比,藉助Impala可以使用SQL更加快速的查詢HDFS或HBase中的數據。
  • Impala可以讀取Hadoop使用的幾乎所有文件格式,例如Parquet,Avro和RCFile。

impala使用與Apache Hive相同的元數據,SQL語法(Hive SQL),ODBC驅動程序和用戶界面(Hue Beeswax),為面向批處理或實時查詢提供了熟悉且統一的平臺。

與Apache Hive不同,Impala並非基於MapReduce算法。它實現了基於守護進程的分佈式體系結構,該守護進程負責在同一臺計算機上運行的查詢執行的所有方面

因此,它減少了使用MapReduce的延遲,這使Impala比Apache Hive更快。

Impala架構

Impala是一個MPP(大規模並行處理)查詢執行引擎,可在Hadoop集群中的許多系統上運行。與傳統存儲系統不同,Impala與存儲引擎脫鉤。它具有三個主要組件,即Impala守護程序(Impalad),Impala Statestore和Impala元數據或元存儲。

MPP架構之Apache Impala

MPP架構之Apache Impala

MPP架構之Apache Impala

MPP架構之Apache Impala

Impala daemon(Impalad)

Impala daemon在安裝Impala的每個節點上運行。它接受來自各種接口的查詢並進行處理。

每當將查詢提交到特定節點上的impalad時,該節點就充當該查詢的“協調器節點”。 Impalad也可以在其他節點上運行來服務多個查詢。接受查詢後,Impalad通過將工作分配給Impala集群中的其他Impala節點來讀取和寫入數據文件並行化查詢。當在各種Immpadad實例上處理查詢時,所有查詢都會將結果返回到中央協調節點。

根據需求,可以將查詢提交給專用的Impalad,也可以以負載均衡的方式提交給集群中的另一個Impalad。

Impala State Store

Impala還有另一個重要的組件稱為Impala狀態存儲,該組件負責檢查每個Impalad的運行狀況,然後將每個Impala守護程序的運行狀況頻繁地中繼到其他守護程序。它可以在運行Impala服務器或群集中其他節點的同一節點上運行。

Impala狀態存儲守護進程的名稱是狀態存儲。 Impalad將其運行狀況報告給Impala狀態存儲守護程序,即狀態存儲狀態。

如果由於任何原因導致節點故障,Statestore會更新所有其他有關此故障的節點,並且一旦其他impalad可以使用此通知,則其他Impala守護程序不會再向受影響的節點分配任何查詢。

Impala Metadata & Meta Store

Impala元數據和元存儲是另一個重要組件。 Impala使用傳統的MySQL或PostgreSQL數據庫存儲表定義。表和列信息以及表定義等重要詳細信息存儲在稱為元存儲的集中式數據庫中。

每個Impala節點都在本地緩存所有元數據。在處理大量數據和/或許多分區時,獲取表特定的元數據可能會花費大量時間。因此,本地存儲的元數據緩存有助於即時提供此類信息。

更新表定義或表數據時,其他Impala守護程序必須在對有關表發出新查詢之前,通過獲取最新的元數據來更新其元數據緩存。


分享到:


相關文章: