全部產品
Search
文件中心

E-MapReduce:Impala

更新時間:Mar 13, 2025

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

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運行在同一個節點上。