zoukankan      html  css  js  c++  java
  • 搭建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 主机环境检查(所有主机节点)

    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. -- 添加例如以下内容  
    4. /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.   
    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 (主节点安装)

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

    1. $conf['gweb_confdir'] = "/var/www/html/ganglia";  
    2. $conf['gmetad_root'] = "/var/www/html";  

    vi header.php 

    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. }  

    配置暂时文件夹

    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:

    1. <?php  
    2. phpinfo();  
    3. ?>  
    訪问http://localhost/info.php成功的话,即说明成功安装。




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

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

    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服务

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

    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服务,并设为开机自己主动执行  

    1. service gmetad restart  
    2. chkconfig --add 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的整合

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

  • 相关阅读:
    Django如何把数据库里的html格式输出到前端
    如何修改Django中的日期和时间格式 DateTimeField
    python2.7无法安装python-ldap、django-auth-ldap
    windows10下Python如何设置环境变量
    微信小程序在开发者工具页面显示空白且控制台看不到报错信息
    CentOS7 升级 openssh 到 openssh-8.0p1版本
    CentOS系统升级OpenSSH版本
    SSL相关漏洞解决方法
    CentOS 7.4安装 MySQL数据库
    Python3 基础知识
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5058170.html
Copyright © 2011-2022 走看看