Ambari的架構與設計思想

2021-09-20 23:42:19 字數 2566 閱讀 1809

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

ambari的架構

通過三張圖來說明:

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

第二張架構圖告訴我們:

對外,ambari提供ambari web,rest api,ambari shell三大方式操作機群;

ambari將集群的配置、各個服務的配置等資訊存在ambari server端的db中(比如可以是postgresql);

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

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拿來優化、改進、二次開發後再推出去,通過諮詢等方式盈利。1234512345
好,回到ambari的話題。ambari stack下面就對應了乙個又乙個ambari service,比如hdfs,那hdfs包含有不同的元件(datanode,namenode),這時ambari又對其進行了抽象:

乙個service由多個servicecomponent構成,乙個servicecomponent由多個servicecomponenthost構成:

service: hdfs, yarn, hbase, etc

servicecomponent: hdfs.namenode, yarn.resourcemanager, hbase.regionserver, etc

servicecomponenthost: hdfs.namenode.hosta, yarn.resourcemanager.hostb, etc

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

operation: service層面的操作(install/start/stop/config),乙個operation可以作用於乙個或多個service。

stage: servicescomponent層面的操作,根據不同servicescomponent操作間的依賴關係,乙個operation的所有task可能被劃分成多個stage,乙個stage內的多個task相互沒有依賴,可以並行執行。

task: servicecomponenthost層面的操作,為了完成乙個operation,需要為不同的機器分配一系列的task去執行。

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

1. 不同的stage只能順序執行。後面的stage只有在前面stage執行成功後才會下發給agent。如果前面stage失敗,後面的stage將取消。2. 同乙個stage內的多個task可以並行執行,可以同時下發給agent。如果某個task失敗,其他的已下發且正執行的task將被取消。3. 分配給同乙個機器的不同task只會順序執行。123123
下圖描述了這三種資源與操作的對應關係:

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

stageplan: 執行態的operation,是乙個stage dag。

action: 執行態的stage,由多個command構成。

command: 執行態的task,下發給具體的機器執行。主要有以下幾種:

(1)、executecommand: 對服務元件執行install/start/stop等操作。 (2)、statuscommand: 對服務元件執行死活檢查(由server定期下發)。 (3)、cancelcommand: 取消其他已經下發的task(當stage中的某個task失敗時)。 (4)、registrationcommand: 要求agent向server重新註冊(當發現server維護的心跳序號與agent上報的不一致時)。12341234
下圖通過乙個具體例項(啟動hdfs和yarn服務),展示了其stage dag的構建邏輯:

Ambari的架構與設計思想

ambari包羅了大部分hadoop生態系統的元件,說明它的抽象層次 設計思想值得我們去研究學習。ambari的架構 通過三張圖來說明 第一張架構圖告訴我們 ambari是hortonworks貢獻給社群的 完全開源的 hadoop生態的集群管理 監控 部署的工具 第二張架構圖告訴我們 對外,amb...

Ambari的架構與設計思想

ambari包羅了大部分hadoop生態系統的元件,說明它的抽象層次 設計思想值得我們去研究學習。ambari的架構 通過三張圖來說明 第一張架構圖告訴我們 ambari是hortonworks貢獻給社群的 完全開源的 hadoop生態的集群管理 監控 部署的工具 第二張架構圖告訴我們 對外,amb...

架構設計思想總結

1 分而治之 簡單的說就是將複雜的業務,工作進行拆分。開發中最早接觸到的mvc 三層架構就是最經典的案例。在開發中業務總是會比較複雜,通過拆分,任務分配到每個成員,大家各司其職,降低任務難度,同時又能將工作處理好。3 業務發展驅動技術發展,技術發展驅動業務 通俗的說,我們上班是為了賺錢,公司運營也是...