前言

近期在研究云监控的相关工具,感觉ganglia颇有亮点,能从一个集群总体的角度来展现数据. 但是安装过程稍过复杂,相关依赖稍多,故写此文章与大家分享下.

本文不解说相关原理,若想了解请參考其它资料.

本文目的: 即使之前未触过ganglia,也能依照文中步骤搭建自己的ganglia监控集群.

@Author duangr

@Website http://my.oschina.net/duangr/blog/181585

1.相关环境

Host Name IP OS Arch
master 192.168.1.201 CentOS 6.4 x86_64
slave1 192.168.1.202 CentOS 6.4 x86_64
slave2 192.168.1.203 CentOS 6.4 x86_64

所有主机确认:

  • iptables关闭

  • SELinux disabled

2.部署规划

监控服务主节点 master
被监控从节点

slave1

slave2

Ganglia监控服务的主节点须要安装:

  • ganglia

  • ganglia-web

  • php

  • apache

Ganglia被监控从节点须要安装:

  • ganglia

安装路径规划

ganglia安装路径 /usr/local/ganglia
php安装路径 /usr/local/php
apache安装路径 /usr/local/apache2
ganglia-web安装路径 /export/home/ganglia/ganglia-web-3.5.10
rrds数据路径 /var/lib/ganglia/rrdtool

3.代码获取

4.前提依赖

4.1 主机环境检查(所有主机节点)

  1. # rpm -q gcc glibc glibc-common rrdtool rrdtool-devel apr  apr-devel expat expat-devel  pcre pcre-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts
  2. gcc-4.4.7-3.el6.x86_64
  3. glibc-2.14.1-6.x86_64
  4. glibc-common-2.14.1-6.x86_64
  5. rrdtool-1.3.8-6.el6.x86_64
  6. rrdtool-devel-1.3.8-6.el6.x86_64
  7. apr-1.3.9-5.el6_2.x86_64
  8. apr-devel-1.3.9-5.el6_2.x86_64
  9. expat-2.0.1-11.el6_2.x86_64
  10. expat-devel-2.0.1-11.el6_2.x86_64
  11. pcre-7.8-6.el6.x86_64
  12. pcre-devel-7.8-6.el6.x86_64
  13. dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm
  14. dejavu-sans-mono-fonts-2.30-2.el6.noarch.rpm

若有缺失,请先安装. 可通过例如以下几个镜像站点下载相关安装包:

4.2 dejavu

  1. rpm -ivh dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm
  2. rpm -ivh dejavu-sans-mono-fonts-2.30-2.el6.noarch.rpm

4.3 rrdtool

  1. rpm -ivh rrdtool-1.3.8-6.el6.x86_64.rpm
  2. rpm -ivh rrdtool-devel-1.3.8-6.el6.x86_64.rpm

4.4 apr

  1. rpm -ivh apr-1.3.9-5.el6_2.x86_64.rpm
  2. rpm -ivh apr-devel-1.3.9-5.el6_2.x86_64.rpm

4.5 libexpat

  1. rpm -ivh expat-2.0.1-11.el6_2.x86_64.rpm
  2. rpm -ivh expat-devel-2.0.1-11.el6_2.x86_64.rpm

4.6 libpcre

  1. rpm -ivh pcre-7.8-6.el6.x86_64.rpm
  2. rpm -ivh pcre-devel-7.8-6.el6.x86_64.rpm

4.7 confuse

confuse-2.7  http://www.nongnu.org/confuse/

  1. tar -zxf confuse-2.7.tar.gz
  2. cd confuse-2.7
  3. ./configure CFLAGS=-fPIC --disable-nls
  4. make && make install

4.8 python

Python-2.7.3.tar.bz2   http://www.python.org/

  1. tar -jxf Python-2.7.3.tar.bz2
  2. ./configure  --prefix=/usr/local  --enable-shared
  3. make && make install

配置共享库

  1. vi /etc/ld.so.conf
  2. -- 添加例如以下内容
  3. /usr/local/lib

启用配置

ldconfig

检查是否生效

ldconfig -v |grep "libpython2.7.so"

5.编译安装

