前言

近期在研究云监控的相关工具,感觉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. 【Dev Club 分享】腾讯验证码的十二年

    源:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578147&idx=3&sn=94a8f8f8b4a23 ...

  2. 漫谈并发编程(六):java中一些经常使用的并发构件的介绍

    CountDownLatch      它被用来同步一个或多个任务,强制它们等待其他任务运行的一组操作完毕.      你能够向CountDownLatch对象设置一个初始计数值,不论什么在这个对象上 ...

  3. eclipse如何查看类之间的引用关系

    今天遇到这个问题:mark一点点: 在类名上单击右键.选择Reference->Workingspace快捷克债券Ctrl+Shift+G 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  4. LeetCode——Populating Next Right Pointers in Each Node II

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  5. MySql 链接url 参数详解

    最近 整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:po ...

  6. java多线程12设计模式

    1.Single Threaded Execution Pattern(单线程运行模式) 2.Immutable Pattern(一成不变的模式) 3.Guarded Suspension Patte ...

  7. Wamp 访问本地站点慢 的解决办法

    自从安装了64位的windows 8.1之后,电脑运行速度变快了,可是重新下载安装64位的WAMP,访问本地的WEB站点确是很慢,根本不像是在本地访问,经过在WAMP论坛上搜索,终于找到了解决办法,主 ...

  8. 算法起步之Kruskal算法

    原文:算法起步之Kruskal算法 说完并查集我们接着再来看这个算法,趁热打铁嘛.什么是最小生成树呢,很形象的一个形容就是铺自来水管道,一个村庄有很多的农舍,其实这个村庄我们可以看成一个图,而农舍就是 ...

  9. 轻松学习之Linux教程一 ubuntu14.04+windows双系统安装

    本系列文章由@uid=hpw" style="color:rgb(255,0,0)">超人爱因斯坦出品.转载请注明出处.          文章链接:http:// ...

  10. 【iOS开发-71】解决方式:Attempting to badge the application icon but haven&#39;t received permission from the...

    (1)原因 一切都是iOS8捣的鬼.您假设把模拟器换成iOS7.1或者更早的,就不会有这个问题.而如今在iOS8中要实现badge.alert和sound等都需要用户允许才干,由于这些都算做Notif ...