1.概述
最近,有朋友私密我,Hadoop有什麼好的監控工具,其實,Hadoop的監控工具還是蠻多的。今天給大家分享一個老牌監控工具Ganglia,這個在企業用的也算是比較多的,Hadoop對它的相容也很好,不過就是監控介面就不是很美觀。下次給大家介紹另一款工具——Hue,這個介面官方稱為Hadoop UI,介面美觀,功能也比較豐富。今天,在這裡主要給大家介紹Ganglia這款監控工具,介紹的內容主要包含如下:
- Ganglia背景
- Ganglia安裝部署、配置
- Hadoop叢集配置Ganglia
- 啟動、預覽Ganglia
下面開始今天的內容分享。
2.Ganglia背景
Ganglia是UC Berkeley發起的一個開源叢集監視專案,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統效能,如:cpu 、mem、硬碟利用率, I/O負載、網路流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體效能起到重要作用。
Ganglia其核心由3部分組成:
- gmond:執行在每個節點上監視並收集節點資訊,可以同時收發統計資訊,它可以執行在廣播模式和單播模式中。
- gmetad:從gmond以poll的方式收集和儲存原資料。
- ganglia-web:部署在gmetad機器上,訪問gmetad儲存的後設資料並由Apache Web提高使用者訪問介面。
下面,我們來看看Ganglia的架構圖,如下圖所示:
從架構圖中,我們可以知道Ganglia支援故障轉移,統計可以配置多個收集節點。所以我們在配置的時候,可以按需選擇去配置Ganglia,既可以配置廣播,也可以配置單播。根據實際需求和手上資源來決定。
3.Ganglia安裝部署、配置
3.1安裝
本次安裝的Ganglia工具是基於Apache的Hadoop-2.6.0,若是未安裝Hadoop叢集,可以參考我寫的《配置高可用的Hadoop平臺》。另外系統環境是CentOS 6.6。首先,我們下載Ganglia軟體包,步驟如下所示:
- 第一步:安裝yum epel源
[hadoop@nna ~]$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
- 第二步:安裝依賴包
[hadoop@nna ~]$ yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
- 第三步:檢視Ganglia安裝包
[hadoop@nna ~]$ yum search ganglia
然後,我為了簡便,把Ganglia安裝全部安裝,安裝命令如下所示:
- 第四步:安裝Ganglia
[hadoop@nna ~]$ yum -y install ganglia*
最後等待安裝完成,由於這裡資源有限,我將Ganglia Web也安裝在NNA節點上,另外,其他節點也需要安裝Ganglia的Gmond服務,該服務用來傳送資料到Gmetad,安裝方式參考上面的步驟。
3.2部署
在安裝Ganglia時,我這裡將Ganglia Web部署在NNA節點,其他節點部署Gmond服務,下表為各個節點的部署角色:
節點 | Host | 角色 |
NNA | 10.211.55.26 | Gmetad、Gmond、Ganglia-Web |
NNS | 10.211.55.27 | Gmond |
DN1 | 10.211.55.16 | Gmond |
DN2 | 10.211.55.17 | Gmond |
DN3 | 10.211.55.18 | Gmond |
Ganglia部署在Hadoop叢集的分佈圖,如下所示:
3.3配置
在安裝好Ganglia後,我們需要對Ganglia工具進行配置,在由Ganglia-Web服務的節點上,我們需要配置Web服務。
-
ganglia.conf
[hadoop@nna ~]$ vi /etc/httpd/conf.d/ganglia.conf
修改內容如下所示:
# # Ganglia monitoring system php web frontend # Alias /ganglia /usr/share/ganglia <Location /ganglia> Order deny,allow # Deny from all Allow from all # Allow from 127.0.0.1 # Allow from ::1 # Allow from .example.com </Location>
注:紅色為新增的內容,綠色為登出的內容。
- gmetad.conf
[hadoop@nna ~]$ vi /etc/ganglia/gmetad.conf
修改內容如下所示:
data_source "hadoop" nna nns dn1 dn2 dn3
這裡“hadoop”表示叢集名,nna nns dn1 dn2 dn3表示節點域名或IP。
- gmond.conf
[hadoop@nna ~]$ vi /etc/ganglia/gmond.conf
修改內容如下所示:
/* * The cluster attributes specified will be used as part of the <CLUSTER> * tag that will wrap all hosts collected by this instance. */ cluster { name = "hadoop" owner = "unspecified" latlong = "unspecified" url = "unspecified" } /* Feel free to specify as many udp_send_channels as you like. Gmond used to only support having a single channel */ udp_send_channel { #bind_hostname = yes # Highly recommended, soon to be default. # This option tells gmond to use a source address # that resolves to the machine's hostname. Without # this, the metrics may appear to come from any # interface and the DNS names associated with # those IPs will be used to create the RRDs. # mcast_join = 239.2.11.71 host = 10.211.55.26 port = 8649 ttl = 1 } /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel { # mcast_join = 239.2.11.71 port = 8649 bind = 10.211.55.26 retry_bind = true # Size of the UDP buffer. If you are handling lots of metrics you really # should bump it up to e.g. 10MB or even higher. # buffer = 10485760 }
這裡我採用的是單播,cluster下的name要與gmetad中的data_source配置的名稱一致,傳送節點地址配置為NNA的IP,接受節點配置在NNA上,所以繫結的IP是NNA節點的IP。以上配置是在有Gmetad服務和Ganglia-Web服務的節點上需要配置,在其他節點只需要配置gmond.conf檔案即可,內容配置如下所示:
/* Feel free to specify as many udp_send_channels as you like. Gmond used to only support having a single channel */ udp_send_channel { #bind_hostname = yes # Highly recommended, soon to be default. # This option tells gmond to use a source address # that resolves to the machine's hostname. Without # this, the metrics may appear to come from any # interface and the DNS names associated with # those IPs will be used to create the RRDs. # mcast_join = 239.2.11.71 host = 10.211.55.26 port = 8649 ttl = 1 } /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel { # mcast_join = 239.2.11.71 port = 8649 # bind = 10.211.55.26 retry_bind = true # Size of the UDP buffer. If you are handling lots of metrics you really # should bump it up to e.g. 10MB or even higher. # buffer = 10485760 }
4.Hadoop叢集配置Ganglia
在Hadoop中,對Ganglia的相容是很好的,在Hadoop的目錄下/hadoop-2.6.0/etc/hadoop,我們可以找到hadoop-metrics2.properties檔案,這裡我們修改檔案內容如下所示,命令如下所示:
[hadoop@nna hadoop]$ vi hadoop-metrics2.properties
修改內容如下所示:
namenode.sink.ganglia.servers=nna:8649 #datanode.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649 resourcemanager.sink.ganglia.servers=nna:8649 #nodemanager.sink.ganglia.servers=yourgangliahost_1:8649,yourgangliahost_2:8649 mrappmaster.sink.ganglia.servers=nna:8649 jobhistoryserver.sink.ganglia.servers=nna:8649
這裡修改的是NameNode節點的內容,若是修改DataNode節點資訊,內容如下所示:
#namenode.sink.ganglia.servers=nna:8649 datanode.sink.ganglia.servers=dn1:8649 #resourcemanager.sink.ganglia.servers=nna:8649 nodemanager.sink.ganglia.servers=dn1:8649 #mrappmaster.sink.ganglia.servers=nna:8649 #jobhistoryserver.sink.ganglia.servers=nna:8649
其他DN節點可以以此作為參考來進行修改。
另外,在配置完成後,若之前Hadoop叢集是執行的,這裡需要重啟叢集服務。
5.啟動、預覽Ganglia
Ganglia的啟動命令有start、restart以及stop,這裡我們分別在各個節點啟動相應的服務,各個節點需要啟動的服務如下:
- NNA節點:
[hadoop@nna ~]$ service gmetad start
[hadoop@nna ~]$ service gmond start
[hadoop@nna ~]$ service httpd start
- NNS節點:
[hadoop@nns ~]$ service gmond start
- DN1節點:
[hadoop@dn1 ~]$ service gmond start
- DN2節點:
[hadoop@dn2 ~]$ service gmond start
- DN3節點:
[hadoop@dn3 ~]$ service gmond start
然後,到這裡Ganglia的相關服務就啟動完畢了,下面給大家附上Ganglia監控的執行截圖,如下所示:
6.總結
在安裝Hadoop監控工具Ganglia時,需要在安裝的時候注意一些問題,比如:系統環境的依賴,由於Ganglia需要依賴一些安裝包,在安裝之前把依賴環境準備好,另外在配置Ganglia的時候需要格外注意,理解Ganglia的架構很重要,這有助於我們在Hadoop叢集上去部署相關的Ganglia服務,同時,在配置Hadoop安裝包的配置檔案下(/etc/hadoop)目錄下,配置Ganglia配置檔案。將hadoop-metrics2.properties配置檔案整合到Hadoop叢集中去。
7.結束語
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!