1. 程式人生 > >Ambari的架構與設計思想

Ambari的架構與設計思想

Ambari包羅了大部分Hadoop生態系統的元件,說明它的抽象層次、設計思想值得我們去研究學習。

Ambari的架構

通過三張圖來說明:

第一張架構圖告訴我們:Ambari是Hortonworks貢獻給社群的、完全開源的、Hadoop生態的叢集管理、監控、部署的工具:


第二張架構圖告訴我們:

  1. 對外,Ambari提供ambari web,rest api,ambari shell三大方式操作機群;
  2. ambari將叢集的配置、各個服務的配置等資訊存在ambari server端的DB中(比如可以是postgresql);
  3. ambari server與ambari agent的交流走RPC,即agent向server報告心跳,server將command通過response發回給agent,agent本地執行命令,比如:agent端執行相應的python指令碼;
  4. ambari有自己的一套監控、告警、映象服務,以可插拔的形式供上層服務呼叫;


第三張架構圖是第二張圖的簡化:

Ambari的設計思想

Ambari最重要的一塊就是將各個Hadoop生態圈的元件抽象成一個個服務,Ambari Stack可以看成一個服務集合,比如,Ambari就使用了Hortonworks的Hortonworks Data Platform(HDP)來做為提供服務的服務棧。

這裡簡單介紹一下HDP:

它是一款基於Apache Hadoop的是開源資料平臺,提供大資料雲端儲存,大資料處理和分析等服務。該平臺是專門用來應對多來源和多格式的資料,並使其處理起來能變成簡單、更有成本效益。

HDP還提供了一個開放,穩定和高度可擴充套件的平臺,使得更容易地整合Apache Hadoop的資料流業務與現有的資料架構。該平臺包括各種的Apache Hadoop專案以及Hadoop分散式檔案系統(HDFS)、MapReduce、Pig、Hive、HBase、Zookeeper和其他各種元件,使Hadoop的平臺更易於管理,更加具有開放性以及可擴充套件性。

與其對應的有Cloudera的CDH(Cloudera’s Distribution Including Apache Hadoop),都是商業公司將開源的Hadoop拿來優化、改進、二次開發後再推出去,通過諮詢等方式盈利。

好,回到Ambari的話題。Ambari Stack下面就對應了一個又一個Ambari Service,比如HDFS,那HDFS包含有不同的元件(Datanode,NameNode),這時Ambari又對其進行了抽象:

一個Service由多個ServiceComponent構成,一個ServiceComponent由多個ServiceComponentHost構成:

  1. Service: HDFS, YARN, HBase, etc
  2. ServiceComponent: HDFS.NameNode, YARN.ResourceManager, HBase.RegionServer, etc
  3. ServiceComponentHost: HDFS.NameNode.HostA, YARN.ResourceManager.HostB, etc

對應上面的三種資源,有三種操作:

  1. Operation: Service層面的操作(Install/Start/Stop/Config),一個Operation可以作用於一個或多個Service。
  2. Stage: ServicesComponent層面的操作,根據不同ServicesComponent操作間的依賴關係,一個Operation的所有Task可能被劃分成多個Stage,一個Stage內的多個Task相互沒有依賴,可以並行執行。
  3. Task: ServiceComponentHost層面的操作,為了完成一個Operation,需要為不同的機器分配一系列的Task去執行。

需要特別說明的是操作的執行順序:

1. 不同的Stage只能順序執行。後面的Stage只有在前面Stage執行成功後才會下發給Agent。如果前面Stage失敗,後面的Stage將取消。
2. 同一個Stage內的多個Task可以並行執行,可以同時下發給Agent。如果某個Task失敗,其他的已下發且正執行的Task將被取消。
3. 分配給同一個機器的不同Task只會順序執行。

下圖描述了這三種資源與操作的對應關係:

上述的三個操作抽象是定義態的描述,它們分別對應一個執行態的抽象:

  1. StagePlan: 執行態的Operation,是一個Stage DAG。
  2. Action: 執行態的Stage,由多個Command構成。
  3. Command: 執行態的Task,下發給具體的機器執行。主要有以下幾種:
