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. 【LeetCode 111_二叉树_遍历】Minimum Depth of Binary Tree

    解法一:递归 int minDepth(TreeNode* root) { if (root == NULL) ; if (root->left == NULL) { ; } else if ( ...

  2. diff和patch 打补丁

    在Linux环境下,有两个工具用来给project打补丁,即diff和patch diff         diff具有比较功能.可以使用man命令查看其使用方法. NAME        diff ...

  3. 使用lets encrypt证书加密

    1    git clone https://github.com/letsencrypt/letsencrypt 2     ./letsencrypt-auto certonly -d 域名

  4. Leetcode 429. N-ary Tree Level Order Traversal

    bfs class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: q,ans=[root],[] while ...

  5. Java堆空间溢出解决方法 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    一般通过java -jar filename.jar运行jar包,但是当运行的java程序需要较大的内存时,可能会造成堆空间溢出. 例如,加载了几个G大小的json文件,运行报错: Exception ...

  6. IOS开发 警告 All interface orientations must be supported unless the app requires full screen.

    在IOS开发中遇到警告  All interface orientations must be supported unless the app requires full screen. 只要勾上R ...

  7. 安卓开发 报错 错误:This version of android studio is incompatible with the gradle version used. 的解决

    本文的解决方法主要参考以下文章: https://blog.csdn.net/sinat_15417921/article/details/51907728 Android 开发总是会遇到各种不知道怎 ...

  8. I.MX6 修改调试串口号(ttymx0 -> ttymxc2)

    I.MX6 修改调试串口号(ttymx0 -> ttymxc2) 一.参考文章: uboot修改默认调试串口ttymxc0 ->ttymxc4(imx53) http://www.xueb ...

  9. 【示例代码】 Tuple<T> Func<T>

    using System; using System.Math; namespace PiWithMonteCarlo { /// <summary> /// Trivial, synch ...

  10. MySQL 5.6.30 升级到5.7.10

    MySQL 5.6.30 升级到5.7.10 注意,这种方式的前提是数据文件没有和软件目录在一起,如果在一起,需要停止数据库后先移动数据文件 1.解压5.7.10包到/usr/local2.停止当前的 ...