Impala隱藏的驚天祕密


元數據作爲大數據的源泉,有着非常重要的作用。可在Impala中卻隱藏着一個祕密?和元數據有着頗深的淵源,我們一起來追溯!

一、Impala體系結構

(1)每個slave節點運行一個Impala進程,和HDFS的DataNode進程同時協作

(2)兩個其他的進程運行在master節點,用來支持查詢執行

1、State Store進程:爲ImpalaDaemon提供查找服務,並週期性地檢查Impala進程狀態

2、Catalog進程:把元數據的變更同步到所有ImpalaDaemons中

wKiom1hvSFiQB97eAAD7OoUSkmM978.png-wh_50

二、Impala如何執行查詢

(1)Impala daemon查詢執行過程

客戶端(Impala-shell或Hue)連接到Impala daemon,它是Coordinator。Coordinator從State Store請求其他的Impala daemons,並把查詢分發給其他的Impala daemons,最後返回結果給客戶端。

wKiom1hvSGnAg_GlAAD8mSsMxSY065.png-wh_50

三、元數據緩存

根據Impala的查詢功能,我們可以知道在Impala裏面存在元數據的緩存。元數據保存在Hive的Metastore裏面,那麼元數據緩存的作用是什麼呢?就是在Impala啓動的時候,將元數據緩存到Impala daemon的節點。當Impala daemon發起元數據變更的時候,比如說創建表,刪除表,或者修改表的定義,這些都是可以緩存下來的。如果我們去查詢表信息的時候,可以從緩存裏面找到,直接在節點中進行查詢,所以在每個Impala daemon裏面有metadata cache節點用作緩存。

wKioL1hvSHWSZssvAABqzejoX0s238.png-wh_50

而當Impala進程改變了元數據,將會提示catalog服務,Catalog服務通知所有Impala daemons來更新緩存。

wKiom1hvSIawcaVTAAFa0gdUm7c623.png-wh_50

四、外部改變和元數據緩存

我們上面講的都是內部的改變,然而很多時候還會有外部的改變,可外部的改變對於Impala來說是未知的,比如:

(1)Hive、Hcatalog或HueMetadata Manager改變了元數據

(2)數據直接添加到HDFS目錄

wKioL1hvSVeCXQbKAAEs8-9q8hI201.png-wh_50

外部的改變將導致Impala元數據緩存變得不可用,我們必須手動的刷新或驗證Impala的元數據緩存。

當然,這種改變根據改變內容和性質的不同,有不同的方法去更新,比如:

wKioL1hvSWuDDo50AAJQHQLzZXs072.png-wh_50

 

有疑問,歡迎來吐槽,關注微信公衆號“大數據cn”, 每天同行嗨不停,還有更多資源等着你!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章