1)、ExecuteCommand: 對服務元件執行INSTALL/START/STOP等操作。
(2)、StatusCommand: 對服務元件執行死活檢查(由Server定期下發)。
(3)、CancelCommand: 取消其他已經下發的Task(當Stage中的某個Task失敗時)。
(4)、RegistrationCommand: 要求Agent向Server重新註冊(當發現Server維護的心跳序號與Agent上報的不一致時)。

下圖通過一個具體例項(啟動HDFS和YARN服務),展示了其Stage DAG的構建邏輯:

那麼如何構建一個Stage DAG?

見下一篇文章。

相關推薦

Ambari架構設計思想

Ambari包羅了大部分Hadoop生態系統的元件,說明它的抽象層次、設計思想值得我們去研究學習。 Ambari的架構 通過三張圖來說明: 第一張架構圖告訴我們:Ambari是Hortonworks貢獻給社群的、完全開源的、Hadoop生態的叢集管

Skype for Business邊緣架構設計課程筆記

business skype 文章 課程 文章鏈接:http://yangqs.com/?p=26 本文出自 “強生的博客” 博客,請務必保留此出處http://yangqs.blog.51cto.com/127876/1934724Skype for Business邊緣架構與設計課程筆記

第11章 Tomcat的系統架構設計模式

必須 ket 聲明 命令模式 基本 ner 虛擬主機 fec 啟動 11.1 Tomcat總體設計   11.1.1 Tomcat總體架構   Tomcat和核心有連個組件:Connector和Container,Connector是可以被替換的。一個container可以

TensorFlow架構設計:概述

運行 建立 不同的 bsp 通用 折疊 客戶 gpu 通信 TensorFlow是什麽? TensorFlow基於數據流圖,用於大規模分布式數值計算的開源框架。節點表示某種抽象的計算,邊表示節點之間相互聯系的張量。 TensorFlow支持各種異構的平臺,支持多CPU/G

數據倉庫的架構設計

數據平臺 text 消息 dimen 建立 合作 安裝 OS nosql數據庫 公司之前的數據都是直接傳到Hdfs上進行操作,沒有一個數據倉庫,趁著最近空出幾臺服務器,搭了個簡陋的數據倉庫,這裏記錄一下數據倉庫的一些知識。涉及的主要內容有: 什麽是數據倉庫? 數據倉庫的架

Storm筆記整理(一):簡介設計思想

大數據 實時計算 Storm [TOC] 實時計算概述 有別於傳統的離線批處理操作(對很多數據的集合進行的操作),實時處理,說白就是針對一條一條的數據/記錄進行操作,所有的這些操作進行一個匯總(截止到目前為止的所有的統計總和)。 實時計算與離線計算比較 Bounded:有界 離線計算面臨

Java開源生鮮電商平臺-Java後端生成Token架構設計詳解(源碼可下載)

red 基於 一次 frame service state dha 概述 class Java開源生鮮電商平臺-Java後端生成Token架構與設計詳解(源碼可下載) 目的:Java開源生鮮電商平臺-Java後端生成Token目的是為了用於校驗客戶端,防止重復提交. 技

《深入分析JavaWeb技術內幕》之 12-Spring架構設計模式

    core context bean(bean工廠,bean定義,bean解析)   bean(bean工廠,bean定義,bean解析)     

《深入分析JavaWeb技術內幕》之 11-Tomcat系統架構設計模式

1、 分發請求 2 、同時請求 3、 多級容器 4、 設計模式 Tomcat的組織結構 https://www.cnblogs.com/zhouyuqin/p/5143121.html   Tomcat Server處理一個HTTP請求的

5資料倉庫的架構設計

公司之前的資料都是直接傳到Hdfs上進行操作,沒有一個數據倉庫,趁著最近空出幾臺伺服器,搭了個簡陋的資料倉庫,這裡記錄一下資料倉庫的一些知識。涉及的主要內容有: 什麼是資料倉庫? 資料倉庫的架構 資料倉庫多維資料模型的設計 1. 什麼是資料倉庫 1.1 資料倉庫的概念 官方定義 資料倉庫是一

MVC和MVVM 架構模式/設計思想

MVC Model、View、Controller   1)最上面的一層,是直接面向終端使用者的"檢視層"(View)。它是提供給使用者的操作介面,是程式的外殼。   2)最底下的一層,是核心的"資料層"(Model),也就是程式需要操作的資料或資訊。   3)中間的一層,就是"控制層"(Control

電商平臺-Java後端生成Token架構設計詳解

目的:Java開源生鮮電商平臺-Java後端生成Token目的是為了用於校驗客戶端,防止重複提交. 技術選型:用開源的JWT架構。   1.概述:在web專案中,服務端和前端經常需要互動資料,有的時候由於網路相應慢,客戶端在提交某些敏感資料(比如按照正常的業務邏輯,此份資料只能儲存一

Spring原始碼解析--《SPRING技術內幕:深入解析Spring架構設計原理》讀書筆記(一):IOC容器初始化過程

通過閱讀相關章節內容,Spring中IOC容器的載入中,我們需要了解下列幾個概念: Resource:是一個定位、訪問資源的抽象介面,包含了多種資源操作的基礎方法定義,如getInputStream()、exists()、isOpen()、getD

超級賬本Fabric的架構設計

超級賬本Fabric專案自誕生之日起就吸引了全球眾多企業的密切關注,已經先後釋出了兩個大的版本,0.6實驗版本(2016年9月)和1.0正式版本(2017年7月)。 目前,超級賬本Fabric架構上核心特性主要包括: 解耦了原子排序環節與其他複雜處理環節,

Tomcat 系統架構設計模式,第 1 部分: 工作原理

本文以 Tomcat 5 為基礎,也兼顧最新的 Tomcat 6 和 Tomcat 4。Tomcat 的基本設計思路和架構是具有一定連續性的。 Tomcat 的結構很複雜,但是 Tomcat 也非常的模組化,找到了 Tomcat 最核心的模組,您就抓住了 Tomcat 的“七寸”。下面是 Tomcat 的

資料倉庫的架構設計

公司之前的資料都是直接傳到Hdfs上進行操作,沒有一個數據倉庫,趁著最近空出幾臺伺服器,搭了個簡陋的資料倉庫,這裡記錄一下資料倉庫的一些知識。涉及的主要內容有: 1. 什麼是資料倉庫 1.1 資料倉庫的概念 官方定義 資料倉庫是一個面向主

ENode 2.6 架構設計簡介以及全新案例分享

前言 ENode是一個應用開發框架,為開發人員提供了一整套基於DDD+CQRS+ES+EDA架構風格的解決方案。ENode從釋出1.0開始到現在的差不多兩年時間,我幾乎每週都在更新設計或實現程式碼。以至於從來沒有一個穩定的版本可以提供給大家,非常慚愧。但我相信,隨著時間的推移和我的努力的積累,ENode一定

Tomcat 系統架構設計模式,第 2 部分: 設計模式分析

門面設計模式在 Tomcat 中有多處使用,在 Request 和 Response 物件封裝中、Standard Wrapper 到 ServletConfig 封裝中、ApplicationContext 到 ServletContext 封裝中等都用到了這種設計模式

TensorFlow架構設計:OP本質論

TensorFlow的系統結構以C API為界,將整個系統分為「前端」和「後端」兩個子系統。前端系統扮演了Client的角色,完成計算圖的構造,通過轉發Protobuf格式的GraphDef給後端系統的Master,並啟動計算圖的執行過程。最終,Master將圖

《Spring技術內幕:深入解析Spring架構設計原理》筆記之六(Spring事務處理的實現)

1.Spring與事務處理有了Spring事務管理的支援,只需要通過一些簡單的配置,應用就能完成複雜的事務處理工作,從而為使用者使用事務處理提供很大的方便。2.Spring事務處理的設計概覽Spring事務處理模組中的類層次結構在Spring事務處理中,可以通過設計一個Tra