使用ganglia监控hadoop及hbase集群
介紹性內(nèi)容來自:http://www.uml.org.cn/sjjm/201305171.asp
一、Ganglia簡介
Ganglia 是 UC Berkeley 發(fā)起的一個開源監(jiān)視項(xiàng)目,設(shè)計用于測量數(shù)以千計的節(jié)點(diǎn)。每臺計算機(jī)都運(yùn)行一個收集和發(fā)送度量數(shù)據(jù)(如處理器速度、內(nèi)存使用量等)的名為 gmond 的守護(hù)進(jìn)程。它將從操作系統(tǒng)和指定主機(jī)中收集。接收所有度量數(shù)據(jù)的主機(jī)可以顯示這些數(shù)據(jù)并且可以將這些數(shù)據(jù)的精簡表單傳遞到層次結(jié)構(gòu)中。正因?yàn)橛羞@種層次結(jié)構(gòu)模式,才使得 Ganglia 可以實(shí)現(xiàn)良好的擴(kuò)展。gmond 帶來的系統(tǒng)負(fù)載非常少,這使得它成為在集群中各臺計算機(jī)上運(yùn)行的一段代碼,而不會影響用戶性能
1.1 Ganglia組件
Ganglia 監(jiān)控套件包括三個主要部分:gmond,gmetad,和網(wǎng)頁接口,通常被稱為ganglia-web。
Gmond :是一個守護(hù)進(jìn)程,他運(yùn)行在每一個需要監(jiān)測的節(jié)點(diǎn)上,收集監(jiān)測統(tǒng)計,發(fā)送和接受在同一個組播或單播通道上的統(tǒng)計信息 如果他是一個發(fā)送者(mute=no)他會收集基本指標(biāo),比如系統(tǒng)負(fù)載(load_one),CPU利用率。他同時也會發(fā)送用戶通過添加C/Python模塊來自定義的指標(biāo)。 如果他是一個接收者(deaf=no)他會聚合所有從別的主機(jī)上發(fā)來的指標(biāo),并把它們都保存在內(nèi)存緩沖區(qū)中。
Gmetad:也是一個守護(hù)進(jìn)程,他定期檢查gmonds,從那里拉取數(shù)據(jù),并將他們的指標(biāo)存儲在RRD存儲引擎中。他可以查詢多個集群并聚合指標(biāo)。他也被用于生成用戶界面的web前端。
Ganglia-web :顧名思義,他應(yīng)該安裝在有g(shù)metad運(yùn)行的機(jī)器上,以便讀取RRD文件。 集群是主機(jī)和度量數(shù)據(jù)的邏輯分組,比如數(shù)據(jù)庫服務(wù)器,網(wǎng)頁服務(wù)器,生產(chǎn),測試,QA等,他們都是完全分開的,你需要為每個集群運(yùn)行單獨(dú)的gmond實(shí)例。
一般來說每個集群需要一個接收的gmond,每個網(wǎng)站需要一個gmetad。
圖1 ganglia工作流
Ganglia工作流如圖1所示:
左邊是運(yùn)行在各個節(jié)點(diǎn)上的gmond進(jìn)程,這個進(jìn)程的配置只由節(jié)點(diǎn)上/etc/gmond.conf的文件決定。所以,在各個監(jiān)視節(jié)點(diǎn)上都需要安裝和配置該文件。
右上角是更加負(fù)責(zé)的中心機(jī)(通常是這個集群中的一臺,也可以不是)。在這個臺機(jī)器上運(yùn)行這著gmetad進(jìn)程,收集來自各個節(jié)點(diǎn)上的信息并存儲在RRDtool上,該進(jìn)程的配置只由/etc/gmetad.conf決定。
右下角顯示了關(guān)于網(wǎng)頁方面的一些信息。我們的瀏覽網(wǎng)站時調(diào)用php腳本,從RRDTool數(shù)據(jù)庫中抓取信息,動態(tài)的生成各類圖表。
1.2 Ganglia運(yùn)行模式(單播與多播)
Ganglia的收集數(shù)據(jù)工作可以工作在單播(unicast)或多播(multicast)模式下,默認(rèn)為多播模式。
單播:發(fā)送自己收集到的監(jiān)控數(shù)據(jù)到特定的一臺或幾臺機(jī)器上,可以跨網(wǎng)段。
多播:發(fā)送自己收集到的監(jiān)控數(shù)據(jù)到同一網(wǎng)段內(nèi)所有的機(jī)器上,同時收集同一網(wǎng)段內(nèi)的所有機(jī)器發(fā)送過來的監(jiān)控數(shù)據(jù)。因?yàn)槭且詮V播包的形式發(fā)送,因此需要同一網(wǎng)段內(nèi)。但同一網(wǎng)段內(nèi),又可以定義不同的發(fā)送通道。
二、安裝ganglia
1、拓?fù)湔f明
3臺主機(jī),分別為:
其中master將gmeta及web,三臺機(jī)都作gmon
以下步驟均使用root用戶執(zhí)行
2、master上安裝gmeta及web
yum install ganglia-web.x86_64 yum install ganglia-gmetad.x86_64
3、在三臺機(jī)上都安撫gmond
yum install ganglia-gmond.x86_64
4、在三臺機(jī)器上配置/etc/ganglia/gmond.conf,修改以下內(nèi)容:
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 = 10.171.29.191port = 8649ttl = 1 } /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel {#mcast_join = 239.2.11.71port = 8649#bind = 239.2.11.71 }
即將默認(rèn)的多播地址改為master地址,將udp_recv_channel 的2個IP注釋掉。
5、在master上修改/etc/ganglia/gmetad.conf
修改data_source,改成:
data_source "my cluster” 10.171.29.191
6、ln -s /usr/share/ganglia /var/www/ganglia
若有問題,可以將/usr/share/ganglia的內(nèi)容直接復(fù)制到/var/www/ganglia
7、修改/etc/httpd/conf.d/ganglia.conf,改成:
## Ganglia monitoring system php web frontend#Alias /ganglia /usr/share/ganglia<Location /ganglia>Order deny,allowAllow from allAllow from 127.0.0.1Allow from ::1# Allow from .example.com</Location>即將??? Deny from all 改為??? Allow from all,否則在頁面訪問時有權(quán)限問題。
8、啟動
service gmetad start service gmond start /usr/sbin/apachectl start
9、從頁面上訪問
http://ip/ganglia
一些注意問題:
1、gmetad收集到的信息被放到/var/lib/ganglia/rrds/
2、可以通過以下命令檢查是否有數(shù)據(jù)在傳輸
tcpdump port 8649
三、配置hadoop與hbase
1、配置hadoop
hadoop-metrics2.properties
# syntax: [prefix].[source|sink|jmx].[instance].[options] # See package.html for org.apache.hadoop.metrics2 for details*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink#namenode.sink.file.filename=namenode-metrics.out#datanode.sink.file.filename=datanode-metrics.out#jobtracker.sink.file.filename=jobtracker-metrics.out#tasktracker.sink.file.filename=tasktracker-metrics.out#maptask.sink.file.filename=maptask-metrics.out#reducetask.sink.file.filename=reducetask-metrics.out # Below are for sending metrics to Ganglia # # for Ganglia 3.0 support # *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30 # # for Ganglia 3.1 support *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31*.sink.ganglia.period=10# default for supportsparse is false *.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 menode.sink.ganglia.servers=10.171.29.191:8649datanode.sink.ganglia.servers=10.171.29.191:8649jobtracker.sink.ganglia.servers=10.171.29.191:8649 tasktracker.sink.ganglia.servers=10.171.29.191:8649maptask.sink.ganglia.servers=10.171.29.191:8649reducetask.sink.ganglia.servers=10.171.29.191:86492、配置hbase
hadoop-metrics.properties
重啟hadoop與hbase。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的使用ganglia监控hadoop及hbase集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: irms模拟数据生成及数据分析
- 下一篇: Mahout快速入门教程