ganglia監控hadoop叢集配置
阿新 • • 發佈:2019-02-05
本篇文章是參考網上別人的部落格,加自己實踐後記錄下來的,免得自己又忘了,感謝網際網路的分享精神,感謝大牛們的分享。
ganglia簡介
- Metrics- 監控電腦的執行資料
- Node - 一臺電腦,或許擁有多個CPU,中文稱之為節點。
- Cluster - 一組節點,中文稱之為簇。通常節點之間擁有達到G位元的高頻寬,簇內通過組播協議,每個節點組播自己的資料,所以每個節點擁有整個簇的狀態,這種冗餘設計可以提高簇的魯棒性。一般簇內節點為相同的系統和體系結構,由同一個管理員管理。
- Grid - 一組簇,中文可稱之為網格。網格的用處是在一個大範圍內把各異構的簇通過寬頻匯聚在一起。
Ganglia的各種組成
功能 | 名稱及配置檔案 | 位置 |
---|---|---|
資料採集器 | 名叫gmond(Ganglia MONitor Daemon)的服務程式,配置檔案是/etc/ganglia/gmond.conf | 位於每個Node上 |
資料混合收集器 | 名叫gmetad(Ganglia METAdata Daemon)的服務程式,配置檔案是/etc/ganglia/gmetad.conf。它通過輪詢收集gmond的資料,並聚合簇的各類資訊,然後儲存在本地rrdtool的資料庫中 | 最好每個cluster都有一個gmetad,以便能構建多級網路 |
Web視覺化工具 | 這是用PHP指令碼實現的將資料視覺化,並畫出表格。可以是任何支援PHP、SSL和XML的web伺服器。一般都用Apache2 web伺服器 | 一般與gmetad部署在一個節點上 |
額外的高階工具 gmetric可以用來新增你需要監控的Node額外狀態 | ||
gstat可以直接獲得Ganglia的資料 每臺需要這些功能的Node上 |
實驗環境
機器 | 系統 | 軟體 |
---|---|---|
ip1 | centos 7 | gmetad + gmond +ganglia-web 3.7.2 |
ip2 | centos 5 | gmond 3.7.1 |
ip3 | centos 5 | gmond 3.7.1 |
ip4 | centos 5 | gmond 3.7.1 |
ip5 | centos 5 | gmond 3.7.1 |
ip6 | centos 5 | gmond 3.7.1 |
ip7 | centos 5 | gmond 3.7.1 |
ganglia安裝配置
安裝
- ip1 安裝ganglia主節點
- yum -y install epel-release
- yum -y install rrdtool httpd
- yum -y install ganglia-devel ganglia-gmetad ganglia-gmond
- yum -y install php ganglia-web
- ip2-ip7 安裝ganglia從節點
- yum -y install epel-release
- yum -y install ganglia-mond
配置
- ganglia配置檔案目錄:/etc/ganglia
- rrd資料庫存放目錄:/var/lib/ganglia/rrds
- httpd主站點目錄:/var/www/html
- ganglia-web安裝目錄:/usr/share/ganglia
ganglia-web配置目錄:/etc/httpd/conf.d/ganglia.conf
相關配置檔案修改
- 將ganglia-web安裝目錄連結到httpd主站點目錄
將 ganglia-web 的 站 點 目 錄 連 接 到 httpd 主 站 點 目 錄 $ ln -s /usr/share/ganglia /var/www/html - 修改httpd主站點目錄下ganglia站點目錄的訪問許可權
將 ganglia 站點目錄訪問許可權改為 apache:apache,否則會報錯
- 將ganglia-web安裝目錄連結到httpd主站點目錄
$ chown -R apache:apache /var/www/html/ganglia
$ chmod -R 755 /var/www/html/ganglia
- 修改rrd資料庫存放目錄訪問許可權 將 rrd 資料庫存放目錄訪問許可權改為
$ chown -R ganglia:ganglia /var/lib/ganglia/rrds
- 修改ganglia-web的訪問許可權:修改/etc/httpd/conf.d/ganglia.conf
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Require all granted
#Require ip 10.1.2.3
#Require host example.org
</Location>
- 配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster" ...
}
udp_send_channel {
#the host who gather this cluster's monitoring data and send these data to gmetad node
host = ip1
port = 8649
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
2.2 Hadoop cluster被監測節點的配置 配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster" ...
}
udp_send_channel {
# the host who gather this cluster's monitoring data and send these data to gmetad node
host = ip1
port = 8649
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
Hadoop配置
主節點:
# 修改/hadoop/etc/hadoop/hadoop-metrics2.properties
namenode.sink.ganglia.servers=ip1:8649
resourcemanager.sink.ganglia.servers=ip1:8649
mrappmaster.sink.ganglia.servers=ip1:8649
jobhistoryserver.sink.ganglia.servers=ip1:8649
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
從節點
datanode.sink.ganglia.servers=ip1:8649
nodemanager.sink.ganglia.servers=ip1:8649
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
成果
可以看到有datanode相關資訊
注意問題
- ganglia反應有點慢,每次重啟後,資料得等一陣子才顯示出來。這個也跟設定的有關,10秒一次顯示
- 我本來配置每個節點都有gmond,cluster的資訊傳送到本地的gmond,由gmond傳送給gmetad,但是一直不成功。我使用了telnet localhost 8649,能看到資料,但是gmetad就是不顯示。暫時也沒找到什麼原因。