運維過hadoop集羣的人都應該清楚,hadoop生態從安裝、配置到後期運維是一個很是艱辛的過程,通常來講安裝hadoop可能就須要幾天時間,運維一個小型集羣一樣須要幾我的。ambari和cloudera Manager這兩個系統,目的就是簡化hadoop生態集羣的安裝、配置,同時提升hadoop運維效率,以及對hadoop集羣進行監控。前端
Ambari是Hortonworks公司開源的Hadoop平臺的管理軟件,着重於幫助你們管理本身的HDP集羣,具有Hadoop組件的安裝、管理、運維等基本功能,提供Web UI進行可視化的集羣管理,簡化了大數據平臺的安裝、使用難度。python
Cloudera Manager是cloudera公司的一個產品,着重於幫助你們管理本身的CDH集羣,Cloudera Manager是一個擁有集羣自動化安裝、中心化管理、集羣監控、報警功能的一個工具(軟件),使得安裝集羣從幾天的時間縮短在幾個小時內,運維人員從數十人下降到幾人之內,極大的提升集羣管理的效率。ios
(1) 組件選擇:採用apache hadoop組件(原生hadoop組件)web
(2) 優勢:redis
a) 各個組件徹底開源免費。數據庫
b) 社區資源活躍。apache
c) 能夠加深對各個組件的理解和掌握。安全
(3) 缺點:ruby
a) 集羣部署:集羣部署、安裝、配置耗時比較多,一般按照集羣須要編寫大量的配置文件,分發到每一臺節點上,容易出錯,效率低下。服務器
b) 版本管理:組件的版本管理比較複雜,在Hadoop生態圈中,組件的選擇、使用,好比Hive,Mahout,Sqoop,Flume,Spark,impala,Oozie等等,須要大量考慮兼容性的問題,版本是否兼容,組件是否有衝突,編譯是否能經過等。常常會浪費大量的時間去編譯組件,解決版本衝突問題。
c) 集羣運維:對集羣的監控,運維,須要安裝第三方的其餘軟件,如ganglia,nagois等,運維難度較大,同時運維成本比較高。
(1) 組件選擇:Ambari + HDP 或 Cloudera Manger + CDH
(2) 優勢:
a) 基於穩定版本Apache Hadoop,解決了組件不一樣版本之間的衝突問題,並應用了最新Bug修復或Feature的patch,在兼容性、安全性、穩定性上有加強。
b) 默認優化了不少參數,如HDFS的snappy壓縮。
c) 提供了部署、安裝、配置工具,大大提升了集羣部署的效率,能夠在數個小時內部署好集羣。
d) 第三方發行版一般都通過了大量的測試驗證,有衆多部署實例,大量的運行到各類生產環境。
e) 運維簡單。提供了管理、監控、診斷、配置修改的工具,管理配置方便,定位問題快速、準確,使運維工做簡單,有效。
(3) 缺點
a) 免費社區版功能不全,非社區版服務收費。
b) 收費標準:按節點收費,Cloudera每一個節點一年4000美圓,Hortonworks 每一個節點一年1250美圓。
Ambari是Hortonworks開源的Hadoop平臺的管理軟件,具有Hadoop組件的安裝、管理、運維等基本功能,提供Web UI進行可視化的集羣管理,簡化了大數據平臺的安裝、使用難度。
Ambari目前對接安裝Hortonworks Data Platform(HDP),即Hortonworks的開源Hadoop,對Apach的Hadoop平臺的生產環境部署沒有找到實例;對於已經安裝了Apach Hadoop或者其餘Hadoop平臺的,可能不能使用Ambari來管理;
(1)Host Level Action(機器級別的操做)
(2)Component Level Action(模塊級別的操做)
(1)Cluster User
查看集羣和Service的信息,如配置、service狀態、健康狀態等。Read-only
(2)Service Operator
可以操做Service的生命週期,如啓動,中止,也能夠進行一些如Rebalance DataNode和YARN refresh的操做
(4) Service Administrator
在Service Operator的基礎上增長了配置service,移動NameNode,啓用HA等操做
(5) Cluster Operator
在Service Administrator的基礎上增長了對hosts和components的操做,如增長,刪除等
(6) Cluster Administrator
集羣的超級管理員,擁有無上的權利,能夠操做任何組件。
(1)Roll Start功能。根據Service的依賴關係,按照必定的順序啓動每一個Service。好比HBase依賴HDFS和Zookeeper,Ambari會先啓動HDFS和Zookeeper,以後啓動HBase。
(2)關鍵的運維指標(metrics)–metrics 是「度量,指標」的意思
(3)在左側的 Service 列表,中間部分是 Service 的模塊(Component)信息,也就是該 Service 有哪些模塊及其數目。右上角有個 Service Action 的按鈕,包括service的啓動、中止、刪除等操做。
(4)Quick links(導向組件原生管理界面)
(1)Alert 告警級別:
OK 、Warning、Critical、Unknown、None
(2)Alert 告警類型:
WEB、Port、Metric、Aggregate 和 Script
表 1. Ambari 中的 Alert 類型對比
類型 |
用途 |
告警級別 |
閥值是否可配置 |
單位 |
PORT |
用來監測機器上的一個端口是否可用 |
OK, WARN, CRIT |
是 |
秒 |
METRIC |
用來監測 Metric 相關的配置屬性 |
OK, WARN, CRIT |
是 |
變量 |
AGGREGATE |
用於收集其餘某些 Alert 的狀態 |
OK, WARN, CRIT |
是 |
百分比 |
WEB |
用於監測一個 WEB UI(URL)地址是否可用 |
OK, WARN, CRIT |
否 |
無 |
SCRIPT |
Alert 的監測邏輯由一個自定義的 python 腳本執行 |
OK, CRIT |
否 |
無 |
Ambari經過HDP將Hadoop的組件進行集成,經過棧的形式提供Service的組合使用,它主要解決的問題以下:
Ambari並無對Hadoop組件進行過多的功能集成,如日誌分析等,只是提供了安裝,配置,啓停等功能,儘可能保持了跟原生Hadoop組件的隔離性,對於該組件的具體操做,經過Quick Links 直接導向原生的管理界面(如HBase Master UI),它的作法保持了對於Hadoop組件的低侵入性。
Cloudera Manager是cloudera公司的一個產品,着重於幫助你們管理本身的CDH集羣,經過Cloudera Manager統一的UI界面來快速地自動配置和部署CDH和其相關組件,同時Cloudera Manager還提供了各類豐富的可自定義化的監視診斷和報告功能,集羣上統一的日誌管理功能,統一的集羣配置管理和實時配置變動功能,多租戶功能,高可用容災部署功能和自動恢復功能等, 方便企業統一管理和維護本身的數據中心。它細分爲免費的Express版本和功能徹底並提供衆多增值服務的收費版本Enterprise。
管理:對大數據集羣進行管理,如添加、刪除節點等操做。
監控:監控集羣的健康狀況,對設置的各類指標和系統運行狀況進行全面監控。
診斷:對集羣出現的問題進行診斷,對出現的問題給出建議解決方案。
集成:對hadoop的多組件進行整合。
cloudera manager的核心是管理服務器,該服務器承載管理控制檯的Web服務器和應用程序邏輯,並負責安裝軟件,配置,啓動和中止服務,以及管理上的服務運行羣集。
Agent:安裝在每臺主機上。該代理負責啓動和中止的過程,拆包配置,觸發裝置和監控主機。
Management Service:由一組執行各類監控,警報和報告功能角色的服務。
Database:存儲配置和監視信息。一般狀況下,多個邏輯數據庫在一個或多個數據庫服務器上運行。例如,Cloudera的管理服務器和監控角色使用不一樣的邏輯數據庫。
Cloudera Repository:軟件由Cloudera 管理分佈存儲庫。
Clients:是用於與服務器進行交互的接口:
Admin Console :基於Web的用戶界面與管理員管理集羣和Cloudera管理。
API :與開發人員建立自定義的Cloudera Manager應用程序的API。
Apache hadoop 原生組件的webUI界面能夠查看組件的運行狀態,歷史日誌,內存消耗,硬盤消耗狀況等。
相比clouderManager和ambari:
(1)原生的webUI不能執行服務的啓停操做
(2)各個組件之間的webUI界面是相互獨立的
(3)大部分功能僅限於read-only的操做,沒法執行其它操做
(4)很難統一監控整個集羣的運行狀況
組件 |
Ambari |
ClouderaManager |
開發公司 |
Hortonworks公司 |
Cloudera公司 |
部署方式 |
Ambari + HDP |
Cloudera Manger + CDH |
生產運行狀況 |
比較穩定 |
很穩定 |
使用狀況 |
市場佔用率較高 |
市場佔用率高 |
開源狀況 |
產品開源,服務好像收費 |
有免費版和商業版 |
維護 |
依靠社區力量 |
cloudera作了一些定製開發,自行維護或打patch會離社區愈來愈遠 |
配置版本控制和歷史記錄 |
支持 |
不支持 |
二次開發 |
支持 |
不支持 |
集成 |
支持 |
no (不支持redis、kylin、es) |
權限控制 |
ranger(相對簡單) |
sentry(複雜) |
視圖定製 |
支持建立本身的視圖,添加自定義服務 |
不支持 |
當咱們決定是否採用某個軟件用於開源環境時,一般須要考慮如下幾個因素:
(1)是否爲開源軟件,便是否免費。
(2) 是否有穩定版,這個通常軟件官方網站會給出說明。
(3) 是否通過實踐驗證,這個可經過檢查是否有一些大點的公司已經在生產環境中使用知道。
(4) 是否有強大的社區支持,當後期出現一個問題時,可以經過社區、論壇等網絡資源快速獲取解決方法。
Ambari是hadoop分佈式集羣配置管理工具,是由hortonworks主導的開源項目。它已經成爲apache基金會的頂級項目,已經成爲hadoop運維繫統中的得力助手,引發了業界和學術界的關注。
Ambari採用的不是一個新的思想和架構,也不是完成了軟件的新的革命,而是充分利用了一些已有的優秀開源軟件,巧妙地把它們結合起來,使其在分佈式環境中作到了集羣式服務管理能力、監控能力、展現能力。這些優秀開源軟件有:
Ambari架構採用的是Server/Client的模式,主要由兩部分組成:ambari-agent和ambari-server。ambari依賴其它已經成熟的工具,例如其ambari-server 就依賴python,而ambari-agent還同時依賴ruby, puppet,facter等工具,還有它也依賴一些監控工具nagios和ganglia用於監控集羣情況。其中:
1、Ambari系統架構
除了ambari-server和ambari-agent,ambari還提供一個界面清亮的管理監控頁面ambari-web,這些頁面由ambari-server提供。ambari-server開放了REST API,這些API也主要分兩大類,其中一類爲ambari-web提供管理監控服務,另外一類用於與ambari-agent交互,接受ambari-agent向ambari-server發送的心跳請求。下圖是Ambari的系統架構。其中master模塊接受API和Agent Interface的請求,完成ambari-server的集中式管理監控邏輯,而每一個agent節點只負責所在節點的狀態採集及維護。
2、Ambari-Agent內部架構
ambari-agent是一個無狀態的。其功能主要分兩部分:
所以它有兩種隊列:
3、Ambari-Server內部架構
ambari-server是一個有狀態的,它維護着本身的一個有限狀態機FSM。同時這些狀態機存儲在數據庫中,前期數據庫主要採用postgres。以下圖所示,server端主要維護三類狀態:
Ambari-server的Heartbeat Handler模塊用於接收各個agent的心跳請求(心跳請求裏面主要包含兩類信息:節點狀態信息和返回的操做結果),把節點狀態信息傳遞給FSM狀態機去維護着該節點的狀態,而且把返回的操做結果信息返回給Action Manager去作進一步的處理。
Coordinator模塊又能夠稱爲API handler,主要在接收WEB端操做請求後,會檢查它是否符合要求,stage planner分解成一組操做,最後提供給Action Manager去完成執行操做。
所以,從上圖就能夠看出,Ambari-Server的全部狀態信息的維護和變動都會記錄在數據庫中,用戶作一些更改服務的操做都會在數據庫上作一些相應的記錄,同時,agent經過心跳來得到數據庫的變動歷史。