Impala之概念及架構

2021-09-30 12:56:11 字數 3007 閱讀 1133

impala伺服器是乙個分布式,大規模並行處理(mpp)資料庫引擎。它包括執行在cdh集群主機上的不同後台程序。

1,客戶端

有三類客戶端可以與impala進行互動:

基於驅動程式的客戶端(odbc driver和jdbc driver,其中jdbc driver支援hive1與hive2風格的驅動形式);

hue介面,可以通過hue beeswax介面來與impala進行互動;

impala shell命令列介面,類似關聯式資料庫提供一些命令列即可,可以直接使用sql語句與impala互動。

2,hive metastore

impala和hive共享 metastore,來儲存元資料。

3,cloudera impala

impala會在hdfs集群的datanode上啟動程序,協調位於集群上的多個impala程序(impalad),以及執行查詢。在impala架構中,每個impala節點都可以接收來自客戶端的查詢請求,然後負責解析查詢,生成查詢計畫,並進行優化,協調查詢請求在其他的多個impala節點上並行執行,最後有負責接收查詢請求的impala節點來彙總結果,響應客戶端。

4,hbase和hdfs

hbase和hdfs儲存著實際需要查詢的大資料。

1,impala daemon程序是執行在集群每個節點上的守護程序,是impala的核心元件之一。每個節點上這個程序名稱為impalad。

2,impalad 負責讀寫資料檔案,接收來自impala-shell、hue、jdbc或者odbc的查詢請求,與集群中的其他節點分布式並行地工作,並將本節點的查詢結果返回給中心協調者節點。

3,使用者可以向集群節點中的任何乙個節點提交查詢請求,提交查詢的這個節點將作為這個查詢的「協調者節點(coordinator node )」,其他節點的運算結果會被傳輸到協調者節點,協調者節點將最終運算結果返回。執行在生產環境上的impala集群,我們必須考慮到各個節點的負載均衡,建議使用jdbc/odbc介面以round-robin的方式將每個查詢提交到不同節點的impalad程序上。

4,下面是impala的架構圖:

上面可以看出,位於datanode上的每個impalad程序,都具有query planner、query coordinator、query exec engine這幾個元件,每個impala節點在功能集合上是對等的,也就是說,任何乙個節點都能接收外部查詢請求。

5,impalad 程序通過持續地和statestore 通訊來確認自己所在的節點是否健康,是否可以接受新的任務請求。

6,當impala集群中建立,修改或者刪除了物件,或者進行了insert/load data操作,catalogd程序要向所有節點廣播訊息,以保證所有impalad節點都能夠及時地了解整個集群中物件元資料的最新狀態。

1,impala  的另乙個核心元件statestore,負責檢測整個集群中所有節點上程序的健康狀況,並不斷地將監控狀況的結果**給集群的impalad程序節點。statstore 程序名稱為 statestored。

2,乙個impala 集群上僅需要乙個statestored程序節點。當impala 集群中有節點因硬體故障,網路錯誤,軟體問題或是其他的原因導致節點不可用,statestore講確保這一資訊及時地傳達到所有的impalad程序節點上,當有新的查詢請求時,impalad程序節點將不會把查詢請求傳送到不可用的節點上。

3,statestore的目的是在集群故障時對impalad程序節點同步資訊,所以對於乙個正常執行的impala集群來說,它並不是乙個關鍵程序。如果statestore不可用,impalad程序節點之間仍然可以相互協調正常對外提供分布式查詢。在statestore不可用的情況下,impalad程序節點失敗,只是讓集群不再那麼強勁。當statestore恢復正常時,它將重新與impalad程序節點建立通訊,恢復對集群的監控功能。

1,當impala集群中執行的sql語句會引起元資料變化時,catalog服務負責將這些變化推送到其他impalad程序節點上。catalog服務對應的程序名稱為catalogd。

2,乙個impala集群只需要乙個catalogd程序。因為所有的請求都是通過statestored程序傳送過來,所以讓statestored和catalogd運作在同乙個節點是乙個很不錯的選擇。

3,通常情況下,如果在乙個impalad程序節點上執行了create database,drop database,create table,alter table,drop table等語句時,在其他impalad程序節點執行乙個查詢之前總是要執行invalidate metadata語句來同步物件的元資料資訊。同理,如果在乙個impalad程序節點執行了insert語句,其他節點在執行乙個查詢之前需要執行refresh table_name,以便讓這個節點知道這個表有新增的資料檔案。當通過impala執行可能引起元資料變化的語句時,catalog服務確保不必再執行refresh/invalidate metadata的元資料同步語句。但是通過hive程序建立表,載入資料等類似的操作時,還是需要在impalad程序節點上執行refresh/invalidate metadata語句。

1,impala的每乙個節點都cache有元資料,避免每次請求都直接去公共的元資料儲存庫中查詢。如果每次都去元資料的儲存庫中查詢,則當表的體積特別大,含有的分割槽和列特別多的時候會耗費大量的時間。 如果表的schema或是資料被更改了,則所有的impalad都需要重新更新metastore去替換老的metastore,應用refresh命令去更新元資料。

預設為自動的執行refresh,如果我們知道某乙個表被改變了則我們也可以手動的執行refresh table_name,主動更新元資料。

2,對於通過hive建立、刪除、修改或者其他型別的操作,impala都無法自動識別hive中的元資料的變更情況。這時需要連線到impala-shell後,執行invalidate metadata語句,改語句會使所有的impala元資料失效並重新從元資料庫同步元資料資訊。

3,對於通過hive載入、插入的資料操作,或者通過hdfs命令對資料檔案進行的變更操作,impala都無法自動識別資料的變更情況。這時需要連線到impala-shell後,執行refresh table_name語句,使impala識別資料的變更。

Impala概念及架構解析

impala伺服器是乙個分布式 大規模並行處理 mpp 資料庫引擎。執行在集群每個節點上的守護程序,名稱為impalad。負責讀寫資料檔案 接受查詢請求,將查詢結果返回給中心協調者節點。statestore搜尋集群中impalad程序節點的健康狀態,並不斷將健康狀態的結果 給所有的impalad程序...

Impala概念及架構知識點詳解

impala伺服器是乙個分布式 大規模並行處理 mpp 資料庫引擎。執行在集群每個節點上的守護程序,名稱為impalad。負責讀寫資料檔案 接受查詢請求,將查詢結果返回給中心協調者節點。statestore搜尋集群中impalad程序節點的健康狀態,並不斷將健康狀態的結果 給所有的impalad程序...

Kafka 基礎概念及架構

kafka是 個分布式 分割槽的 多副本的 多 產者 多訂閱者,基於zookeeper協調的分布式 志系統 也可以當做mq系統 常 可以 於web nginx 志 訪問 志,訊息服務等等。kafka主要應 場景 志收集系統和訊息系統 kafka主要設計目標 kafka訊息傳遞模式 發布 訂閱模式 不...