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

2024-03-19 13:58

本文主要是介绍搭建ganglia集群并且监视hadoop CDH4.6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

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

本文不讲解相关原理,若想了解请参考其他资料. 

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

@Author duangr

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

1.相关环境

Host NameIPOSArch
master192.168.1.201CentOS 6.4x86_64
slave1192.168.1.202CentOS 6.4x86_64
slave2192.168.1.203CentOS 6.4x86_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.代码获取

  • ganglia-3.6.0.tar.gz

  • ganglia-web-3.5.12.tar.gz

  • httpd-2.2.23.tar.gz

  • php-5.4.10.tar.gz

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  

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

  • http://rpm.pbone.net/

  • http://mirrors.163.com/centos/6.4/os/x86_64/Packages/

  • http://mirrors.sohu.com/centos/6.4/os/x86_64/Packages/

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/








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监控cdh4.6了。

这篇关于搭建ganglia集群并且监视hadoop CDH4.6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/826215

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww