1 Ganglia简介

  Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

1.1 Ganglia组件

  Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为ganglia-web。

  Gmond :是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率。他同时也会发送用户通过添加C/Python模块来自定义的指标。 如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。

  Gmetad:也是一个守护进程,他定期检查gmonds,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的web前端。

  Ganglia-web :顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。 集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。

   一般来说每个集群需要一个接收的gmond,每个网站需要一个gmetad。

  

图1 ganglia工作流

  Ganglia工作流如图1所示:

  左边是运行在各个节点上的gmond进程,这个进程的配置只由节点上/etc/gmond.conf的文件决定。所以,在各个监视节点上都需要安装和配置该文件。

  右上角是更加负责的中心机(通常是这个集群中的一台,也可以不是)。在这个台机器上运行这着gmetad进程,收集来自各个节点上的信息并存储在RRDtool上,该进程的配置只由/etc/gmetad.conf决定。   

  右下角显示了关于网页方面的一些信息。我们的浏览网站时调用php脚本,从RRDTool数据库中抓取信息,动态的生成各类图表。

1.2 Ganglia运行模式(单播与多播)  

  Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。

  单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。

  多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。

2 环境  

  平台:ubuntu12.04

  Hadoop: hadoop-2.2.0

  Hbase: hbase-0.98

  软件安装:apt-get

3 安装部署(单播)

3.1 部署方式

  监测节点(gmond):192.168.0.27   192.168.0.28

  主节点(gmetad、ganglia-web):192.168.0.26

3.2 安装

  这里必须说明一个问题,我是在ubuntu下直接安装的。因为涉及到版本问题,hadoop-2.2.0和hbase-0.98均支持ganglia3.0和ganglia3.1版本,但是在配置时加载的模块是不一样的。所以,我们需要知道安装的ganglia是什么版本。

#sudo apt-cache show ganglia-webfrontend ganglia-monitor

  

图3 安装版本信息

  我们可以发现,安装的版本是ganglia3.1.7,所以是支持的。所以在26这台主机上安装ganglia-webfrontend和ganglia-monitor。在其他监视节点上,只需要安装ganglia-monitor即可。

在192.168.0.26上:
#sudo apt-get install ganglia-webfrontend ganglia-monitor
在192.168.0.27和192.168.0.28上:
#sudo apt-get install ganglia-monitor

  将ganglia的文件链接到apache的默认目录下,只需要在26机子上运行

#sudo ln -s /usr/share/ganglia-webfront /var/www/ganglia

  Ganglia-webfrontend等同与上面所说的gmetad及ganglia-web,同时还会自动帮你安装apache2和rrdtool,非常方便。

3.3 Ganglia配置

  在各个节点上,都需要配置/etc/gmond.conf,配置相同如下所示:每个机器都是这样的配置,红色是修改部分

请注意send_metadata_interval被设置为10秒。Ganglia的度量指标从他的元数据间隔发送得到的。元数据包含诸如度量分组,类型等等。假如你重启了接收的gmond主机,那么元数据就会丢失,gmond就不知道如何处理度量数据,因此会把他们抛弃。这会导致生成空白的图表。在组播模式下,gmonds可以和其他任意一台主机通信,在元数据丢失情况请求重新获取。但这在单播模式下是不可能的,因此你需要命令gmond定期的发送元数据。

 
globals {
daemonize = yes #以后台的方式运行
setuid = yes
user = hadoop #运行gmond的用户
debug_level = 0 #调试级别
max_udp_msg_len = 1472
mute = no #哑巴,本节点将不会再广播任何自己收集到的数据在网络上
deaf = no #聋子,本节点不会再接收任何其他节点广播的数据包
host_dmax = 0 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no #是否使用gexec
send_metadata_interval = 10 #节点发送间隔/*secs*/
} /* If a cluster attribute is specified, then all gmond hosts are wrapped inside
* of a <CLUSTER> tag. If you do not specify a cluster tag, then all <HOSTS> will
* NOT be wrapped inside of a <CLUSTER> tag. */
cluster {
name = "namenode2" #本节点属于哪个cluster
owner = "hadoop" #谁是该节点的所有者
latlong = "unspecified" #在地球上的坐标
url = "unspecified"
} /* The host section describes attributes of the host, like the location */
host {
location = "unspecified"
} /* Feel free to specify as many udp_send_channels as you like. Gmond
used to only support having a single channel */
udp_send_channel {
#udp包的发送通道
# mcast_join = 239.2.11.71
host = 192.168.0.26 #多播,工作在192.168.0.26通道下。单播,则指向主节点,单播模式下也可以配置多个udp_send_channel
port = 8649 #监听端口
ttl = 1
} /* You can specify as many udp_recv_channels as you like as well. */
udp_recv_channel { #接受UDP包配置
# mcast_join = 239.2.11.71
port = 8649
# bind = 239.2.11.71
}

  在主节点上(192.168.0.26)上还需要配置/etc/gmetad.conf,这里面的名字“namenode2”和上面gmond.conf中应该是一致的。  

