Ambari系统架构
一、Ambari系統(tǒng)架構(gòu)
Ambari框架采用的是Server/Client的模式,主要由兩部分組成:ambari-agent和ambari-server。ambari依賴其它已經(jīng)成熟的工具,例如其ambari-server 就依賴python,而ambari-agent還同時(shí)依賴ruby, puppet,facter等工具,還有它也依賴一些監(jiān)控工具nagios和ganglia用于監(jiān)控集群狀況。
- ambari-server主要管理部署在每個(gè)節(jié)點(diǎn)上的管理監(jiān)控程序。
- Ambari-agent 部署在監(jiān)控節(jié)點(diǎn)上運(yùn)行的管理監(jiān)控程序。
- ambari-web 作為用戶與 Ambari server 交互的。
二、Ambari-agent內(nèi)部架構(gòu)
Ambari-agent是一個(gè)無狀態(tài)的,其功能分兩部分:
- 采集所在節(jié)點(diǎn)的信息并且匯總發(fā)送心跳發(fā)送匯報(bào)給ambari-server。
- 處理ambari-server的執(zhí)行請(qǐng)求。
因此它有兩種隊(duì)列:
三、Ambari-server內(nèi)部架構(gòu)
三種狀態(tài):
- Live Cluster State:集群現(xiàn)有狀態(tài),各個(gè)節(jié)點(diǎn)匯報(bào)上來的狀態(tài)信息會(huì)更改該狀態(tài);
- Desired State:用戶希望該節(jié)點(diǎn)所處狀態(tài),是用戶在頁面進(jìn)行了一系列的操作,需要更改某些服務(wù)的狀態(tài),這些狀態(tài)還沒有在節(jié)點(diǎn)上產(chǎn)生作用;
- Action State:操作狀態(tài),是狀態(tài)改變時(shí)的請(qǐng)求狀態(tài),也可以看作是一種中間狀態(tài),這種狀態(tài)可以輔助LiveCluster State向Desired State狀態(tài)轉(zhuǎn)變。
Heartbeat Handler模塊用于接收各個(gè)agent的心跳請(qǐng)求(心跳請(qǐng)求里面主要包含兩類信息:節(jié)點(diǎn)狀態(tài)信息和返回的操作結(jié)果),把節(jié)點(diǎn)狀態(tài)信息傳遞給FSM狀態(tài)機(jī)去維護(hù)著該節(jié)點(diǎn)的狀態(tài),并且把返回的操作結(jié)果信息返回給Action Manager去做進(jìn)一步的處理。
Coordinator模塊又可以稱為API handler,主要在接收WEB端操作請(qǐng)求后,會(huì)檢查它是否符合要求,stageplanner分解成一組操作,最后提供給ActionManager去完成執(zhí)行操作。
因此,從上圖就可以看出,Ambari-Server的所有狀態(tài)信息的維護(hù)和變更都會(huì)記錄在數(shù)據(jù)庫中,用戶做一些更改服務(wù)的操作都會(huì)在數(shù)據(jù)庫上做一些相應(yīng)的記錄,同時(shí),agent通過心跳來獲得數(shù)據(jù)庫的變更歷史。
四、Ambari-web內(nèi)部架構(gòu)
Ambari-web使用了一個(gè)流行的前端Embar.js MVC框架實(shí)現(xiàn),Embar.js是一個(gè)TodoMVC框架,它涵蓋了現(xiàn)今典型的單頁面應(yīng)用(single page application)幾乎所有的行為。
使用了nodejs
使用brunch 作為項(xiàng)目的構(gòu)建管理工具
Brunch ,是一個(gè)超快的HTML5構(gòu)建工具。它有如下功能:
(1)、編譯你的腳本、模板、樣式、鏈接它們。
(2)、將腳本和模板封裝進(jìn)common.js/AMD模塊里,鏈接腳本和樣式。
(3)、為鏈接文件生成源地圖,復(fù)制資源和靜態(tài)文件。
(4)、通過縮減代碼和優(yōu)化圖片來收縮輸出,看管你的文件更改。
(5)、并通過控制臺(tái)和系統(tǒng)提示通知你錯(cuò)誤。
Nodejs 是一個(gè)基于Chrome JavaScript運(yùn)行時(shí)建立的一個(gè)平臺(tái),用來方便的搭建快速的易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用,NodeJS借助事件驅(qū)動(dòng),非阻塞I/O模型變得輕量和高效,非常適合運(yùn)行在分布式設(shè)備的數(shù)據(jù)密集型的實(shí)時(shí)應(yīng)用。
Ambari-web 目錄結(jié)構(gòu)
| app/ | 主要應(yīng)用程序代碼。包括Ember中的view、templates、controllers、models、routes |
| config.coffee | Brunch應(yīng)用程序生成器的配置文件 |
| package.json | Npm包管理配置文件 |
| test/ | 測(cè)試文件 |
| vendor/ | Javascript庫和樣式表適用第三方庫。 |
Ambari-web/app/
| assets/ | 靜態(tài)文件 |
| controllers/ | 控制器 |
| data/ | 數(shù)據(jù) |
| mappers/ | JSON數(shù)據(jù)到Client的Ember實(shí)體的映射 |
| models | MVC中的Model |
| routes/ | 路由器 |
| styles | 樣式文件 |
| views | 試圖文件 |
| templates/ | 頁面模板 |
| app.js | Ember主程序文件 |
| config.js | 配置文件 |
總結(jié)
以上是生活随笔為你收集整理的Ambari系统架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vim从理解到应用
- 下一篇: Real提示“作为受限用户,您无足够的w