Impala為儲存在Apache Hadoop中的資料,提供了高效能和低延遲的SQL查詢。 使用Impala,您可以通過SELECT、JOIN和彙總函式即時查詢儲存在HDFS或HBase中的資料。
背景資訊
Impala使用與Apache Hive相同的中繼資料、SQL文法(Hive SQL)和ODBC驅動程式等,為面向批處理或即時查詢提供了一個熟悉且統一的平台。
注意事項
如果使用Impala組件,請勿直接通過系統檔案刪除hive表分區目錄,請使用Impala或者Hive命令刪除,否則會導致該表不可用。
優點
為了避免延遲,Impala沒有使用MapReduce,而是使用分散式查詢引擎直接存取資料,該引擎與RDBMS中的查詢引擎相似,其效能比Hive快了幾個數量級,具體取決於查詢和配置的類型。
Impala相對於Hadoop上SQL查詢,優點如下:
由於在資料節點上進行了本地處理,因此避免了網路的限制。
由於無需進行昂貴的資料格式轉換,因此不會產生任何費用。
可以使用單個、開放和統一的中繼資料存放區。
所有資料均可立即查詢,無需等待ETL(Extract-transform-load)。
所有硬體均用於Impala查詢以及MapReduce。
僅需單個電腦集區即可擴充。
Impala的詳細資料,請參見Apache Impala。
架構
E-MapReduce中Impala的架構如下圖。
Impala組件如下:
Impalad
部署在Core節點和Task節點,允許擴容和縮容。
Impala的核心組件是運行在各個節點上的Impala Daemon,進程名為Impalad,負責讀取和寫入資料檔案,接收從
impala-shell命令、Hue、JDBC或ODBC等介面發送的查詢語句,並行查詢語句和分發工作任務到叢集的各個Impala節點上,同時負責將本地計算好的查詢結果發送回協調器節點(Coordinator Node)。Statestored
部署在Master節點的master-1-1機器。
Statestore服務對應的進程名為Statestored,負責管理叢集中所有Impalad進程的健康狀態,並將狀況結果轉寄到所有Impalad進程。當某一個Impalad進程由於節點異常、網路異常或軟體問題等導致節點不可用時,StateStore確保將狀況結果通知其他Impalad進程,當有新的查詢請求時,Impalad進程將不會發送查詢請求到該停用節點。
Catalogd
部署在Master節點的master-1-1機器。
Catalogd負責將每個Impalad進程上的中繼資料變動同步到叢集內其他Impalad進程。由於所有的請求都是通過StateStore進程傳遞的,所以建議StateStore和Catalog運行在同一個節點上。