搭建ganglia集群而且监视hadoop CDH4.6

搭建ganglia集群而且监视hadoop CDH4.6

大家好,又见面了,我是全栈君。

前言

近期在研究云监控的相关工具,感觉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 主机环境检查(所有主机节点)

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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

[plain] 
view plain
copy
print
在CODE上查看代码片派生到我的代码片

  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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

  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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

  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

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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/

[plain] 
view plain
copy
print
在CODE上查看代码片
派生到我的代码片

  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/

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

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

配置共享库

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

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

启用配置

ldconfig

检查是否生效

ldconfig -v |grep “libpython2.7.so”


5.编译安装


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

[plain] 
view plain
copy
print
在CODE上查看代码片
派生到我的代码片

  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.   
  12. Copyright (c) 2005 University of California, Berkeley  
  13.   
  14. Version: 3.6.0  
  15. Library: Release 3.6.0 0:0:0  
  16.   
  17. Type “make” to compile.  
  18. # make && make install  

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

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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    调整为例如以下内容

[plain] 
view plain
copy
print
在CODE上查看代码片派生到我的代码片

  1. $conf[‘gweb_confdir’] = “/var/www/html/ganglia”;  
  2. $conf[‘gmetad_root’] = “/var/www/html”;  

vi header.php 

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

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

配置暂时文件夹

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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 (主节点安装)

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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 (主节点安装)

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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  


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

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  1. yum -y install httpd php  

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

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

[plain] 
view plain
copy
print
在CODE上查看代码片派生到我的代码片

  1. <?php  
  2. phpinfo();  
  3. ?>  

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


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

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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

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

启动httpd服务

[plain] 
view plain
copy
print
在CODE上查看代码片
派生到我的代码片

  1. /usr/local/apache2/bin/apachectl restart  

6.配置Ganglia

6.1 配置gmetad (主节点配置)

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

  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  –改动例如以下内容

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

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

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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

  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数据文件夹全部者

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

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

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

[plain] 
view plain
copy
print
在CODE上查看代码片
派生到我的代码片

  1. service gmetad restart  
  2. chkconfig –add gmetad  

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

[plain] 
view plain
copy
print
在CODE上查看代码片派生到我的代码片

  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  –改动例如以下内容

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

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

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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

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

复制python module到ganglia部署文件夹

[plain] 
view plain
copy
print
?
在CODE上查看代码片
派生到我的代码片

  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 文件夹以下就可以生效

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

[plain] 
view plain
copy
print
?

在CODE上查看代码片派生到我的代码片

  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/


搭建ganglia集群而且监视hadoop CDH4.6


搭建ganglia集群而且监视hadoop CDH4.6


8.与CDH4.6的整合

    CDHhadoop配置文件不少。为了整合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

当中serverport的确定从/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界面看到监控画面。

搭建ganglia集群而且监视hadoop CDH4.6

搭建ganglia集群而且监视hadoop CDH4.6

搭建ganglia集群而且监视hadoop CDH4.6
搭建ganglia集群而且监视hadoop CDH4.6
如今就配置好了ganglia监控cdh4.6了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116629.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战「建议收藏」

    【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战「建议收藏」”使用ctkPluginFramework插件系统构建项目实战”,这篇文章是写博客以来最纠结的一篇文章。倒不是因为技术都多么困难,而是想去描述一个项目架构采用ctkPluginFramework来构建总是未尽其意,描述的太少未免词不达意,描述的太多又显得太啰嗦。有些看过之前写的【大话QT之四】ctkPlugin插件系统实现项目插件式开发这篇文章的朋友也想了解一下到底如果从零开始架构一个项目。在写这

    2022年6月6日
    29
  • bi报表工具有哪些_bi报表工具排名

    bi报表工具有哪些_bi报表工具排名  随着现在数据量井喷式的爆发以及企业对数据的重视程度逐渐提供,高灵活性、易使用、具有高度数据治理能力的自定义bi报表工具被越来越多的人青睐,逐渐取代传统报表工具成为企业内报表平台的首选。  接下来,我们了解一下好用的bi报表工具应该具备哪些功能特性以及能力呢。  一、数据标准化能力  上面我们讲到传统报表的一个突出劣势就是对数据的标准化处理能力欠缺,影响报表的最终使用效果。很多企业标准化能力不足,主要是由于报表是由很多指标组成,企业内基本指标是固定的,但是指标的组合方式却是纷…

    2025年7月25日
    4
  • Boltzmann机详解

    Boltzmann机详解基于热力学的随机型神经网络–Boltzmann机1.模拟退火算法我们知道,Hopfield神经网络拥有联想记忆的能力,这也是对生物神经网络的一种模拟。但是,Hopfield神经网络也和BP神经网络一样,有一个致命的缺陷:只能找到局部最优解,而无法沿着梯度上升的方向在全局的角度寻求全局最优解。为了解决这个问题,1983年,Kirkpatrick等提出了模拟退火算法(SA)能有效的解决局部最优…

    2022年7月12日
    15
  • idea集成gitee_git和idea

    idea集成gitee_git和ideaidea集成git,傻瓜式教程,超详细

    2025年6月27日
    4
  • 微信公众平台开发相关工具

    微信公众平台开发相关工具微信公众平台开发相关工具:一、外网代理工具:下载QQ浏览器,“微信调式工具插件” 地址:chrome-extension://kghjlmdefodljabnacklekelfimgalmi/server.html# 二、微信公众平台测试帐号接口:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login …

    2022年8月21日
    6
  • 用xerces-c来进行xml schema校验「建议收藏」

    用xerces-c来进行xml schema校验

    2022年1月25日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号