1. 程式人生 > >004-Ambari架構及原始碼結構分析

004-Ambari架構及原始碼結構分析

    微信搜尋公眾號:BearData,關注更多內容。

前幾篇主要是從大體的方向介紹了Ambari,安裝Ambari。本篇主要介紹Ambari的架構及原始碼結構。

基本概念

1. Resource:Ambari把可以被管理的資源的抽象為一個Resource例項,資源可以包括服務、元件、主機節點等,一個resource例項包含了一系列該資源的屬性

2. Property:服務元件的指標名稱

3. ResourceProvider和PropertyProvider分別對應Resource和Property的提供方,獲取指標需要先獲取Resource,然後獲取Property對應的metric

4. Query:Query是Resource的內部物件,代表了對該資源的操作

5. Request:一個Request代表了對Resource的操作請求,包含http資訊及要操作的Resource的例項,Request按照http的請求方式分為四種:GET、PUT、DELETE、POST

6. Predicate:一個Predicate代表了一系列表示式,如and、or等

基本元件

Ambari 可以分為 5個大的元件,分別是 Ambari-server 、 Ambari-web 、 Ambari-agent 、 Ambari-metrics-collector 和 Ambari-metrics-monitor 。

1. 在叢集的每一臺機器上都會部署 Ambari-agent 。 Agent 主要負責接收來自 Server 端的命令, 這些命令可以是安裝、啟動、停止 叢集上的某一服務。同時, agent 端需要向 Ambari-server 端上報命令執行的結果,成功或失敗。

2. Ambari-Server 提供 REST 介面給Agent 和 Web 訪問。使用者甚至可以不用介面,直接通過 curl 命令來操控叢集。

3. Ambari-metric-collector和 Ambari-metrics-monitor 是收集叢集中元件 metrics 的模組。

Ambari專案目錄結構

目錄

描述

ambari-server

Server程式碼,主要管理部署在每個節點上的管理監控程式

ambari-agent

部署在監控節點上執行的管理監控程式

ambari-web

Ambari頁面UI的程式碼,用來使用者與Ambari server互動的

ambari-views

視覺化工具的Web UI 框架程式碼

ambari-common

Ambari-server 和Ambari-agent 共用的程式碼

ambari-metrics

在Ambari所管理的叢集中用來收集、聚合和服務Hadoop和系統計量

ambari-admin

admin介面管理程式碼

ambari-project

編譯程式碼使用的公用程式碼

ambari-shell

命令列程式碼包括shell及python

ambari-funtest

功能測試程式碼

ambari-logsearch

日誌管理程式碼

contrib

視覺化工具的程式碼及一些通用的工具程式碼

doc

文件

程式碼檢視

Ambari-Server目錄結構

目錄

描述

org.apache.ambari.server.api.services

