1. 程式人生 > >Ambari 架構(三)Ambari Server 架構

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 執行。