用 Ganglia 监控hadoop集群

来源:互联网 发布:js webkittransition 编辑:程序博客网 时间:2024/05/01 17:07
 

用 Ganglia 监控hadoop集群

分类: Gangliba hadoop paas 201人阅读 评论(0) 收藏 举报

随着数据中心的增长和管理人员的缩减,对计算资源使用有效监视工具的需求变得比以往更加迫切。术语监视 在应用到数据中心时可能会让人混淆,因为它的含义会根据具体的说话者和听众而有所不同。例如:

  • 在集群中运行应用程序的人员会思考:“我的作业什么时候运行?它什么时候会完成?以及与上一次相比,它是怎样执行的?”
  • 网络运营中心(NOC)的操作员会思考:“什么时候会出现表示需要解决问题的红灯并安排服务电话?”
  • 系统工程部的人员会思考:“我们的机器如何执行?所有服务是否运行正常?我们可以看到哪些趋势以及如何更好地利用计算资源?”

面对如此多的定义,您必须查找大量的代码才能监视您真正想要监视的内容,不仅如此,还存在无数的产品和服务。可是幸运的是,许多监视工具都是开源的 —— 实际上,某些开源工具的表现比尝试完成同样工作的某些商业应用程序还要好。

使用开源监视工具最困难的部分是实现适合环境的安装和配置。使用开源监视工具的两个主要问题是:

  • 没有一个工具可以按照期望的方式监视所需的所有内容。为什么?因为不同的用户将以不同的方式定义监视(正如我刚才所述)。
  • 由于存在第一个问题,因此要让工具完全按照期望在数据中心中工作可能需要完成大量自定义。为什么?因为不管多么地标准,每一个环境也都是独一无二的。

顺便说一句,商业监视工具也同样存在这两个问题。

因此,我将介绍 Ganglia 和 Nagios,这是两个用于监视数据中心的工具。这两个工具被大量用于高性能计算(HPC)环境中,但是它们对于其他环境也具有很大的吸引力(例如云、呈现集群和托管中心)。此外,两者对监视的定义也采取了不同的侧重点。Ganglia 更多地与收集度量数据并随时跟踪这些数据有关,而 Nagios 一直致力于成为一种报警机制。

随着独立项目的发展,逐步出现了交叠。例如:

  • Ganglia 过去要求代理运行在每台主机上以从中收集信息,但是现在可以通过 Ganglia 的欺骗机制获得度量数据。
  • Nagios 过去也是仅用于从目标主机中轮询信息,但是现在提供了在目标主机上运行代理的插件。

虽然这些工具在某些功能领域里已经发生交叠,但是两者之间还是有许多不同之处,可以让您从运行这两个工具中获益。同时运行两个工具可以相互弥补不足:

  • Ganglia 没有内置通知系统,而 Nagios 在这方面表现杰出。
  • Nagios 似乎没有适合目标主机的可伸缩内置代理(这是一个争议点),而 Ganglia 在设计之初就考虑到这点。

还有其他开源项目也可以完成这两个工具完成的工作,并且有些项目在某些领域做得比其他项目好。常用开源监视解决方案包括 Cacti、Zenoss、Zabbix、Performance Copilot(PCP)和 Clumon(而且我相信您已经有了自己喜欢的选择)。这些工具(包括 Ganglia 和一些 Nagios 插件)中的许多工具在底层都使用了 RRDTool 或 Tobi Oetiker 的 MRTG(Multi Router Traffic Grapher),以生成漂亮的图形和存储数据。

尽管用于监视数据中心的开源解决方案如此众多,我却经常惊讶地发现许多向外扩展的计算中心在开发自己的解决方案,而忽略其他人已经完成的工作。

在这个两部分文章中,我将讨论 Ganglia 和 Nagios,因为有一些事实证据表明这些工具是最常用的。尽管将两者集成在一起是非常普遍的实践(尤其是在一些大型的 HPC 实验室和大学里),但是我发现很少有文章对此进行介绍。

学完本系列,您应当能够安装 Ganglia 并与 Nagios 绑定在一起,并且可以回答不同的用户组向您询问的监视问题。这只是一个开始,但是应当可以帮助您了解基础知识并逐步把握集群的整体情况。

