- 表特定語句
- Impala - 建立表語句
- Impala - 插入語句
- Impala - 選擇語句
- Impala - 描述語句
- Impala - 修改表
- Impala - 刪除表
- Impala - 截斷表
- Impala - 顯示錶
- Impala - 建立檢視
- Impala - 修改檢視
- Impala - 刪除檢視
- Impala - 子句
- Impala - ORDER BY 子句
- Impala - GROUP BY 子句
- Impala - HAVING 子句
- Impala - LIMIT 子句
- Impala - OFFSET 子句
- Impala - UNION 子句
- Impala - WITH 子句
- Impala - DISTINCT 運算子
- Impala 有用資源
- Impala - 快速指南
- Impala - 有用資源
- Impala - 討論
Impala - 架構
Impala 是一個執行在 Hadoop 叢集中多個系統上的 MPP(大規模並行處理)查詢執行引擎。與傳統的儲存系統不同,Impala 與其儲存引擎分離。它有三個主要元件,即 Impala 守護程序(Impalad)、Impala 狀態儲存和 Impala 元資料或元儲存。
Impala 守護程序(Impalad)
Impala 守護程序(也稱為 **impalad**)在安裝了 Impala 的每個節點上執行。它接受來自各種介面(如 Impala shell、Hue 瀏覽器等)的查詢,並處理這些查詢。
每當向特定節點上的 impalad 提交查詢時,該節點將作為該查詢的“**協調節點**”。多個查詢也由執行在其他節點上的 Impalad 提供服務。在接受查詢後,Impalad 讀取並寫入資料檔案,並透過將工作分配給 Impala 叢集中的其他 Impala 節點來並行化查詢。當查詢在各種 Impalad 例項上處理時,所有例項都將結果返回到中央協調節點。
根據需要,可以將查詢提交到專用的 Impalad 或以負載均衡的方式提交到叢集中的另一個 Impalad。
Impala 狀態儲存
Impala 還有另一個重要的元件稱為 Impala 狀態儲存,它負責檢查每個 Impalad 的健康狀況,然後定期將每個 Impala 守護程序的健康狀況轉發給其他守護程序。這可以在 Impala 伺服器所在的同一節點或叢集中的其他節點上執行。
Impala 狀態儲存守護程序的名稱是 State stored。Impalad 會將其健康狀態報告給 Impala 狀態儲存守護程序,即 State stored。
如果由於任何原因導致節點發生故障,State store 會將此故障更新到所有其他節點,並且一旦其他 impalad 收到此通知,就不會有其他 Impala 守護程序將任何其他查詢分配給受影響的節點。
Impala 元資料和元儲存
Impala 元資料和元儲存是另一個重要的元件。Impala 使用傳統的 MySQL 或 PostgreSQL 資料庫來儲存表定義。重要的細節,如表和列資訊以及表定義,都儲存在一個稱為元儲存的集中式資料庫中。
每個 Impala 節點都會在本地快取所有元資料。在處理海量資料和/或大量分割槽時,獲取表特定的元資料可能需要大量時間。因此,本地儲存的元資料快取有助於即時提供此類資訊。
當表定義或表資料更新時,其他 Impala 守護程序必須透過檢索最新的元資料來更新其元資料快取,然後才能針對相關表發出新的查詢。
查詢處理介面
為了處理查詢,Impala 提供了以下三個介面。
**Impala-shell** - 使用 Cloudera VM 設定 Impala 後,您可以在編輯器中鍵入命令 **impala-shell** 來啟動 Impala shell。我們將在後續章節中詳細討論 Impala shell。
**Hue 介面** - 您可以使用 Hue 瀏覽器處理 Impala 查詢。在 Hue 瀏覽器中,您有 Impala 查詢編輯器,您可以在其中鍵入和執行 Impala 查詢。要訪問此編輯器,首先需要登入到 Hue 瀏覽器。
**ODBC/JDBC 驅動程式** - 與其他資料庫一樣,Impala 提供了 ODBC/JDBC 驅動程式。使用這些驅動程式,您可以透過支援這些驅動程式的程式語言連線到 Impala,並構建使用這些程式語言在 Impala 中處理查詢的應用程式。
查詢執行過程
每當使用者使用提供的任何介面傳遞查詢時,叢集中的一個 Impalad 都會接受此查詢。此 Impalad 被視為該特定查詢的協調器。
在收到查詢後,查詢協調器使用 Hive 元儲存中的 **表模式** 驗證查詢是否合適。之後,它從 HDFS 名稱節點收集有關執行查詢所需資料位置的資訊,並將此資訊傳送到其他 impalad 以執行查詢。
所有其他 Impala 守護程序讀取指定的資料塊並處理查詢。當所有守護程序完成其任務後,查詢協調器收集結果並將其交付給使用者。