和impala Impala的元件和架構介紹

2021-10-12 21:20:09 字數 3135 閱讀 8151

impala是由cloudera公司開發的新型查詢系統,能夠對儲存在hdfs、hbase以及s3上的資料進行快速的互動式sql查詢。另外,impala與hive使用了統一的儲存系統、同樣的元資料庫、sql語法(hive sql)、odbc驅動和使用者互動介面(hue),impala對實時的或者面向批處理的查詢提供了乙個統一的平台,impala在效能上比hive高出3~30倍。

impala是用於查詢大資料的工具的補充,impala不是取代構建在mapreduce之上的批處理框架,比如hive。hive和其他的基於mapreduce的框架適合處理長時間執行的批處理作業,比如涉及到批處理的etl型別的作業。

注意:impala於2023年11月15日從apache的孵化器畢業。

常見的資料訪問介面,包括jdbc driver、odbc driver

支援impala-shell命令列介面

kerberos授權

為了避免延遲,impala繞過mapreduce,採用了與商用並行關聯式資料庫類似的分布式查詢引擎,可以直接與hdfs和hbase進行互動查詢,效能上比hive要快。

impala server 是乙個分布式的大規模並行處理(mpp)的資料庫引擎, 它由執行在集群中特定主機上的不同守護程序組成。其架構圖如下圖所示:

我們可以向執行在datanode上的任何impalad程序提交乙個查詢,提交查詢的這個節點將作為這個查詢的「協調者節點」(coordinator)為這個查詢提供服務。其他節點的運算結果會被傳輸到協調者節點,協調者節點將最終的運算結果返回。當使用 mpala-shell命令進行功能性測試的時候,為了方便起見,我們總是會連線到同乙個節點上的impalad。但是對於生產環境中的impala集群而言,必須要考慮到各個節點的負載均衡,建議使用jdbc/odbc介面以輪詢(round-robin)的方式提交到不同的impalad程序上。

為了了解其他節點的健康狀況和負載,impalad程序會一直與 statestore保持通訊,用以確保哪個節點是健康的並且可以接受任務的。

當impala集群中建立,修改或者刪除了物件,或者進行了insert/load datat操作,catalogd程序會向所有的節點廣播訊息,以保證每個impalad節點都能夠及時地了解整個集群中物件元資料的最新狀態。後台程序間的通訊最大限度的降低了對 refresh/invalidate metadata命令的依賴。(但是對於和impala1.2版本之前的節點通訊,還是需要顯示指定)

對impala 2.9或者更高版本,可以控制哪乙個節點為查詢協調器( query coordinators ),也可以控制哪乙個節點為查詢協調器(query executors), 能夠提高大型集群上高併發工作負載的可擴充套件性。

statestore檢查集群中impalad程序節點的健康狀況,並不斷地將健康狀況結果**給所有的impalad程序節點。statestore程序的名稱為statestored。乙個impala集群只需要乙個statestored程序,如果impala節點由於硬體故障、網路錯誤、軟體問題或者其他的原因導致節點不可用,statestore將確保這條資訊及時地傳達到所有的impalad程序節點上,當有新的查詢請求時 ,impalad程序節點將不會把查詢請求放鬆到不可用的節點上。

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

對於負載平衡和高可用性都適用於impalad守護程序。statestore和catalog程序對高可用性沒有特殊要求,因為即便這些守護程序存在問題,也不會導致資料丟失。如果這些守護程序因中斷而變得不可用,則可以停止impala服務,刪除impala statestore和impala catalog角色,將角色新增到不同的主機上,並重新啟動impala服務。

當impala集群中執行的sql語句會引起元資料變化時,catalog服務會將這些變化推送到其他的impalad程序節點上。catalog服務對應的程序名稱為catalogd,乙個impala集群只需要乙個catalogd程序 。由於所有的請求都是通過statestore程序傳送過來的,所以建議讓statestore和catalog執行在同乙個節點上。

catalog服務大大地減少了對 refresh / invalidate metadata 語句的元資料同步的需求。在建立和刪除表的過程中,catalogd程序負責連線元資料庫並進行元資料更新操作,從而確保不必執行refresh / invalidate metadata這樣的元資料同步語句。但是,如果通過hive執行了建立表 、載入資料等操作,則在impala中執行查詢之前需要先執行 refresh或者invalidate metadata 命令。

第0步,當使用者提交查詢前,impala先建立乙個負責協調客戶端提交的查詢的impalad程序,該程序會向impala state store提交註冊訂閱資訊,state store會建立乙個statestored程序,statestored程序通過建立多個執行緒來處理impalad的註冊訂閱資訊。

第1步,使用者通過cli客戶端提交乙個查詢到impalad程序,impalad的query planner對sql語句進行解析,生成解析樹;然後,planner把這個查詢的解析樹變成若干planfragment,傳送到query coordinator

第3步,coordinator初始化相應impalad上的任務執行,即把查詢任務分配給所有儲存這個查詢相關資料的資料節點。

第4步,query executor通過流式交換中間輸出,並由query coordinator匯聚來自各個impalad的結果。

第5步,coordinator把彙總後的結果返回給cli客戶端。

Linux 中的 wheel 組和 staff 組

wheel 組的概念 wheel 組的概念繼承自 unix。當伺服器需要進行一些日常系統管理員無法執行的高階維護時,往往就要用到 root 許可權 而 wheel 組就是乙個包含這些特殊許可權的使用者池 也就是說,如果你不是 wheel 組的成員,就無法取得 root 許可權進行一些特權的操作 為什...

使用者和組的管理

linux7使用者和組的管理,還請多指導 redhat 7.x版本 超級使用者 root uid 0 普通使用者 uid 1000 65535 系統使用者 偽使用者 uid 1 999 redhat7.x版本之前的版本 例如6.4 6.0 5.0 4.0 3.0等 超級使用者 root uid 0 ...

使用者和組的管理

一.使用者管理 1.使用者資訊都在 etc passwd下 使用者名稱 密碼 uid gid 說明 家目錄 使用者使用的shell 使用者認證資訊 etc shadow下 最短有效期 最長有效期 警告期 非活躍期 賬號到賬日 y m d a b c d e 引數 a m b m c w d i e ...