在本文中,我将指导您完成:

  • 安装和配置基本的 Ganglia 设置。
  • 如何使用 Python 模块来用 IPMI(Intelligent Platform Management Interface)扩展功能。
  • 如何使用 Ganglia 主机欺骗来监视 IPMI。

我们的目标 —— 设置 HPC Linux® 集群的基准监视系统,在其中可以在某个程度上解决上面所述的三个不同监视意图:

  • 应用程序人员可以看到队列的排队情况如何,并可以看到运行作业的可用节点。
  • NOC 可以收到系统故障报警或者在 Nagios Web 界面上看到一个闪亮的红色错误指示灯。如果节点出现故障或者温度过高,他们也可以通过电子邮件收到通知。
  • 系统工程师可以绘制数据曲线图、报告集群利用情况并决定未来采购哪些硬件。

Ganglia简介

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

所有这些数据收集会多次影响节点性能。网络中的 “抖动(Jitter)” 发生在大量小消息同时出现时。我们发现通过将节点时钟保持一致,就可以避免这个问题。


安装Ganglia(服务器)

第一步安装基础包(通过安装光盘的Packages都能找到)

[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 Packages]# rpm -ivh apr-devel-1.3.9-3.el6_1.2.i686.rpm  
  2. [root@hadoop1 Packages]# rpm -ivh apr-util-1.3.9-3.el6_0.1.i686.rpm   
  3. [root@hadoop1 Packages]# rpm -ivh check-devel-0.9.8-1.1.el6.i686.rpm  
  4. [root@hadoop1 Packages]# rpm -ivh cairo-devel-1.8.8-3.1.el6.i686.rpm  
  5. [root@hadoop1 Packages]# rpm -ivh pango-devel-1.28.1-3.el6_0.5.i686.rpm  
  6. [root@hadoop1 Packages]# rpm -ivh libxml2-devel-2.7.6-4.el6_2.4.i686.rpm  
  7. [root@hadoop1 Packages]# rpm -ivh rpm-build-4.8.0-27.el6.i686.rpm   
  8. [root@hadoop1 Packages]# rpm -ivh glib2-devel-2.22.5-7.el6.i686.rpm  
  9. [root@hadoop1 Packages]# rpm -ivh dbus-devel-1.2.24-5.el6_1.i686.rpm  
  10. [root@hadoop1 Packages]# rpm -ivh freetype-devel-2.3.11-6.el6_2.9.i686.rpm  
  11. [root@hadoop1 Packages]# rpm -ivh gcc-c++-4.4.6-4.el6.i686.rpm  
  12. [root@hadoop1 Packages]# rpm -ivh expat-devel-2.0.1-11.el6_2.i686.rpm  
  13. [root@hadoop1 Packages]# rpm -ivh python-devel-2.6.6-29.el6_2.2.i686.rpm  
  14. [root@hadoop1 Packages]# rpm -ivh libXrender-devel-0.9.5-1.el6.i686.rpm  
  15. [root@hadoop1 Packages]# rpm -ivh dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm   
  16. [root@hadoop1 Packages]# rpm -ivh rrdtool-1.3.8-6.el6.i686.rpm   
  17. [root@hadoop1 Packages]# rpm -ivh php-common-5.3.3-3.el6_2.8.i686.rpm   
  18. [root@hadoop1 Packages]# rpm -ivh php-cli-5.3.3-3.el6_2.8.i686.rpm   
  19. [root@hadoop1 Packages]# rpm -ivh php-5.3.3-3.el6_2.8.i686.rpm   
  20. [root@hadoop1 Packages]# rpm -ivh php-gd-5.3.3-3.el6_2.8.i686.rpm </span>  