data_source "namenode2" 192.168.0.26:8649

3.4 Hadoop配置

所有hadoop所在的节点,均需要配置hadoop-metrics.properties,配置如下:这个文件在hadoop-2.2.0/etc/hadoop下面,分别在dfs,mapred,jvm下面加入

# dfs.period=10
    # dfs.servers=localhost:8649

dfs.class=org.apache.hadoop.metrics.ganglia.GangliaCOntext31
    dfs.period=30
    dfs.servers=192.168.0.26:8649

# mapred.period=10
    # mapred.servers=localhost:8649

mapred.class=org.apache.hadoop.metrics.ganglia.GangliaCOntext31
    mapred.period=30
    mapred.servers=192.168.0.26:8649

# jvm.period=10
    # jvm.servers=localhost:8649

jvm.class=org.apache.hadoop.metrics.ganglia.GangliaCOntext
    jvm.class=org.apache.hadoop.metrics.ganglia.GangliaCOntext31
    jvm.period=30
    jvm.servers=192.168.0.26:8649

  所有hadoop所在的节点,均需要配置hadoop-metrics2.properties,配置如下:

# syntax: [prefix].[source|sink].[instance].[options]
# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details
# *.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
# default sampling period, in seconds
# *.period=10     //这三句要注释掉
# The namenode-metrics.out will contain metrics from all context
#namenode.sink.file.filename=namenode-metrics.out
# Specifying a special sampling period for namenode:
#namenode.sink.*.period=8
#datanode.sink.file.filename=datanode-metrics.out
# the following example split metrics of different
# context to different sinks (in this case files)
#jobtracker.sink.file_jvm.context=jvm
#jobtracker.sink.file_jvm.filename=jobtracker-jvm-metrics.out
#jobtracker.sink.file_mapred.context=mapred
#jobtracker.sink.file_mapred.filename=jobtracker-mapred-metrics.out
#tasktracker.sink.file.filename=tasktracker-metrics.out
#maptask.sink.file.filename=maptask-metrics.out
#reducetask.sink.file.filename=reducetask-metrics.out
namenode.sink.ganglia.servers=192.168.0.26:8649
datanode.sink.ganglia.servers=192.168.0.26:8649

jobtracker.sink.ganglia.servers=192.168.0.26:8649

tasktracker.sink.ganglia.servers=192.168.0.26:8649

maptask.sink.ganglia.servers=192.168.0.26:8649

reducetask.sink.ganglia.servers=192.168.0.26:8649

3.5 Hbase配置

所有hadoop所在的节点,均需要配置hadoop-metrics2-hbase.properties,配置如下:

 

# syntax: [prefix].[source|sink].[instance].[options]

# See javadoc of package-info.java for org.apache.hadoop.metrics2 for details

# *.sink.file*.class=org.apache.hadoop.metrics2.sink.FileSink

# default sampling period

# *.period=10     //这几行要注释掉,否则报错

# Below are some examples of sinks that could be used

# to monitor different hbase daemons.

# hbase.sink.file-all.class=org.apache.hadoop.metrics2.sink.FileSink

# hbase.sink.file-all.filename=all.metrics

# hbase.sink.file0.class=org.apache.hadoop.metrics2.sink.FileSink

# hbase.sink.file0.context=hmaster

# hbase.sink.file0.filename=master.metrics

# hbase.sink.file1.class=org.apache.hadoop.metrics2.sink.FileSink

# hbase.sink.file1.context=thrift-one

# hbase.sink.file1.filename=thrift-one.metrics

# hbase.sink.file2.class=org.apache.hadoop.metrics2.sink.FileSink

# hbase.sink.file2.context=thrift-two

# hbase.sink.file2.filename=thrift-one.metrics

# hbase.sink.file3.class=org.apache.hadoop.metrics2.sink.FileSink

