搭建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了。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android自动填充短信验证码[通俗易懂]

    Android自动填充短信验证码[通俗易懂]前言短信验证码获取并自动填写现在已经成为一个人性化App的标配了,这篇文章将实现一个短信验证码获取并自动填写的demo。其实就是读取指定号码的短信并提取出验证码,然后赋值给EditText显示。demo效果图:读取短信Android系统在接受到一条短信的时候会发出一条Action为android.provider.Telephony.SMS_RECEIVED的有序广播,因此我们读取短信的…

  • 5500xt挖矿算力_rx470d etc算力「建议收藏」

    5500xt挖矿算力_rx470d etc算力「建议收藏」…每日平均收益为R$4。RX5700XT表现出色的其他加密货币包括:以太坊经典(ETC),拉文币(RVN),天堂协议XHV和Beam(BEAM)。可以用于采矿的同一系列图形卡中的其他型号是RX5700,RX5600XT和RX5500XT。但是,与RX5700XT相比,这些其他型号的利润率较低。NvidiaRTX2060超级频率:1470MHz至1670MHzV…

  • 力矩< torque>详解

    力矩< torque>详解力矩:物理学里是指作用力使得物体绕着转动轴或支点转动的趋向。单位是牛顿-米。力对物体产生转动作用的物理量(分为:力对轴的矩和力对点的矩)即为:M=L*F。L是从转动轴到着力点的距离矢量,F也是矢量力;因此力矩也是矢量。力对轴的矩是力对物体产生绕某一轴转动作用的物理量,其大小等于力在垂直于该轴的平面上的分量和此分力作用线到该轴垂直距离的乘积。例如开门时,外力F平行于门轴的分力FП

  • java和javase一样吗

    java和javase一样吗接口概述:接口是Java语言中的一种引用类型,是方法的”集合”,所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK7及以前),额外增加默认方法和静态方法(JDK8),额外增加私有方法(jdk9)。接口的定义,它与定义类方式相似,但是使用interface关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。publicclass类名.java–>.classpublicinterface接口名.java–>.class接口的使

  • 一.linux开发之uboot移植(一)——初识uboot

    一.linux开发之uboot移植(一)——初识uboot参考博文:http://blog.51cto.com/9291927/1791237一、uboot简介U-Boot,全称UniversalBootLoader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目。-在操作系统方面,U-Boot不仅支持-嵌入式Linux系统的引导,它还支持NetBSD,VxWorks,

  • [转]软阈值(Soft Thresholding)函数解读[通俗易懂]

    [转]软阈值(Soft Thresholding)函数解读[通俗易懂]1、软阈值(SoftThresholding)函数的符号软阈值(SoftThresholding)目前非常常见,文献【1】【2】最早提出了这个概念。软阈值公式的表达方式归纳起来常见的有三种,以下

发表回复

您的电子邮箱地址不会被公开。

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