搭建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 主机环境检查(所有主机节点)
- # 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
- gcc-4.4.7-3.el6.x86_64
- glibc-2.14.1-6.x86_64
- glibc-common-2.14.1-6.x86_64
- rrdtool-1.3.8-6.el6.x86_64
- rrdtool-devel-1.3.8-6.el6.x86_64
- apr-1.3.9-5.el6_2.x86_64
- apr-devel-1.3.9-5.el6_2.x86_64
- expat-2.0.1-11.el6_2.x86_64
- expat-devel-2.0.1-11.el6_2.x86_64
- pcre-7.8-6.el6.x86_64
- pcre-devel-7.8-6.el6.x86_64
- dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm
- dejavu-sans-mono-fonts-2.30-2.el6.noarch.rpm
若有缺失,请先安装. 可通过例如以下几个镜像站点下载相关安装包:
4.2 dejavu
- rpm -ivh dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm
- rpm -ivh dejavu-sans-mono-fonts-2.30-2.el6.noarch.rpm
4.3 rrdtool
- rpm -ivh rrdtool-1.3.8-6.el6.x86_64.rpm
- rpm -ivh rrdtool-devel-1.3.8-6.el6.x86_64.rpm
4.4 apr
- rpm -ivh apr-1.3.9-5.el6_2.x86_64.rpm
- rpm -ivh apr-devel-1.3.9-5.el6_2.x86_64.rpm
4.5 libexpat
- rpm -ivh expat-2.0.1-11.el6_2.x86_64.rpm
- rpm -ivh expat-devel-2.0.1-11.el6_2.x86_64.rpm
4.6 libpcre
- rpm -ivh pcre-7.8-6.el6.x86_64.rpm
- rpm -ivh pcre-devel-7.8-6.el6.x86_64.rpm
4.7 confuse
confuse-2.7 http://www.nongnu.org/confuse/
- tar -zxf confuse-2.7.tar.gz
- cd confuse-2.7
- ./configure CFLAGS=-fPIC --disable-nls
- make && make install
4.8 python
Python-2.7.3.tar.bz2 http://www.python.org/
- tar -jxf Python-2.7.3.tar.bz2
- ./configure --prefix=/usr/local --enable-shared
- make && make install
配置共享库
- vi /etc/ld.so.conf
- -- 添加例如以下内容
- /usr/local/lib
启用配置
ldconfig
检查是否生效
ldconfig -v |grep "libpython2.7.so"
5.编译安装
5.1 安装ganglia (所有节点都要安装)
- # tar -zxf ganglia-3.6.0.tar.gz
- # cd ganglia-3.6.0
- # ./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec --with-python=/usr/local
- Welcome to..
- ______ ___
- / ____/___ _____ ____ _/ (_)___ _
- / / __/ __ `/ __ \/ __ `/ / / __ `/
- / /_/ / /_/ / / / / /_/ / / / /_/ /
- \____/\__,_/_/ /_/\__, /_/_/\__,_/
- /____/
- Copyright (c) 2005 University of California, Berkeley
- Version: 3.6.0
- Library: Release 3.6.0 0:0:0
- Type "make" to compile.
- # make && make install
5.2 安装ganglia-web (主节点安装)
- # tar -zxf ganglia-web-3.5.12.tar.gz -C /export/home/ganglia/
- # cd /export/home/ganglia/ganglia-web-3.5.12
- # cp conf_default.php conf.php
vi conf.php 调整为例如以下内容
- $conf['gweb_confdir'] = "/var/www/html/ganglia";
- $conf['gmetad_root'] = "/var/www/html";
vi header.php
- <?php
- session_start();
- ini_set('date.timezone','PRC'); --改动时区为本地时区
- if (isset($_GET['date_only'])) {
- $d = date("r");
- echo $d;
- exit(0);
- }
配置暂时文件夹
- cd /var/www/html/ganglia-web-3.5.12/dwoo
- mkdir cache
- chmod 777 cache
- mkdir compiled
- chmod 777 compiled
5.3 安装apache (主节点安装)
- tar -zxf httpd-2.2.23.tar.gz
- cd httpd-2.2.23
- ./configure --prefix=/usr/local/apache2
- make && make install
5.4 安装php (主节点安装)
- tar -zxf php-5.4.10.tar.gz
- cd php-5.4.10
- ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr
- make && make install
注:在实际安装过程中,我採用的是
- yum -y install httpd php
通过一条命令,就可以安装成功apache httpd 和 php支持,简单方便。
依照以上的安装方式, 配置出来的默认网站文件夹为/var/www/html/。新建一个php脚本info.php:
- <?php
- phpinfo();
- ?>
訪问http://localhost/info.php成功的话,即说明成功安装。
5.5 使用apache公布ganglia-web (主节点安装)
vi /usr/local/apache2/conf/httpd.conf
- ....
- Listen 80
- ....
- <IfModule dir_module>
- DirectoryIndex index.html index.php
- AddType application/x-httpd-php .php
- </IfModule>
- ....
- # 在文件最后添加例如以下内容
- # ganglia
- Alias /ganglia "/var/www/html/ganglia"
- <Directory "/var/www/html/ganglia">
- AuthType Basic
- Options None
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
启动httpd服务
- /usr/local/apache2/bin/apachectl restart
6.配置Ganglia
6.1 配置gmetad (主节点配置)
- cd ganglia-3.6.0
- cp ./gmetad/gmetad.init /etc/init.d/gmetad
- cp ./gmetad/gmetad.conf /usr/local/ganglia/etc/
vi /etc/init.d/gmetad --改动例如以下内容
- GMETAD=/usr/local/ganglia/sbin/gmetad
vi /usr/local/ganglia/etc/gmetad.conf -- 改动例如以下内容
- data_source "hadoop-cluster" 10 master slave1 slave2
- xml_port 8651
- interactive_port 8652
- rrd_rootdir "/var/lib/ganglia/rrds"
- case_sensitive_hostnames 0
改动rrds数据文件夹全部者
- chown -R nobody:nobody /var/lib/ganglia/rrds
启动gmetad服务,并设为开机自己主动执行
- service gmetad restart
- chkconfig --add gmetad
6.2 配置gmond (所有节点配置)
- cd ganglia-3.6.0
- cp ./gmond/gmond.init /etc/init.d/gmond
- ./gmond/gmond -t > /usr/local/ganglia/etc/gmond.conf
vi /etc/init.d/gmond --改动例如以下内容
- GMOND=/usr/local/ganglia/sbin/gmond
vi /usr/local/ganglia/etc/gmond.conf -- 改动例如以下内容
- cluster {
- name = "hadoop-cluster"
- owner = "nobody"
- latlong = "unspecified"
- url = "unspecified"
- }
复制python module到ganglia部署文件夹
- mkdir /usr/local/ganglia/lib64/ganglia/python_modules
- cp ./gmond/python_modules/*/*.py /usr/local/ganglia/lib64/ganglia/python_modules
安装程序ganglia-3.6.0默认提供了一些python module的配置文件,仅仅须要部署到 /usr/local/ganglia/etc/conf.d 文件夹以下就可以生效
若对默认提供的这些监控脚本不太关心,能够跳过以下这步:
- 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/文件夹以下
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集群而且监视hadoop CDH4.6的更多相关文章
- 自己搭建的集群,启动hadoop时slave节点的datanode没有启起来怎么办?
自己搭建的集群,启动hadoop 集群是,发现slave节点的datanode没有启动,查了资料发现是因为我在启动集群前,执行了这个命令: hadoop namenode -format 这个指令会重 ...
- VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)
发生情况: 由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...
- 实验室中搭建Spark集群和PyCUDA开发环境
1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...
- Cloudera Manager安装_搭建CDH集群
2017年2月22日, 星期三 Cloudera Manager安装_搭建CDH集群 cpu 内存16G 内存12G 内存8G 默认单核单线 CDH1_node9 Server || Agent ...
- 大数据平台搭建-zookeeper集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
- 大数据平台搭建-kafka集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
- 如何搭建Zookeeper集群
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的 ...
- Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境
Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境 一.环境说明 个人理解:zookeeper可以独立搭建集群,hbase本身不能独立搭建集群需要和hadoo ...
- 搭建spark集群
搭建spark集群 spark1.6和hadoop2.61.准备hadoop环境:2.准备下载包:3.解压安装包:tar -xf spark-1.6.0-bin-hadoop2.6.tgz4.修改配置 ...
随机推荐
- 使用apache daemon让java程序在unix系统上以服务方式运行
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...
- 源代码编译lamp环境
没有办法用 rpm查询一个源代码包是否安装 因为 并不是用rpm安装的 可以先吧 selinux 给禁用掉 iptables -F 把防火墙规则全部删除 首先确保 gcc gcc-c++ ma ...
- 分分钟教会你使用HTML写Web页面
在学习怎样使用HTML编写网页之前,我们必须先搞清楚什么是HTML?当然了不是系统的给大家介绍HTML的前世今生,假设对其身世感兴趣的小伙伴能够去问度娘,她会给你想要的答案. 所谓HTML,就是我们常 ...
- 邮件应用Acompli和日历应用Sunrise(传微软曾考虑以80亿美元收购企业通讯公司Slack)
http://tech.163.com/16/0305/10/BHCU8EHO000915BD.html http://www.cnbeta.com/articles/480835.htm
- Linux Shell常用技巧(一) RE
一. 特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...
- 写给C语言新手的话
首先声明啊,写这个是因为一些加我QQ的朋友问我学习经验,我才写的. 另外,如果是二级党,那么请用谭浩强老师的书.然后你就可以不用看了.倒不是有偏见,而是我写的这个东西,根本不是为了考试,而是为了和新手 ...
- Android studio导入第三方类库
1.开发过程中想要导入第三方类库和Eclipse也是有差别的,我们导入SlidingMenu这个类库,从github上下载下来解压到项目目录下. 2.然后我们重启我们的android studio就会 ...
- 14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:
14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新: innodb_flush_neighbors an ...
- 《Getting Started with WebRTC》第一章 WebRTC介绍
<Getting Started with WebRTC>第一章 WebRTC介绍 本章是对WebRTC做概念性的介绍. 阅读完本章后.你将对下面方面有一个清晰的理解: . 什么 ...
- TWinControl的消息覆盖函数大全(41个WM_函数和31个CM_函数,它的WndProc就处理鼠标(转发)、键盘(取消拖动)、焦点、和WM_NCHITTEST一共4类消息)
注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中): 其中TWinControl对TControl有10个消息进行了覆盖(红色标记),其中有2个是WM_消息,8个是CM_消 ...