# hbase.sink.file3.context=rest

# hbase.sink.file3.filename=rest.metrics

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31

*.sink.ganglia.period=10

hbase.sink.ganglia.period=10

hbase.sink,ganglia.servers=192.168.0.26:8649

4 启动与检验

先需要重启hadoop和hbase 。在各个节点上启动gmond服务,主节点还需要启动gmetad服务。

#sudo service ganglia-monitor start  //192.168.0.26,192.168.0.27,192.168.0.28都需要启动
   #sudo service gmetad start  //在192.168.0.26再次启动

启动完以后,在网页上面输入http://192.168.0.26/ganglia

第十二章 Ganglia监控Hadoop及Hbase集群性能(安装配置)的更多相关文章

  1. 使用ganglia监控hadoop及hbase集群

    一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...

  2. 使用ganglia监控hadoop及hbase集群 分类: B3_LINUX 2015-03-06 20:53 646人阅读 评论(0) 收藏

    介绍性内容来自:http://www.uml.org.cn/sjjm/201305171.asp 一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测 ...

  3. 开启hadoop和Hbase集群的lzo压缩功能(转)

    原文链接:开启hadoop和Hbase集群的lzo压缩功能 问题导读: 1.如何启动hadoop.hbase集群的压缩功能? 2.lzo的作用是什么? 3.hadoop配置文件需要做哪些修改? 首先我 ...

  4. 使用Ganglia监控hadoop、hbase

    Ganglia是一个监控服务器,集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标. Ganglia的强大在于:g ...

  5. hadoop单机and集群模式安装

    最近在学习hadoop,第一步当然是亲手装一下hadoop了. 下面记录我hadoop安装的过程: 注意: 1,首先明确hadoop的安装是一个非常简单的过程,装hadoop的主要工作都在配置文件上, ...

  6. hadoop(八) - hbase集群环境搭建

    1. 上传hbase安装包hbase-0.96.2-hadoop2-bin.tar.gz 2. 解压 tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C /clo ...

  7. Hadoop集群_Hadoop安装配置

    1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesy ...

  8. Hadoop实战4:MapR分布式集群的安装配置及shell自动化脚本

    MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中 ...

  9. docker应用-3(搭建hadoop以及hbase集群)

    要用docker搭建集群,首先需要构造集群所需的docker镜像.构建镜像的一种方式是,利用一个已有的镜像比如简单的linux系统,运行一个容器,在容器中手动的安装集群所需要的软件并进行配置,然后co ...

随机推荐

  1. Visual Studio编译与调用DLL方法

    参考自博客:http://www.cnblogs.com/houkai/archive/2013/06/05/3119513.html 用visual studio 2013新建win32 appli ...

  2. Alpha冲刺一 (2/10)

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9960487.html 作业博客:https://edu.cnblogs.com/campus/ ...

  3. 6个变态的C语言程序

    转载自 陈浩 coolshell.cn 下面的六个程序片段主要完成这些事情: 输出Hello, World 混乱C语言的源代码 下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译 ...

  4. Python的介绍及Pycharm软件的安装

    一.Python介绍 1.  Python是一种解释性.面向对象.动态数据类型的高级程序设计语言. Python语言创始人是吉多.范罗苏姆:起源与1989年 2.  缺点:运行速度慢(由于是解释性语言 ...

  5. Sqlserver 存储过程 返回-6

    存储过程中没有返回 手动返回-6的代码,但是一直接收到-6返回值. 经最后研究发现,是粗心导致的,Insert插入数据时在非空字段插入了Null值导致出现异常,所以返回了-6. 所以说在事务中,可能会 ...

  6. vue 之 vue-router

    官方文档 // 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter) // 1. 定义(路由)组件. // 可以从其他文件 import 进来 c ...

  7. 【剑指offer】不使用除法,构建乘积数组,C++实现

    # 题目 # 思路 设C[i] = A[0] * A[1] * - * A[i-1],D[i] =  A[i+1] * - * A[n-1],则C[i]按照从上到下的顺序计算,即C[i] = C[i- ...

  8. 【javascript】base.js

    作为一个好的脚手架使用 /* Base.js, version 1.1a Copyright 2006-2010, Dean Edwards License: http://www.opensourc ...

  9. Codeforces 25E Test 【Hash】

    Codeforces 25E Test E. Test Sometimes it is hard to prepare tests for programming problems. Now Bob ...

  10. hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2

    问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...