前面我們提到了兩個比較火的Hadoop集群運維管理工具 Ambari和Cloudera Manager。它們集安裝,配置,監控于一身,對于Hadoop的初學者可以起到很好的幫助作用。這篇文章就對Ambari著重介紹一下,看一下它相關的一些架構,對于后面我們自己開發基于Apache Hadoop發行版的自動安裝服務有幫助。
關于Ambari的簡介和安裝大家可以看這篇文章:Ambari——大數據平臺的搭建利器
Ambari擁有很多的功能,它的大部分功能都是基于一些優秀的開源項目,Ambari充分的將它們結合起來從而實現在分布式環境中的集群式服務管理能力,監控能力,展示能力等等。
比如服務的管理(安裝,卸載,更新等等)是基于puppet。puppet是一個非常成熟和優秀的運維工具,而監控部分除了JMX相關的還利用了Nagios和Ganglia等監控項目。
Ambari框架是Server/Client模式。
其中Ambari Server除了基本的用戶,組,集群信息管理之外,還提供了Rest API,一部分是接受Ambari Client發送的心跳請求以及各種數據采集信息,一部分是監控管理功能。通過Rest API可以讓我們更加簡潔愉快的操作Ambari。

而Ambari Client 負責采集節點相關信息且發送心跳給Ambari Server,同時還需要執行來自Ambari Server的命令(諸如程序安裝和服務啟動終止等)

Ambari將所有的服務都抽象成資源,這使得它非常容易擴展,擴展自定義Service詳細介紹大家可以看一下:擴展Ambari管理一個自定義的Service ,這個里面自定義Service小結講的非常詳細。這里就不贅述了。
之所以對Ambari的架構進行了解是為了幫助我們去設計我們自己的Hadoop集群安裝服務,那么如果我們需要做一個類似的集群管理服務,那么我們都需要哪些功能?該怎樣設計呢?