本节书摘来异步社区《Hadoop MapReduce性能优化》一书中的第2章,第2.3节,作者: 【法】Khaled Tannir 译者: 范欢动 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 性能监测工具
Hadoop MapReduce性能优化
监测Hadoop集群节点的系统资源(如CPU利用率和磁盘平均数据传输率)有助于理解硬件资源的总体利用情况,并在诊断性能问题时找出瓶颈。Hadoop集群监测包括集群节点上系统资源使用情况的监测和核心服务指标的监测。最常监测的资源包括I/O带宽、每秒磁盘I/O操作的次数、平均数据传输率、网络延迟、平均内存和交换空间利用情况。
Hadoop性能监测建议收集性能计数器的数据,这样做是为了判断各种任务的响应时间是否在可接受的执行时间范围内。MapReduce任务的利用率平均百分比和一个时间段内的HDFS存储容量指明了集群资源是得到了最优利用还是利用不足。
Hadoop提供了大量用于监视与调试Hadoop服务的指标与信息源。这些系统与服务指标需要从集群节点收集并进行关联,以便分析Hadoop集群的整体状态,并诊断发现的问题。
有许多完全开源的监测系统(如Chukwa、Ganglia、Nagios及Ambari等)可以把Hadoop提供的各种指标和信息源整合起来,成为意义直观的面向服务的总结、图形以及警告,利用这些开源的监测系统可以提高你的监测经验。
2.3.1 用Chukwa监测Hadoop
Chukwa 是一个开源数据收集系统,用于监测和分析大型分布式系统。Chukwa构建于Hadoop之上,包含一个强大而灵活的工具集,用来监测、分析和观察结果。
Chukwa的许多组件采用了插件方式,支持轻松定制与功能增强。它提供了用于处理所收集数据的标准框架,其收集容量与分析容量可以扩展到几千个节点。
2.3.2 使用Ganglia监测Hadoop
Ganglia 初创于加利福尼亚大学伯克利分校,致力于提供一种可靠的资源消耗型计算集群性能监测解决方案。Ganglia可以监测成百上千个节点的集群。基本上,Ganglia收集每个受监测节点的CPU利用率和剩余磁盘空间等高阶变量。不仅如此,Ganglia还能监测发生故障的集群节点。
当前的Hadoop版本内置了对Ganglia(版本3.0+)的支持。它是一种高度可扩展的集群监测工具,提供单个集群、一组集群或者集群中某台机器的状态的图形化视图信息。
Hadoop上Ganglia的架构与实现支持集群联合体,可以监控联合体内每一集群内部的状态并对状态进行聚合。该架构包括Ganglia收集器(Ganglia Collector),Ganglia收集器运行监测守护进程并收集每个集群的性能指标,还运行一个元守护进程(meta daemon),用来聚合所有集群的性能指标。Ganglia收集器提供Web用户界面,展现内存使用情况、磁盘使用情况、网络统计、正在运行的进程以及其他性能指标的实时动态视图。
2.3.3 使用Nagios监测Hadoop
Nagios(http://www.nagios.org/)是一个流行的开源监测工具系统,主要用于高性能计算(High Performance Computing,HPC)和其他环境,设计目的是获取系统资源的性能指标。Nagios用来监测Hadoop集群资源以及应用程序和操作系统属性的状态,如CPU使用情况、磁盘空间及内存利用情况。
Nagios具有集成的内置通知系统,用来进行通知而不是系统性能指标的收集与跟踪。当前Nagios版本允许在目标主机上运行代理,并提供灵活、可定制的架构,用来收集有关Hadoop集群的状态的性能指标和信息数据。
Nagios用来提供以下几方面的监测信息。
- 获取Hadoop基础设施组织的即时信息。
- 系统故障时产生并接收警告。
- 针对集群利用情况进行分析、报告并生成图形,对以后的硬件采购做出决策。
- 检测问题并参加后续的问题解决。
- 监测队列消耗情况,查找正在运行作业的节点的可用性。