[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh libconfuse-2.6-2.el6.rf.i686.rpm  
  2. [root@hadoop1 Downloads]# rpm -ivh libconfuse-devel-2.6-2.el6.rf.i686.rpm  
  3. [root@hadoop1 Downloads]# rpm -ivh libganglia-3.4.0-1.el6.i686.rpm   
  4. [root@hadoop1 Downloads]# rpm -ivh ganglia-devel-3.4.0-1.el6.i686.rpm   
  5. [root@hadoop1 Downloads]# rpm -ivh ganglia-gmond-modules-python-3.4.0-1.el6.i686.rpm  
  6. </span>  

第二步安装RRDTOOL

RRDTool 表示:轮循数据库工具(Round Robin Database Tool)。它是由 Tobias Oetiker 创建的,并且为许多高性能监视工具提供了引擎。Ganglia 是其中之一,但是 Cacti 和 Zenoss 是另外两个。

要安装 Ganglia,首先需要让 RRDTool 运行在监视服务器上。RRDTool 将提供其他程序使用的两个非常优秀的功能:

  • 它将在轮循数据库中存储数据。随着捕捉的数据变得越来越旧,解析的精确性将变得越来越低。这将占用很少的内存并且在大多数情况下仍然有用。
  • 它可以通过使用命令行实参根据捕捉的数据生成图形。
[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 tmp]# tar -zxvf rrdtool.tar.gz  
  2. [root@hadoop1 rrdtool-1.4.7]# ./configure --prefix=/usr  
  3. [root@hadoop1 rrdtool-1.4.7]# make -j8  
  4. [root@hadoop1 rrdtool-1.4.7]# make install</span>  

第三步安装Ganglia

安装Ganglia相关包

[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh ganglia-gmond-3.4.0-1.el6.i686.rpm</span>  
安装完毕以后gmond默认就启动了,稍后可以使用service gmond start|stop|restart等,控制启动

在/etc/ganglia/gmond.conf下,先找到setuid = yes,改成setuid=no;然后找到在cluster中的name,改成name='"onlyking";保存,重启gmond服务

[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh ganglia-gmetad-3.4.0-1.el6.i686.rpm</span>  

安装完成后gmetad服务就默认启动了,稍后可以使用service gmond start|stop|restart等,控制启动
在/etc/ganglia/gmetad.conf,下增加一些被监控的机器列表。

data_source "onlyking" hadoop1:8649 hadoop3:8649 hadoop3:8649

其中“onlyking”是集群的名称,呆会要和客户端的gmond中name的配置一样,修改完重启gmetad服务

现在已满足所有先决条件,您可以安装 Ganglia。首先需要获得它。在本文中,我们使用的是 Ganglia 3.4.0。下载 ganglia-3.4.0.tar.gz 文件并将其放在监视服务器的 /tmp 目录中

[html] view plaincopy
  1. <span style="font-size:14px;">[root@hadoop1 tmp]# tar -zxvf ganglia-3.4.0.tar.gz  
  2. [root@hadoop1 ganglia-3.4.0]# ./configure --with-gmetad  
  3. Welcome to..  
  4.      ______                  ___  
  5.     / ____/___ _____  ____ _/ (_)___ _  
  6.    / / __/ __ `/ __ \/ __ `/ / / __ `/  
  7.   / /_/ / /_/ / / / / /_/ / / / /_/ /  
  8.   \____/\__,_/_/ /_/\__, /_/_/\__,_/  
  9.                    /____/  
  10.   
  11.   
  12. Copyright (c) 2005 University of California, Berkeley  
  13.   
  14. Version: 3.4.0  
  15. Library: Release 3.4.0 0:0:0  
  16.   
  17. Type "make" to compile.  
  18. [root@hadoop1 ganglia-3.4.0]# make -j8  
  19. [root@hadoop1 ganglia-3.4.0]# make install</span>  

安装web

[html] view plaincopy
  1. [root@hadoop1 Downloads]# rpm -ivh ganglia-web-3.5.1-1.noarch.rpm  
[html] view plaincopy
  1. [root@hadoop1 Downloads]# service httpd start  
启动成功后,通过访问http://hadoop1/ganglia就可以看到ganglia的首页了。

第四步,配置hadoop文件

# Configuration of the "dfs" context for ganglia
 dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 dfs.period=10
 dfs.servers=239.2.11.71:8649
# Configuration of the "mapred" context for ganglia
 mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 mapred.period=10
 mapred.servers=239.2.11.71:8649
# Configuration of the "jvm" context for ganglia
 jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 jvm.period=10
 jvm.servers=239.2.11.71:8649
注:239.2.11.71这个是ganglia用的多播的地址,不需要改成gmetad的服务器地址
如果需要监控hbase的话,也一样找到hbase目录下的这个文件,改法一样就不重复了。
改完以后重启hadoop服务

原创粉丝点击