Ambari系統架構

一、Ambari系統架構

Ambari框架采用的是Server/Client的模式,主要由兩部分組成:ambari-agent和ambari-server。ambari依賴其它已經成熟的工具,例如其ambari-server 就依賴python,而ambari-agent還同時依賴ruby, puppet,facter等工具,還有它也依賴一些監控工具nagios和ganglia用于監控集群狀況。

  • ambari-server主要管理部署在每個節點上的管理監控程序。
  • Ambari-agent 部署在監控節點上運行的管理監控程序。
  • ambari-web 作為用戶與 Ambari server 交互的。

在這里插入圖片描述

二、Ambari-agent內部架構

Ambari-agent是一個無狀態的,其功能分兩部分:

  • 采集所在節點的信息并且匯總發送心跳發送匯報給ambari-server。
  • 處理ambari-server的執行請求。

因此它有兩種隊列:

  1. 消息隊列Message Queue,或稱為ResultQueue。包括節點狀態信息(包括注冊信息)和執行結果信息,并且匯總后通過心跳發送給ambari-server。
  2. 操作隊列ActionQueue。用于接收ambari-server發送過來的狀態操作,然后交給執行器調用puppet或Python腳本等模塊執行任務。

在這里插入圖片描述

三、Ambari-server內部架構

三種狀態:

  • Live Cluster State:集群現有狀態,各個節點匯報上來的狀態信息會更改該狀態;
  • Desired State:用戶希望該節點所處狀態,是用戶在頁面進行了一系列的操作,需要更改某些服務的狀態,這些狀態還沒有在節點上產生作用;
  • Action State:操作狀態,是狀態改變時的請求狀態,也可以看作是一種中間狀態,這種狀態可以輔助LiveCluster State向Desired State狀態轉變。

在這里插入圖片描述

Heartbeat Handler模塊用于接收各個agent的心跳請求(心跳請求里面主要包含兩類信息:節點狀態信息和返回的操作結果),把節點狀態信息傳遞給FSM狀態機去維護著該節點的狀態,并且把返回的操作結果信息返回給Action Manager去做進一步的處理。

Coordinator模塊又可以稱為API handler,主要在接收WEB端操作請求后,會檢查它是否符合要求,stageplanner分解成一組操作,最后提供給ActionManager去完成執行操作。

因此,從上圖就可以看出,Ambari-Server的所有狀態信息的維護和變更都會記錄在數據庫中,用戶做一些更改服務的操作都會在數據庫上做一些相應的記錄,同時,agent通過心跳來獲得數據庫的變更歷史。

四、Ambari-web內部架構

Ambari-web使用了一個流行的前端Embar.js MVC框架實現,Embar.js是一個TodoMVC框架,它涵蓋了現今典型的單頁面應用(single page application)幾乎所有的行為。

使用了nodejs

使用brunch 作為項目的構建管理工具

Brunch ,是一個超快的HTML5構建工具。它有如下功能:

(1)、編譯你的腳本、模板、樣式、鏈接它們。

(2)、將腳本和模板封裝進common.js/AMD模塊里,鏈接腳本和樣式。

(3)、為鏈接文件生成源地圖,復制資源和靜態文件。

(4)、通過縮減代碼和優化圖片來收縮輸出,看管你的文件更改。

(5)、并通過控制臺和系統提示通知你錯誤。

Nodejs 是一個基于Chrome JavaScript運行時建立的一個平臺,用來方便的搭建快速的易于擴展的網絡應用,NodeJS借助事件驅動,非阻塞I/O模型變得輕量和高效,非常適合運行在分布式設備的數據密集型的實時應用。

Ambari-web 目錄結構

目錄或文件描述
app/主要應用程序代碼。包括Ember中的view、templates、controllers、models、routes
config.coffeeBrunch應用程序生成器的配置文件
package.jsonNpm包管理配置文件
test/測試文件
vendor/Javascript庫和樣式表適用第三方庫。

Ambari-web/app/

目錄或文件描述
assets/靜態文件
controllers/控制器
data/數據
mappers/JSON數據到Client的Ember實體的映射
modelsMVC中的Model
routes/路由器
styles樣式文件
views試圖文件
templates/頁面模板
app.jsEmber主程序文件
config.js配置文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535586.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux系統的基本安裝

一、制作Linux安裝啟動盤 1.準備一個干凈的U盤,格式化。 2.下載64位系統鏡像:rhel-server-6.8-x86_64-dvd.iso。64位系統直接安裝就好, 3.首先制作一個啟動盤,解壓rhel-server-6.8-i386-dvd.iso文件 4.下載安裝UltraISO&#…

linux tips 技巧筆記一

作者: Jeffrey出處: http://blog.zhangjianfeng.com/?p171 實現RedHat非正常關機的自動磁盤修復先登錄到服務器,然后在/etc/sysconfig里增加一個文件autofsck,內容如下:AUTOFSCK_DEF_CHECKyesPROMPTyes 改變文件或目錄之最后修改時間(變為當前時間)執…

Shell基本概念

一、什么是shell shell是外殼的意思,就是操作系統的外殼。我們可以通過shell命令來操作和控制操作系統,比如Linux中的Shell命令就包括ls、cd、pwd等等。總結來說,Shell是一個命令解釋器,它通過接受用戶輸入的Shell命令來啟動、暫…