5.1 安装ganglia (所有节点都要安装)

  1. # tar -zxf ganglia-3.6.0.tar.gz
  2. # cd ganglia-3.6.0
  3. # ./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec --with-python=/usr/local
  4. Welcome to..
  5. ______                  ___
  6. / ____/___ _____  ____ _/ (_)___ _
  7. / / __/ __ `/ __ \/ __ `/ / / __ `/
  8. / /_/ / /_/ / / / / /_/ / / / /_/ /
  9. \____/\__,_/_/ /_/\__, /_/_/\__,_/
  10. /____/
  11. Copyright (c) 2005 University of California, Berkeley
  12. Version: 3.6.0
  13. Library: Release 3.6.0 0:0:0
  14. Type "make" to compile.
  15. # make && make install

5.2 安装ganglia-web (主节点安装)

  1. # tar -zxf ganglia-web-3.5.12.tar.gz -C /export/home/ganglia/
  2. # cd /export/home/ganglia/ganglia-web-3.5.12
  3. # cp conf_default.php conf.php

vi conf.php    调整为例如以下内容

vi header.php

  1. <?php
  2. session_start();
  3. ini_set('date.timezone','PRC');      --改动时区为本地时区
  4. if (isset($_GET['date_only'])) {
  5. $d = date("r");
  6. echo $d;
  7. exit(0);
  8. }

配置暂时文件夹

  1. cd /var/www/html/ganglia-web-3.5.12/dwoo
  2. mkdir cache
  3. chmod 777 cache
  4. mkdir compiled
  5. chmod 777 compiled

5.3 安装apache (主节点安装)

  1. tar -zxf httpd-2.2.23.tar.gz
  2. cd httpd-2.2.23
  3. ./configure --prefix=/usr/local/apache2
  4. make && make install

5.4 安装php (主节点安装)

  1. tar -zxf php-5.4.10.tar.gz
  2. cd php-5.4.10
  3. ./configure --prefix=/usr/local/php  --with-apxs2=/usr/local/apache2/bin/apxs  --with-mysql=/usr
  4. make  && make install

注:在实际安装过程中,我採用的是

  1. yum -y install httpd php

通过一条命令,就可以安装成功apache httpd 和 php支持,简单方便。

依照以上的安装方式, 配置出来的默认网站文件夹为/var/www/html/。新建一个php脚本info.php:

訪问http://localhost/info.php成功的话,即说明成功安装。

5.5 使用apache公布ganglia-web (主节点安装)

vi /usr/local/apache2/conf/httpd.conf

  1. ....
  2. Listen 80
  3. ....
  4. <IfModule dir_module>
  5. DirectoryIndex index.html index.php
  6. AddType application/x-httpd-php .php
  7. </IfModule>
  8. ....
  9. # 在文件最后添加例如以下内容
  10. # ganglia
  11. Alias /ganglia "/var/www/html/ganglia"
  12. <Directory "/var/www/html/ganglia">
  13. AuthType Basic
  14. Options None
  15. AllowOverride None
  16. Order allow,deny
  17. Allow from all
  18. </Directory>

启动httpd服务

6.配置Ganglia

6.1 配置gmetad (主节点配置)

  1. cd ganglia-3.6.0
  2. cp ./gmetad/gmetad.init /etc/init.d/gmetad
  3. cp ./gmetad/gmetad.conf /usr/local/ganglia/etc/

vi /etc/init.d/gmetad  --改动例如以下内容

  1. GMETAD=/usr/local/ganglia/sbin/gmetad

vi /usr/local/ganglia/etc/gmetad.conf     -- 改动例如以下内容

  1. data_source "hadoop-cluster" 10 master  slave1  slave2
  2. xml_port 8651
  3. interactive_port 8652
  4. rrd_rootdir "/var/lib/ganglia/rrds"
  5. case_sensitive_hostnames 0

改动rrds数据文件夹全部者

  1. chown -R nobody:nobody /var/lib/ganglia/rrds

启动gmetad服务,并设为开机自己主动执行

6.2 配置gmond (所有节点配置)

  1. cd ganglia-3.6.0
  2. cp ./gmond/gmond.init /etc/init.d/gmond
  3. ./gmond/gmond -t > /usr/local/ganglia/etc/gmond.conf

vi /etc/init.d/gmond  --改动例如以下内容

  1. GMOND=/usr/local/ganglia/sbin/gmond

vi /usr/local/ganglia/etc/gmond.conf      -- 改动例如以下内容

  1. cluster {
  2. name = "hadoop-cluster"
  3. owner = "nobody"
  4. latlong = "unspecified"
  5. url = "unspecified"
  6. }

复制python module到ganglia部署文件夹

  1. mkdir /usr/local/ganglia/lib64/ganglia/python_modules
  2. cp ./gmond/python_modules/*/*.py  /usr/local/ganglia/lib64/ganglia/python_modules

安装程序ganglia-3.6.0默认提供了一些python module的配置文件,仅仅须要部署到 /usr/local/ganglia/etc/conf.d 文件夹以下就可以生效

若对默认提供的这些监控脚本不太关心,能够跳过以下这步:

  1. cp ./gmond/python_modules/conf.d/*.pyconf  /usr/local/ganglia/etc/conf.d

启动gmond服务,并设为开机自己主动执行

service gmond restart

chkconfig --add gmond


6.3 将ganglia_web放到/var/www/html/文件夹以下


      运行cp /export/home/ganglia/ganglia-web-3.5.12/* /var/www/html/ganglia


7.监控页面

http://192.168.1.201/ganglia/




8.与CDH4.6的整合

CDH中hadoop配置文件不少。为了整合ganglia,须要编辑文件hadoop-metrics2.properties。从/etc/hadoop/conf.dist复制相关文件到

$hadoop_conf文件夹下。

cp /etc/hadoop/conf.dist/hadoop-metrics2.properties /etc/hadoop/conf

在hadoop-metrics2.properties中加入

#

# 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

namenode.sink.ganglia.servers=239.2.11.71:8649

datanode.sink.ganglia.servers=239.2.11.71:8649

#jobtracker.sink.ganglia.servers=239.2.11.71:8649

#tasktracker.sink.ganglia.servers=239.2.11.71:8649

resourcemanager.sink.ganglia.servers=239.2.11.71:8649

nodemanager.sink.ganglia.servers=239.2.11.71:8649

maptask.sink.ganglia.servers=239.2.11.71:8649

reducetask.sink.ganglia.servers=239.2.11.71:8649

#dfs.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread

# add

dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

dfs.period=10

dfs.servers=239.2.11.71:8649



mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

mapred.period=10

mapred.servers=239.2.11.71:8649



#jvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread

#jvm.period=300



jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31

jvm.period=10

jvm.servers=239.2.11.71:8649

当中server和port的确定从/usr/local/ganglia/etc/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

  port = 8649

  ttl = 1

}

mcast_join = 239.2.11.71则确定了server地址,是一个ganglia 用来发送xml格式文件信息的组播地址,是固定的,哪一点节点配置都是这个地址。port=8649这里能够看到。如此。我们重新启动hadoop服务。就可从ganglia界面看到监控画面。



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGJkcDY0MTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


如今就配置好了ganglia监控cdh4.6了。

搭建ganglia集群而且监视hadoop CDH4.6的更多相关文章

  1. 自己搭建的集群,启动hadoop时slave节点的datanode没有启起来怎么办?

    自己搭建的集群,启动hadoop 集群是,发现slave节点的datanode没有启动,查了资料发现是因为我在启动集群前,执行了这个命令: hadoop namenode -format 这个指令会重 ...

  2. VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)

    发生情况:      由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...

  3. 实验室中搭建Spark集群和PyCUDA开发环境

    1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...

  4. Cloudera Manager安装_搭建CDH集群

    2017年2月22日, 星期三 Cloudera Manager安装_搭建CDH集群 cpu   内存16G 内存12G 内存8G 默认单核单线 CDH1_node9 Server  || Agent ...

  5. 大数据平台搭建-zookeeper集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  6. 大数据平台搭建-kafka集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  7. 如何搭建Zookeeper集群

     ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的 ...

  8. Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境

    Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境 一.环境说明 个人理解:zookeeper可以独立搭建集群,hbase本身不能独立搭建集群需要和hadoo ...

  9. 搭建spark集群

    搭建spark集群 spark1.6和hadoop2.61.准备hadoop环境:2.准备下载包:3.解压安装包:tar -xf spark-1.6.0-bin-hadoop2.6.tgz4.修改配置 ...

随机推荐

  1. Windows Azure使用体验

    Windows Azure在今年6月6日由世纪互联代理在中国运营,目前只能体验,没有开放注册.不过,体验的门槛比较高,只对企业开放,未来大量对外开放使用貌似时间还早.大家都懂得,“国内门槛高”.本人在 ...

  2. 与众不同 windows phone (1) - Hello Windows Phone

    原文:与众不同 windows phone (1) - Hello Windows Phone [索引页] [源码下载] 与众不同 windows phone (1) - Hello Windows ...

  3. Ubuntu12.04创建 Eclipse launcher

    Ubuntu 12.04 默认无法launcher Eclipse快捷图标到左侧Dash,需要手工配置,步骤如下: 1) 首先,创建并打开 ~/.local/share/applications/op ...

  4. C++中的常对象和常对象成员

    常对象 常对象必须在定义对象时就指定对象为常对象. 常对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对 ...

  5. STM32建立project库函数方法

    (1)打开keilMDK主界面能够看到project中有一个默认的project,点击这个project名字,然后选择菜单Project->Close Project,就关闭掉这个project ...

  6. AMR音频编码器概述及文件格式分析

    全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的. 一.分类 1. AMR: ...

  7. 14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁

    14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个章节建立关于死锁的概念信息,它解释如何组织数据库操作来减少死锁和随后的错误处理: D ...

  8. Eclipse乱码怎么办

    Eclipse里设置编码有三个层次:全局.工程.文件. 文件的编码会覆盖工程的编码,工程的编码会覆盖全局的编码. 我猜测:虽然你的工程编码更改为GBK,但只对新建文件有效. 如果工程中旧有的文件是UT ...

  9. 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

    进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...

  10. 南阳OJ 16 矩形嵌套

    描写叙述 有n个矩形,每个矩形能够用a,b来描写叙述,表示长和宽. 矩形X(a,b)能够嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度). ...