給web提供的介面方法,處理/api/v1/* 的請求

org.apache.ambari.server.controller

對Ambari中cluster的管理處理,如新增host,更service、刪除component等

org.apache.ambari.server.controller.internal

主要存放ResourceProvider和PropertyProvider

org.apache.ambari.service.orm.*

對資料庫的操作

org.apache.ambari.server.agent.rest

處理與Agent的介面的入口方法

org.apache.ambari.security

使用Spring Security來做許可權管理

Ambari-web目錄結構

目錄

描述

app/

Web 核心程式碼. 包括Ember 的 views, templates, controllers, models, routes等程式碼,實際應用的程式碼

config.coffee

package.json

npm 包管理配置檔案

test/

功能測試程式碼

vendor/

第三方程式碼,如:bootstrap、jquery等

Ambari-web/app目錄結構

目錄或檔案

描述

assets/

模擬資料,可以用來做測試使用

controllers/

Ember框架中MVC的C層

data/

應用程式的元資料(UI元資料,伺服器資料元資料等)可用來在開發過程中檢視元資料的結構

mappers/

主要將伺服器端JSON資料結構對映到客戶端Ember模型的類

models/

Ember框架中MVC的M層. 使用Ember Data , 叢集,服務,主機,警報等模型在這裡定義

routes/

Ember路由定義,主要用來做應用程式中的各種頁面重定向

styles/

Web的樣式檔案(less),最終會通過Brunch 編譯到ambari-web/public/stylesheets/app.css檔案中

views/

Ember框架中MVC中的V層。 包含應用程式的所有檢視。

Templates/

檢視使用的HTML模板。 通常一個檢視將有一個模板檔案。

App.js

主程式

config.js

javascript應用程式的主配置檔案。 開發人員可以使用App.testMode屬性等將應用程式保持在測試模式。

Locales

國際化

Messages.js

翻譯表,程式中頁面展示對應的翻譯表

routter.js

路由程式,主要用來做路由解析

Ambari-Server架構

1. 對外,Ambarii-Server提供ambari web,rest api,ambari shell三大方式操作機群

2. ambari將叢集的配置、各個服務的配置等資訊存在ambari server端的DB中(如postgresql) 

3. ambari server與ambari agent的交流走RPC,即agent向server報告心跳,server將command通過respons發回給agent,agent本地執行命令,比如:agent端執行相應的python指令碼

4. ambari有自己的一套監控、告警、映象服務,以可插拔的形式供上層服務呼叫

Ambari-agent架構

ambari-agent是一個無狀態的。其功能主要分兩部分

1.採集所在節點的資訊並且彙總發心跳彙報給ambari-server

2.處理ambari-server的執行請求。

(1)訊息佇列MessageQueue,或為ResultQueue。包括節點狀態資訊(包括註冊資訊)和執行結果資訊,並且彙總後通過心跳傳送給ambari-server

(2)操作佇列ActionQueue。用於接收ambari-server返回過來的狀態操作,然後能過執行器按序呼叫puppet或python指令碼等模組完成任務

參考文章

以上就是對Ambari架構和原始碼結構的分析,下一篇我們將介紹如何編譯Ambari原始碼。

掃描二維碼,關注BearData

相關推薦

004-Ambari架構原始碼結構分析

    微信搜尋公眾號:BearData,關注更多內容。 前幾篇主要是從大體的方向介紹了Ambari,安裝Ambari。本篇主要介紹Ambari的架構及原始碼結構。 基本概念 1. Resource:Ambari把可以被管理的資源的抽象為一個Resource例項,資源可

HDFS架構原始碼分析

HDFS 本文主要介紹hadoop2.x版本,分析程式碼主要位於hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server下namenode、datanode與prot

SpringMVC架構原始碼分析

SpringMVC 本文在基於SpringMVC 4.3.2.RELEASE版本基礎上,對原始碼進行分析,並探討SpringMVC的原理及用法。 springMVC 整體架構 在瞭解Spring整體架構時,這裡盜用開濤部落格的一張圖。 對該架構

[kernel]內核日誌printk結構分析

守護 col 預處理 編譯 errno inf war 環形緩沖 -i 一直都知道內核printk分級機制,但是沒有去了解過,前段時間和一個同事聊到開機啟動打印太多,只需要設置一下等級即可;另外今天看驅動源碼,也看到類似於Printk(KERN_ERR "....")的打印

比特幣網路架構節點發現分析

一、P2P網路架構 比特幣採用了基於網際網路的點對點(P2P:peer-to-peer)分散式網路架構。 比特幣網路可以認為是按照比特幣P2P協議執行的一系列節點的集合。 本文來分析下比特幣網路,瞭解它跟傳統中心化網路的區別,以及比特幣網路是如何發現相鄰節點的。  

(三)hbase的架構儲存結構

Habase系統架構 ps:先了解hbase的整體架構,有些看不明白的可以先看後面,再回過頭來看。 系統架構 hbase可以啟動多個 master(老大),但只有一個處於active狀態,其他的則處於backup狀態。 會有多個regionServer(小弟)

Tensorflow原始碼解析1 -- 核心架構原始碼結構

1 主流深度學習框架對比 當今的軟體開發基本都是分層化和模組化的,應用層開發會基於框架層。比如開發Linux Driver會基於Linux kernel,開發Android app會基於Android Framework。深度學習也不例外,框架層為上層模型開發提

goahead 原始碼結構分析

原始碼結構: -------------------------------------------------------------------------------------- MAIN(goahead, int argc, char **argv, char **envp) ------

protoc編譯proto檔案之Java原始碼結構分析一(addr.proto)

一、addr.proto option java_package = "com.test.protocol"; option java_outer_classname = "AddressProto"; message Address { opti

Ceilometer專案原始碼分析----ceilometer專案原始碼結構分析

感謝朋友支援本部落格,歡迎共同探討交流,由於能力和時間有限,錯誤之處在所難免,歡迎指正!如果轉載,請保留作者資訊。部落格地址:http://blog.csdn.net/gaoxingnengjisuan

px4原始碼學習三--px4原始碼結構分析

px4原始碼結構分析 Px4原始碼目錄 cmake: 是存放的 Cmake 編輯指令碼資料夾, 其中 Cmake/Configs 是存放的不同硬體的編譯指令碼, nuttx_mindpx-v2_default 是 PIXHAWK 這個硬體的編輯

Android核心服務解析篇(二)——Android原始碼結構分析

獲得Android原始碼後,我們來分析原始碼結構。原始碼的全部工程分為如下三個部分。 ①Core Project:核心工程部分,這是建立Android系統的基礎,儲存在根目錄的各個資料夾中。 ②External Project:擴充套件工程部分,可以使其他開源專案具有擴充

Framebuffer 驅動學習總結(一) ---- 總體架構關鍵結構

一、Framebuffer 裝置驅動總體架構 幀緩衝裝置為標準的字元型裝置,在Linux中主裝置號29,定義在/include/

SpringBoot-自動裝配物件原始碼ImportSelector分析

  SpringBoot框架已經很流行了,筆者做專案也一直在用,使用久了,越來越覺得有必要理解SpringBoot框架中的一些原理了,目前的面試幾乎都會用問到底層原理。我們在使用過程中基本上是搭建有一個框架拿來現用,在此過程中遇到問題就去百度來解決相應的問題,但是,對其原理不理解的情況下,雖然問題

HBase 系統架構資料結構

一、基本概念     2.1 Row Key (行鍵)     2.2 Column Family(列族)     2.3 Column Qualifier (列限定符)     2.4 Column(列)     2.5 Cell     2.6 Timestamp(時間戳) 二、儲存結構     2.1

HBase 系列(二)—— HBase 系統架構資料結構

一、基本概念 一個典型的 Hbase Table 表如下: 1.1 Row Key (行鍵) Row Key 是用來檢索記錄的主鍵。想要訪問 HBase Table 中的資料,只有以下三種方式: 通過指定的 Row Key 進行訪問; 通過 Row Key 的 range 進行訪問,即訪問指定範圍內

SpringMvc demo示例原始碼詳細分析

三層架構介紹   我們的開發架構一般都是基於兩種形式,一種C/S架構,也就是客戶端/伺服器,另一種是B/S架構,也就是瀏覽器/伺服器。在JavaEE開發中,幾乎全部都是基於B/S架構的開發。那麼在B/S架構中,系統標準的三層架構包括:表現層、業務層、持久層。三層架構在我們的實際開發中使用的非常多。 三層職責

x265原始碼分析:main函式CLIOptions結構體解釋

/** * 返回碼資訊: * 0 – 編碼成功; * 1 – 命令列解釋失敗; * 2 – 編碼器開啟失敗; * 3 – 生成流頭部失敗; * 4 – 編碼出錯; * 5 – 開啟csv檔案失敗. */ int main(int argc, char **argv) {

ConcurrentHashMap JDK1.8中結構原理原始碼分析

注:本文根據網路和部分書籍整理基於JDK1.7書寫,如有雷同敬請諒解  歡迎指正文中的錯誤之處。 資料結構       ConcurrentHashMap 1.8 拋棄了Segment分段鎖機制,採用Node + CAS + Synchronized來保證併發安全進行實現

MyBatis架構設計原始碼分析系列(一):MyBatis架構

如果不太熟悉MyBatis使用的請先參見MyBatis官方文件,這對理解其架構設計和原始碼分析有很大好處。 一、概述 MyBatis並不是一個完整的ORM框架,其官方首頁是這麼介紹自己 The MyBatis data mapper framework makes i