impala 架構(gòu)

2018-01-03 16:02 更新

Impala是在Hadoop集群中的許多系統(tǒng)上運(yùn)行的MPP(大規(guī)模并行處理)查詢執(zhí)行引擎。 與傳統(tǒng)存儲(chǔ)系統(tǒng)不同,impala與其存儲(chǔ)引擎解耦。 它有三個(gè)主要組件,即Impala daemon(Impalad),Impala Statestore和Impala元數(shù)據(jù)或metastore。

帕拉架構(gòu)

Impala daemon(Impalad)

Impala daemon(也稱為impalad)在安裝Impala的每個(gè)節(jié)點(diǎn)上運(yùn)行。 它接受來(lái)自各種接口的查詢,如impala shell,hue browser等...并處理它們。

每當(dāng)將查詢提交到特定節(jié)點(diǎn)上的impalad時(shí),該節(jié)點(diǎn)充當(dāng)該查詢的“協(xié)調(diào)器節(jié)點(diǎn)”。 Impalad還在其他節(jié)點(diǎn)上運(yùn)行多個(gè)查詢。 接受查詢后,Impalad讀取和寫入數(shù)據(jù)文件,并通過將工作分發(fā)到Impala集群中的其他Impala節(jié)點(diǎn)來(lái)并行化查詢。 當(dāng)查詢處理各種Impalad實(shí)例時(shí),所有查詢都將結(jié)果返回到中央?yún)f(xié)調(diào)節(jié)點(diǎn)。

根據(jù)需要,可以將查詢提交到專用Impalad或以負(fù)載平衡方式提交到集群中的另一Impalad。

Impala 存儲(chǔ)的狀態(tài)

Impala有另一個(gè)稱為Impala State存儲(chǔ)的重要組件,它負(fù)責(zé)檢查每個(gè)Impalad的運(yùn)行狀況,然后經(jīng)常將每個(gè)Impala Daemon運(yùn)行狀況中繼給其他守護(hù)程序。 這可以在運(yùn)行Impala服務(wù)器或群集中的其他節(jié)點(diǎn)的同一節(jié)點(diǎn)上運(yùn)行。
Impala State存儲(chǔ)守護(hù)進(jìn)程的名稱為存儲(chǔ)的狀態(tài)。 Impalad將其運(yùn)行狀況報(bào)告給Impala State存儲(chǔ)守護(hù)程序,即存儲(chǔ)的狀態(tài)。
在由于任何原因?qū)е鹿?jié)點(diǎn)故障的情況下,Statestore將更新所有其他節(jié)點(diǎn)關(guān)于此故障,并且一旦此類通知可用于其他impalad,則其他Impala守護(hù)程序不會(huì)向受影響的節(jié)點(diǎn)分配任何進(jìn)一步的查詢。

Impala元數(shù)據(jù)和元存儲(chǔ)

Impala元數(shù)據(jù)和元存儲(chǔ)是另一個(gè)重要組件。 Impala使用傳統(tǒng)的MySQL或PostgreSQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)表定義。 諸如表和列信息和表定義的重要細(xì)節(jié)存儲(chǔ)在稱為元存儲(chǔ)的集中式數(shù)據(jù)庫(kù)中。
每個(gè)Impala節(jié)點(diǎn)在本地緩存所有元數(shù)據(jù)。 當(dāng)處理極大量的數(shù)據(jù)和/或許多分區(qū)時(shí),獲得表特定的元數(shù)據(jù)可能需要大量的時(shí)間。 因此,本地存儲(chǔ)的元數(shù)據(jù)緩存有助于立即提供這樣的信息。
當(dāng)表定義或表數(shù)據(jù)更新時(shí),其他Impala后臺(tái)進(jìn)程必須通過檢索最新元數(shù)據(jù)來(lái)更新其元數(shù)據(jù)緩存,然后對(duì)相關(guān)表發(fā)出新查詢。

查詢處理接口

要處理查詢,Impala提供了三個(gè)接口,如下所示。

  • Impala-shell - 使用Cloudera VM設(shè)置Impala后,可以通過在編輯器中鍵入impala-shell命令來(lái)啟動(dòng)Impala shell。 我們將在后續(xù)章節(jié)中更多地討論Impala shell。

  • Hue界面 - 您可以使用Hue瀏覽器處理Impala查詢。 在Hue瀏覽器中,您有Impala查詢編輯器,您可以在其中鍵入和執(zhí)行impala查詢。 要訪問此編輯器,首先,您需要登錄到Hue瀏覽器。

  • ODBC / JDBC驅(qū)動(dòng)程序 - 與其他數(shù)據(jù)庫(kù)一樣,Impala提供ODBC / JDBC驅(qū)動(dòng)程序。 使用這些驅(qū)動(dòng)程序,您可以通過支持這些驅(qū)動(dòng)程序的編程語(yǔ)言連接到impala,并構(gòu)建使用這些編程語(yǔ)言在impala中處理查詢的應(yīng)用程序。

查詢執(zhí)行過程

每當(dāng)用戶使用提供的任何接口傳遞查詢時(shí),集群中的Impalads之一就會(huì)接受該查詢。 此Impalad被視為該特定查詢的協(xié)調(diào)程序。
在接收到查詢后,查詢協(xié)調(diào)器使用Hive元存儲(chǔ)中的表模式驗(yàn)證查詢是否合適。 稍后,它從HDFS名稱節(jié)點(diǎn)收集關(guān)于執(zhí)行查詢所需的數(shù)據(jù)的位置的信息,并將該信息發(fā)送到其他impalad以便執(zhí)行查詢。
所有其他Impala守護(hù)程序讀取指定的數(shù)據(jù)塊并處理查詢。 一旦所有守護(hù)程序完成其任務(wù),查詢協(xié)調(diào)器將收集結(jié)果并將其傳遞給用戶。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)