【Hadoop】39-监控

监控是系统管理的重要内容。在本小节中,我们概述Hadoop的监控工具,看看它们如何与外部监控系统相结合。
监控的目标在于检测集群在何时未提供所期望的服务。主守护进程是最需要监控的,包括主namenode、辅助namenode和资源管理器。我们可以预期少数datanode和节点管理器会出现故障,特别是在大型集群中。因此,需要为集群预留额外的容量,即使有一小部分节点宕机,也不会影响整个系统的运作。
除了以下即将介绍的工具之外,管理员还可以定期运行一些测试作业来检查集群的健康状况。

1、日志

所有Hadoop守护进程都会产生日志文件,这些文件非常有助于查明系统中已发生的事件。10.3.2节在i寸论系统日志文件时解释了如何配置这些文件。

1.1、设置日志级别

在故障排查过程中,若能够临时变更特定组件的日志的级别的话,将非常有益。
可以通过Hadoop守护进程的网页(在守护进程的网页的/logLevel目录下)来改变任何logg4j日志名称的日志级别。一般来说,Hadoop中的日志名称对应着执行相关日志操作的类名称。此外,也有例外情况,因此最好从源代码中查找日志名称。

也可以为所有以给定前缀开始的类包启用日志。例如,为了启用资源管理器相关的所有类的日志调试特性,可以访问它的网页http://resource-manager-host:8088/loglevel,并将日志名org.apache.hadoop.yarn.server.resourcemanager设置为DEBUG级别。
也可以通过以下命令实现上述目标:

%hadoop daemonlog -setlevel resource-manager-host:8088 \
org.apache.hadoop.yarn.server.resourcemanager DEBUG

按照上述方式修改的日志级别会在守护进程重启时被复位,通常这也符合用户预期。如果想永久性地变更日志级别,只需在配置目录下的log4j.properties件中添加如下这行代码:
log4j.logger.org.apache.hadoop.yarn.server.resourcemanager=DEBUG

1.2、获取堆栈跟踪

Hadoop守护进程提供一个网页(网页界面的/stacks目录)对正在守护进程的JVM中运行着的线程执行线程转储(thread dump)。例如,可通过http://resource-manager-host:8088/stacks获得资源管理器的线程转储。

2、度量和JMX(Java管理扩展)

Hadoop守护进程收集事件和度量相关的信息,这些信息统称为“度量”(metric)。
例如,各个datanode会收集以下度量(还有更多):写人的字节数、块的复本数和客户端发起的读操作请求数(包括本地的和远程的)。
有时用metrics2指代Hadoop2及后续版本的度量系统,以区别早期版本Hadoop的旧度量系统(现在已经不支持)。
度量从属于特定的上下文(context)。目前,Hadoop使用"dfs”,"mapred”,“yarn"和“rpc”四个上下文。Hadoop守护进程通常在多个上下文中收集度量。例如,datanode会分别为"dfs"和“rpc”上下文收集度量。
度量和计数器的差别在哪里?
主要区别是应用范围不同:度量由Hadoop守护进程收集,而计数器(参见9.1节对计数器的讨论)先针对MapReduce任务进行采集,再针对整个作业进行汇总。此外,用户群也不同,从广义上讲,度量为管理员服务,而计数器主要为MapReduce用户服务。二者的数据采集和聚集过程也不相同·计数器是MapReduce的特性,MapReduce系统确保计数器值由任务JVM产生,再传回application master,最终传回运行MapReduce作业的客户端。(计数器是通过RPC的心跳[heatbeat]传播的,详情可以参见7.1.5节)在整个过程中,任务进程和application master都会执行汇总操作。度量的收集机制独立于接收更新的组件。有多种输出度量的方式,包括本地文件、Ganglia和JMX。守护进程收集度量,并在输出之前执行汇总操作。

所有的Hadoop度量都发布给JMX(Java management Extensions),可以使用标准的JMX工具,如JConsole(JDK自带),来查看这些度量。对于远程监控,必须将JMX系统属性com.sun.management.jmxremote.port(及其他一些用于安全的属性)设置为允许访问。为了在namenode实现这些,需要在hadoop-env.sh文件中设置以下语句:
HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote.port=8004"
也可以通过特定Hadoop守护进程的/jmx网页查看该守护进程收集的JMX度量(JSON格式),这为调试带来了便利。例如,可以在网页http://namenode-host:50070/jmx查看namenode的度量。
Hadoop自带大量的度量通道用于向外部系统发布度量,例如本地文件或Ganglia监控系统。通道在hadoop-mertrics2.properties文件中配置,可以参考该文件,了解如何进行配置设置。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值