Ubuntu安装Ganglia并监控Hadoop集群

来源:互联网 发布:广联达定额预算软件 编辑:程序博客网 时间:2024/04/28 07:32

关于 Ganglia 软件,Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。它已 被用来连结大学校园和世界各地,可以处理2000节点的规模。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

本文采用的是ubuntu14.04 LTS-32bit的系统,安装自带Ganglia

1.首先,需要确保在 Ubuntu14.04 上安装了 LAMP 服务。

如果系统没有安装LAMP服务,请参考我的上一篇博文《Ubuntu上安装 LAMP Server

Ganglia 由两个所谓主要守护进程 gmond(Ganglia 监测守护进程)和 gmetad(Ganglia 元守护进程),一个基于 PHP 的 Web 前端和其他一些小的实用程序。

1.1Ganglia组件

Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为ganglia-web。

Gmond :是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率。他同时也会发送用户通过添加C/Python模块来自定义的指标。 如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。

Gmetad:也是一个守护进程,他定期检查gmonds,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的web前端。

Ganglia-web :顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。 集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。

一般来说每个集群需要一个接收的gmond,每个网站需要一个gmetad。 

Ganglia工作流如图所示:


左边是运行在各个节点上的gmond进程,这个进程的配置只由节点上/etc/gmond.conf的文件决定。所以,在各个监视节点上都需要安装和配置该文件。

右上角是更加负责的中心机(通常是这个集群中的一台,也可以不是)。在这个台机器上运行这着gmetad进程,收集来自各个节点上的信息并存储在RRDtool上,该进程的配置只由/etc/gmetad.conf决定。   

右下角显示了关于网页方面的一些信息。我们的浏览网站时调用php脚本,从RRDTool数据库中抓取信息,动态的生成各类图表。

1.2 Ganglia运行模式(单播与多播)  

Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。

单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。

多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。

2.在 Ubuntu14.04 上安装 Ganglia 

本文采用的是apt-get方式进行安装,也可以去ganglia官网下载最新版本进行搭建安装

master节点:

sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend

在安装过程中,你应该会看到类似下面的安装后与apache2服务器重启选择,直接 Yes,然后按Enter键。

将ganglia的文件链接到apache的默认目录下

sudo ln -s /usr/share/ganglia-webfrontend /var/www/ganglia

当然也可以直接拷贝。

slave节点:

sudo apt-get install ganglia-monitor

在主节点上安装ganglia-webfrontend和ganglia-monitor。在其他监视节点上,只需要安装ganglia-monitor即可

3.Ganglia 主节点配置

复制 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 "hadoop-cluster" 10.15.43.214(master主机地址)

修改为:

data_source "hadoop-cluster" 3 10.15.43.***:8649 10.15.43.***:8649 10.15.43.***:8649 

setuid_username "nobody"

rrd_rootdir "/var/lib/ganglia/rrds"

gridname "hadoop-cluster"

data_source中hadoop-cluster与gmond.conf中name一致

列出机器服务的数据源,集群数量,IP:端口或服务器名称:端口,一台master,2台slave,中间为空格。如果未指定端口号8649(默认gmond端口)。

需要使用下面的命令编辑主节点的配置文件:

sudo vi /etc/ganglia/gmond.conf

做下面的变化:

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside

* of a tag. If you do not specify a cluster tag, then all will
* NOT be wrapped inside of a tag. */
cluster {
name = "unspecified"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

修改为:

cluster {
name = "hadoop-cluster"/需要和data_source的源名称一致/
owner = "unspecified"/即为需要使用ganglia的用户名/
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 {
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}

修改为:

/* Feel free to specify as many udp_send_channels as you like. Gmond
used to only support having a single channel */
udp_send_channel {
# mcast_join = 239.2.11.71
host = 10.15.43.214/为那台可以查看监控信息的主机地址,安装gmetad的主机/
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 = 239.2.11.71
}

修改为:

/* 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 = 239.2.11.71
}

保存并关闭文件。

4.Ganglia 集群slave节点配置
将master修改好的/etc/ganglia/gmond.conf 复制到slave个节点,替换原有文件。

5.hadoop配置 

在所有hadoop所在的节点,均需要配置hadoop-metrics2.properties,配置如下:

#   Licensed to the Apache Software Foundation (ASF) under one or more#   contributor license agreements.  See the NOTICE file distributed with#   this work for additional information regarding copyright ownership.#   The ASF licenses this file to You under the Apache License, Version 2.0#   (the "License"); you may not use this file except in compliance with#   the License.  You may obtain a copy of the License at##       http://www.apache.org/licenses/LICENSE-2.0##   Unless required by applicable law or agreed to in writing, software#   distributed under the License is distributed on an "AS IS" BASIS,#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.#   See the License for the specific language governing permissions and#   limitations under the License.## syntax: [prefix].[source|sink].[instance].[options]# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details#注释掉以前原有配置#*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink# default sampling period, in seconds#*.period=10# The namenode-metrics.out will contain metrics from all context#namenode.sink.file.filename=namenode-metrics.out# Specifying a special sampling period for namenode:#namenode.sink.*.period=8#datanode.sink.file.filename=datanode-metrics.out# the following example split metrics of different# context to different sinks (in this case files)#jobtracker.sink.file_jvm.context=jvm#jobtracker.sink.file_jvm.filename=jobtracker-jvm-metrics.out#jobtracker.sink.file_mapred.context=mapred#jobtracker.sink.file_mapred.filename=jobtracker-mapred-metrics.out#tasktracker.sink.file.filename=tasktracker-metrics.out#maptask.sink.file.filename=maptask-metrics.out#reducetask.sink.file.filename=reducetask-metrics.out*.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=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span>:8649  resourcemanager.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span>:8649  datanode.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span>:8649    nodemanager.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span>:8649    maptask.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span><span style="font-family: Arial, Helvetica, sans-serif;">:8649    </span>reducetask.sink.ganglia.servers=<span style="font-family: Arial, Helvetica, sans-serif;">10.15.43.214</span>:8649

6.Hbase配置
在所有的hbase节点中均配置hadoop-metrics2-hbase.properties,配置如下:

# syntax: [prefix].[source|sink].[instance].[options]# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details#*.sink.file*.class=org.apache.hadoop.metrics2.sink.FileSink# default sampling period#*.period=10# Below are some examples of sinks that could be used# to monitor different hbase daemons.# hbase.sink.file-all.class=org.apache.hadoop.metrics2.sink.FileSink# hbase.sink.file-all.filename=all.metrics# hbase.sink.file0.class=org.apache.hadoop.metrics2.sink.FileSink# hbase.sink.file0.context=hmaster# hbase.sink.file0.filename=master.metrics# hbase.sink.file1.class=org.apache.hadoop.metrics2.sink.FileSink# hbase.sink.file1.context=thrift-one# hbase.sink.file1.filename=thrift-one.metrics# hbase.sink.file2.class=org.apache.hadoop.metrics2.sink.FileSink# hbase.sink.file2.context=thrift-two# hbase.sink.file2.filename=thrift-one.metrics# hbase.sink.file3.class=org.apache.hadoop.metrics2.sink.FileSink# hbase.sink.file3.context=rest# hbase.sink.file3.filename=rest.metrics*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31  *.sink.ganglia.period=10  hbase.sink.ganglia.period=10  hbase.sink.ganglia.servers=10.15.43.214:8649
7.启动hadoop、hbase集群

start-dfs.sh
start-yarn.sh
start-hbase.sh

8.启动Ganglia
先需要重启hadoop和hbase 。在各个节点上启动gmond服务,主节点还需要启动gmetad服务,同时重启apache2。
使用apt-get方式安装的Ganglia,可以直接用service方式启动。

sudo service ganglia-monitor start(每台机器都需要启动)
sudo service gmetad start(在安装了ganglia-webfrontend的机器上启动

sudo /etc/init.d/apache2 restart(在主机上重启apache2)

或者:

sudo /etc/init.d/ganglia-monitor start
sudo /etc/init.d/gmetad start
sudo /etc/init.d/apache2 restart

9.最终检验
登录浏览器查看:http://10.15.43.214/ganglia,如果Hosts up为9即表示安装成功。

如下图所示:



若安装不成功,有几个很有用的调试命令:
以调试模式启动gmetad:gmetad -d 9
查看gmetad收集到的XML文件:telnet master 8649

gmetad收集到的信息被放到/var/lib/ganglia/rrds/

可以通过以下命令检查是否有数据在传输 tcpdump port 8649

10.参考网站博文(非常受益):

http://www.linuxidc.com/Linux/2014-08/105838.htm

http://www.aboutyun.com/thread-8129-1-1.html

http://www.cr173.com/html/18899_1.html

http://www.linuxidc.com/Linux/2015-03/114631.htm

0 0
原创粉丝点击