關于 Ganglia 軟件,Ganglia是一個跨平臺可擴展的,高性能計算系統下的分布式監控系統,如集群和網格。它是基于分層設計,它使用廣泛的技術,如XML數據代表,便攜數據傳輸,RRDtool用于數據存儲和可視化。它利用精心設計的數據結構和算法實現每節點間并發非常低的。
它已移植到廣泛的操作系統和處理器架構上,目前在世界各地成千上萬的集群正在使用。它已被用來連結大學校園和世界各地,可以處理2000節點的規模。
一、安裝環境
Ubuntu Server 14.04
安裝gmetad的機器:192.168.1.50(Spark-Master)
安裝gmond的機器:192.168.1.50(Spark-Master),192.168.1.51(Spark-Slave1),192.168.1.52(Spark-Slave2),192.168.1.53(Spark-Slave3)
瀏覽監控web頁面的機器:192.168.51.50(Spark-Master)
二、介紹
Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,通常被稱為ganglia- web。
gmond 是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息。
gmetad 也是一個守護進程,他定期檢查gmonds ,從那里拉取數據,并將他們的指標存儲在RRD存儲引擎中。它可以查詢多個集群并聚合指標。RRD也被用于生成用戶界面的web前端。
ganglia- web 顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。
三、安裝
1、確保在 Ubuntu14.04 上安裝了 LAMP 服務
Ganglia 由兩個所謂主要守護進程 gmond(Ganglia 監測守護進程)和 gmetad(Ganglia 元守護進程),一個基于 PHP 的 Web 前端和其他一些小的實用程序。
2、在 Ubuntu14.04 上安裝 Ganglia
打開終端,運行以下命令:
sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend
3、配置 Ganglia
已經完成了基本的安裝,現在我們按照下面必要的步驟來配置。
4、Ganglia 主節點配置(Spark-Master)
現在需要復制 Ganglia webfrontend Apache 配置,使用下面的命令來正確的位置:
sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf
現在需要使用以下命令來編輯 Ganglia 元守護程序的配置文件:
sudo vi /etc/ganglia/gmetad.conf
更改如下:
data_source "MySpark" 10 Spark-Master:8649 Spark-Slave1:8649 Spark-Slave2:8649 Spark-Slave3:8649
通過以上列出機器服務的數據源,IP:端口或服務器名稱:端口。如果未指定端口號8649(默認gmond端口)。
case_sensitive_hostnames 1------設置為1,則不會將hostname中大寫變成小寫
單播:可以跨網段傳播,只將信息發送給指定的機器。要配置成為單播你應該指定一個(或者多個)接受的主機。
組播:在機器所處的網段中發送廣播,發送給位于同一網段的所有機器。如果你正在使用組播傳輸,那么你沒必要改變任何東西,因為這是Ganglia包安裝默認的。唯一要做的就是把gmetad指向一個或幾個運行著gmond的主機。沒有必要列出每一個單個主機,因為gmond被設置為接受模式時會包含所有主機的列表以及整個集群的統計信息。
使用了單播模式,需要使用下面的命令編輯主節點的配置文件:
sudo vi /etc/ganglia/gmond.conf
更改如下:(紅色為改動)
globals {
daemonize = yes
setuid = yes
user = hadoop------運行Ganglia的用戶
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0
cleanup_threshold = 300
gexec = no
send_metadata_interval = 5------發送數據的時間間隔
}
cluster {
name = "MySpark"------集群名稱
owner = "hadoop"------運行Ganglia的用戶
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 192.168.1.50------注釋掉組播
host = 192.168.1.50------發送給安裝gmetad的機器
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 192.168.1.50------注釋掉組播
port = 8649
}
保存并關閉文件。
需要重啟服務:
sudo /etc/init.d/ganglia-monitor restart
sudo /etc/init.d/gmetad start
sudo /etc/init.d/apache2 restart
現在你可以使用以下命令訪問ganglia webinterface:
5、Ganglia 客戶端配置(Spark-Slave*)
需要安裝以下所有服務器要監視客戶端包:
sudo apt-get install ganglia-monitor
需要使用下面的命令編輯gmond.conf文件:
sudo vi /etc/ganglia/gmond.conf
更改如下:(紅色為改動)
globals {
daemonize = yes
setuid = yes
user = hadoop
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
host_dmax = 0
cleanup_threshold = 300
gexec = no
send_metadata_interval = 5
}
cluster {
name = "MySpark"
owner = "hadoop"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 192.168.1.50
host = 192.168.1.50
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 192.168.1.50
port = 8649
}
保存并退出。
重啟 ganglia monitor 服務:
sudo /etc/init.d/ganglia-monitor restart
6、監控Hadoop集群
(1) 修改Hadoop的配置文件/etc/hadoop/hadoop-metrics.properties(適用于Ganglia老版本)
dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
dfs.period=10
dfs.servers=192.168.1.50:8649
mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
mapred.period=10
mapred.servers=192.168.1.50:8649
jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
jvm.period=10
jvm.servers=192.168.1.50:8649
rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
rpc.period=10
rpc.servers=192.168.1.50:8649
ugi.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
ugi.period=10
ugi.servers=192.168.1.50:8649
(2) 修改Hadoop的配置文件/etc/hadoop/hadoop-metrics2.properties(適用于Ganglia新版本)
*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
*.period=10
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
namenode.sink.ganglia.servers=192.168.1.50:8649
datanode.sink.ganglia.servers=192.168.1.50:8649
resourcemanager.sink.ganglia.servers=192.168.1.50:8649
nodemanager.sink.ganglia.servers=192.168.1.50:8649
maptask.sink.ganglia.servers=192.168.1.50:8649
reducetask.sink.ganglia.servers=192.168.1.50:8649
所有的servers都修改為安裝為gmetad的機器IP(Spark-Master),保存完以后將配置文件分發到各個Slave節點的${HADOOP_HOME}/etc/hadoop目錄下,重啟Hadoop集群即可。