Shell解釋器

shell解釋器,用戶和操作系統內核之間的橋梁 一、Shell常見種類 就像不同地區有不同方言一樣,不同的Linux/Unix系統使用著不同類型的shell Bsh:由貝爾實驗室編寫。Bsh是產生較早的UNIX Shell程序,實現了最基本的命令解釋器的功能&#xff0c…

mysql安裝、導入數據腳本

mysql安裝: #!/bin/bash if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root to install mysql"exit 1 fi unzip Mysql.zip cd /home/install_LFS/Mysql cur_dir$(pwd) mkdir -p /usr/local/mysq…

linux tips 技巧筆記二

如何查找大小為500K到1000K之間的文件find / -type f -size 500k -and -size -1000k 僅列出當前目錄下的文件名.find ./ -type f -maxdepth 1 -exec basename {} /; 讓主機不響應pingecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all若想恢復就用echo 0 > /proc/sys/…

Shell腳本——入門

shell腳本編程需要注意以下幾個事項: shell腳本名稱命名一般為英文的大寫、小寫;不能使用特殊符號、空格來命名;shell腳本后綴以.sh結尾;不建議shell命名為純數字,一般以腳本功能命名;shell腳本內容首行需以…

Linux下C開發環境的構成和安裝

本文介紹了Linux的C開發環境的構成和安裝,使讀者對Linux的C開發環境能有初步的了解。 你了解Linux嗎?相信現在越來越多的人會說“是”的。那么你了解到何種程度呢?不可否認,目前決大多 數的Linux用戶對Linux的了解還處于比較低級的…

Shell腳本——變量

變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數據。腳本語言在定義變量時通常不需要指明類型,直接賦值就可以,Shell 變量也遵循這個規則 在 Bash shell 中,每一個變量的值都是字符串,無論你給變量賦值…

基礎環境安裝腳本

#/bin/bash # Check if user is root if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root"exit 1 fiecho "安裝環境包"if [ -f /etc/yum.repos.d/rhel-source.repo ];thenrm -r /etc/yum.repos.d…

Apache 虛擬主機的配置[Ubuntu]

基本配置 我們都知道,如果我們想在單臺機器上設置多個域名或主機名時,我們就要用到基于名稱的虛擬主機了。那么要如何進行設置呢?這就是本 HowTo 想解決的問題了。在 Ubuntu 的 /etc/apache2/ 目錄下有個 Apache2 的主配置文件 apache2.conf…

Shell腳本——數字計算

Shell 和其它編程語言不同,Shell 不能直接進行算數運算,必須使用數學計算命令 要想讓數學計算發揮作用,必須使用數學計算命令,Shell 中常用的數學計算命令如下表所示。 運算操作符/運算命令說明(( ))用于整數運算,效率…

windows下最好的C++ IDE

1. 你是不是用慣了VC6.0?假如是,我現在推薦的IDE仍然是VC6.0的IDE。 2. 你是不是覺得VC6.0過時了,很多C語法它都不支持?我現在推薦的編譯器她在一直發展著,支持最新的C語法。 3. VC.net的界面弱智,而且包含…

Shell腳本——內置命令

一、內置命令 所謂 Shell 內置命令,就是由 Bash 自身提供的命令,而不是文件系統中的某個可執行文件。 例如,用于進入或者切換目錄的 cd 命令,雖然我們一直在使用它,但如果不加以注意很難意識到它與普通命令的性質是不…

Shell腳本——基礎語法

一、條件判斷 1.1、基本語法 [ condition ](注意condition前后要有空格) 注意:條件非空即為true,[ abcdef ]返回true,[] 返回false。 1.2、常用判斷條件 兩個整數之間比較 字符串比較 -lt 小于(less …

#2002 - 服務器沒有響應 (or the local MySQL server's socket is not ...

經常見有兄弟遇到這樣的問題: mysql -u root -p一切正常,但是用phpmyadmin卻死活不對,提示如下錯誤: #2002 - 服務器沒有響應 (or the local MySQL servers socket is not correctly configured) 我 google 了一下,發現…

第一個Scala程序——Hello World!

一、交互式編程 交互式編程不需要創建腳本文件,可以通過以下命令調用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231). Type in expressions for evaluation. Or try :help.scala> println("Hello Wo…

CENTOS5下VSFTPD的設置

需求:(虛擬用戶分下載用戶/下載、上傳但不能刪除用戶/管理用戶) 一、安裝 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系統帳戶 1、vsftpd服務的宿主用戶 useradd vsftpd -s /sbin/nologin 2、…

Scala基礎語法

如果你之前是一名 Java 程序員,并了解 Java 語言的基礎知識,那么你能很快學會 Scala 的基礎語法。 一、基本語法 Scala 基本語法需要注意以下幾點: 區分大小寫 - Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不…

DNS詳解

一、DNS 概念 人和人要互相識別和記憶,需要名字作為輔助,而對于網絡世界,在因特網內也需要一種命名系統來做類似的事情,該系統使用了域來劃分,任何一個網絡里的主機(或者路由器)都有獨一無二的域名(類似國家代碼),域又能繼續劃分為子域(類似每個國家有不同的省份代…