Ambari 架構(三)Ambari Server 架構
作者:Base
Ambari Server 架構圖,由圖中看,主要有4部分:
Resource Service:資源服務,用來接收前端的 Rest 請求。關於 Resource 的幾個基本概念:
- Resource:Ambari Server 定義了各種各樣的 Resource,比如 Config、User、Cluster、
- Component、Alert 等都是一種 Resource。
- Resource Type:每種 Resource 都對應一個 ResourceType,標記所屬的資源型別。
- Resource Service:每種 Resource 都對應一個 Resource Service,比如ConfigService、UserService等,Service 中定義了相對應 Resource 的 Rest API。
- Resource Provider:每種 Resource 都對應一個 ResourceProvider,比如ConfigResourceProvider、UserResourceProvider等,對 Resource 的具體操作,都封裝在 Provider 中。
HeartBeatHandler:處理 Agent 的 Heartbeat 請求。
ActionQueue:每個 Host 都有一個 ActionQueue 記錄著需要這臺 Host 執行的命令。
FSM:維護元件狀態的有限狀態機。
簡述一下 Ambari Server 的工作流程:
前端請求處理流程:前端提交一個 Rest 請求,相應 Resource 的 Service 處理請求,根據 ResourceType 找到對應的 ResourceProvider 執行具體的操作;如果存在需要 Agent 執行的操作,則把操作儲存到相應 Host 的 ActionQueue 中;如果需要改變元件的狀態,則需要操作 FSM。
Agent 請求處理流程:Agent Heartbeat 每10秒執行一次,Heartbeat Request 會攜帶命令的執行情況、元件狀態以及 Host 狀態等資訊,HeartBeatHandler 會根據彙報上來的命令執行情況,去操作 FSM 來維護元件的狀態;HeartBeatHandler 會從 ActionQueue 中取出需要 Host 執行的命令、修改的配置、Alert 定義等資訊,通過 HeartBeat Response 返回給 Agent 執行。
總體來說由於 Ambari Server 和 Ambari Agent 之間是通過短連線進行通訊,所以 Server 無法把需要執行的命令,直接推送給相應的 Agent,所以需要 ActionQueue 來儲存命令,然後通過 Heartbeat 把命令下發給 Agent 執行。