在hadoop-env.sh中添加:
# 在配置namenode和datanode时都会有用到JMX_OPTS的代码,是为了减少重复提取出的公共代码
export JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port"
# 在源hadoop-env.sh中存在$JMX_OPTS之前的代码,JMX_OPTS=8006表示设置jmx的端口
export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS $JMX_OPTS=8006"
export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS $JMX_OPTS=8007"
export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS $JMX_OPTS=8060"
在web页面查看只需要:
df1:50070/jmx
df2:50075/jmx
df3:50075/jmx
Hadoop监控项
指标信息来源:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/Metrics.html
NameNode
JVM监控项
Hadoop:service=NameNode,name=JvmMetrics
JvmMetrics 主要统计的信息包括:内存的使用状态信息; GC 的统计信息;线程的统计信息;以及事件的统计信息。
类型 | 指标项 | 说明 |
---|---|---|
内存 | MemNonHeapUsedM | JVM 当前已经使用的 NonHeapMemory 的大小 |
内存 | MemNonHeapMaxM | JVM 配置的 NonHeapMemory 的大小 |
内存 | MemHeapUsedM | JVM 当前已经使用的 HeapMemory 的大小 |
内存 | MemHeapMaxM | JVM 配置的 HeapMemory 的大小 |
内存 | MemMaxM | JVM 运行时的可以使用的最大的内存的大小 |
GC | GcCount | GC次数 |
线程 | ThreadsNew | 当前线程的处于 NEW 状态下的线程数量 |
线程 | ThreadsRunnable | 当前线程的处于 RUNNABLE 状态下的线程数量 |
线程 | ThreadsBlocked | 当前线程的处于 BLOCKED 状态下的线程数量 |
线程 | ThreadsWaiting | 当前线程的处于 WAITING 状态下的线程数量 |
线程 | ThreadsTimedWaiting | 当前线程的处于 TIMED_WAITING 状态下的线程数量 |
线程 | ThreadsTerminated | 当前线程的处于 TERMINATED 状态下的线程数量 |
事件 | LogFatal | 固定时间间隔内的 Fatal 的数量 |
事件 | LogError | 固定时间间隔内的 Error 的数量 |
事件 | LogWarn | 固定时间间隔内的 Warn 的数量 |
事件 | LogInfo | 固定时间间隔内的 Info 的数量 |
FSNamesystem
Hadoop:service=NameNode,name=FSNamesystem
指标项 | 说明 |
---|---|
MissingBlocks | 当前遗失的block数量 |
ExpiredHeartbeats | 失去心跳的总数量 |
TransactionsSinceLastCheckpoint | 自上次检查点以来的事务总数 |
TransactionsSinceLastLogRoll | 自上次编辑日志卷以来的事务总数 |
LastCheckpointTime | 从上一个检查点以来的时间(毫秒) |
CapacityTotal | 当前数据节点的原始容量(以字节为单位) |
CapacityUsed | 当前在所有DataNode中使用的容量(以字节为单位) |
CapacityRemaining | 当前剩余容量(字节) |
CapacityUsedNonDFS | DataNodes用于非DFS目的的当前空间(以字节为单位) |
TotalLoad | 当前连接数 |
SnapshottableDirectories | 可快照目录的当前数量 |
FilesTotal | 当前文件和目录的数量 |
PendingDataNodeMessageCount | 待机NameNode中用于以后处理的挂起的与块相关的消息的当前数量 |
StaleDataNodes | 由于心跳延迟而标记为过期的DataNodes当前数目 |
Hadoop:service=NameNode,name=FSNamesystemState
指标项 | 说明 |
---|---|
BlocksTotal | 系统中当前分配的块数 |
NumLiveDataNodes | 当前运行的数据节点数量 |
NumDeadDataNodes | 当前死亡的数据节点数 |
VolumeFailuresTotal | 所有Datanodes的卷故障总数 |
EstimatedCapacityLostTotal | 容量故障导致的总容量损失估计 |
RPC
Hadoop:service=NameNode,name=RpcActivityForPort9000(需要进一步确认)
指标项 | 说明 |
---|---|
ReceivedBytes | 接收字节总数 |
SentBytes | 发送字节总数 |
RpcQueueTimeNumOps | RPC调用总数 |
RpcQueueTimeAvgTime | RPC队列平均时间(以毫秒为单位) |
NameNodeActivity
Hadoop:service=NameNode,name=NameNodeActivity
指标项 | 说明 |
---|---|
CreateFileOps | 创建文件的操作总数 |
FilesRenamed | 重命名操作的总数(不是重命名的文件或目录数量) |
DeleteFileOps | 删除文件的操作总数 |
DataNode
JVM监控项
Hadoop:service=DataNode,name=JvmMetrics
JvmMetrics 主要统计的信息包括:内存的使用状态信息; GC 的统计信息;线程的统计信息;以及事件的统计信息。
类型 | 指标项 | 说明 |
---|---|---|
内存 | MemNonHeapUsedM | JVM 当前已经使用的 NonHeapMemory 的大小 |
内存 | MemNonHeapMaxM | JVM 配置的 NonHeapMemory 的大小 |
内存 | MemHeapUsedM | JVM 当前已经使用的 HeapMemory 的大小 |
内存 | MemHeapMaxM | JVM 配置的 HeapMemory 的大小 |
内存 | MemMaxM | JVM 运行时的可以使用的最大的内存的大小 |
GC | GcCount | GC次数 |
线程 | ThreadsNew | 当前线程的处于 NEW 状态下的线程数量 |
线程 | ThreadsRunnable | 当前线程的处于 RUNNABLE 状态下的线程数量 |
线程 | ThreadsBlocked | 当前线程的处于 BLOCKED 状态下的线程数量 |
线程 | ThreadsWaiting | 当前线程的处于 WAITING 状态下的线程数量 |
线程 | ThreadsTimedWaiting | 当前线程的处于 TIMED_WAITING 状态下的线程数量 |
线程 | ThreadsTerminated | 当前线程的处于 TERMINATED 状态下的线程数量 |
事件 | LogFatal | 固定时间间隔内的 Fatal 的数量 |
事件 | LogError | 固定时间间隔内的 Error 的数量 |
事件 | LogWarn | 固定时间间隔内的 Warn 的数量 |
事件 | LogInfo | 固定时间间隔内的 Info 的数量 |
DataNodeActivity
Hadoop:service=DataNode,name=DataNodeActivity-dev02-50010(需要进一步确认)
指标项 | 说明 |
---|---|
BytesWritten | 写入DataNode的字节总数 |
BytesRead | 读取DataNode的字节总数 |
ReadsFromLocalClient | 从本地客户端读取操作的总数 |
ReadsFromRemoteClient | 来自远程客户端的读取操作总数 |
WritesFromLocalClient | 本地客户端的写操作总数 |
WritesFromRemoteClient | 远程客户端的写操作总数 |
RemoteBytesRead | 远程客户端读取的字节数 |
RemoteBytesWritten | 远程客户端写入的字节数 |
RamDiskBytesWrite | 写入内存的字节总数 |
VolumeFailures | 发生的卷故障总数 |
ReadBlockOpNumOps | 读操作总数 |
WriteBlockOpNumOps | 写操作总数 |
ReadBlockOpAvgTime | 读操作的平均时间(以毫秒为单位) |
WriteBlockOpAvgTime | 写操作的平均时间(以毫秒为单位) |
TotalWriteTime | 写操作花费的总毫秒数 |
TotalReadTime | 读操作花费的总毫秒数 |
RPC
Hadoop:service=DataNode,name=RpcActivityForPort50020(需要进一步确认)
指标项 | 说明 |
---|---|
ReceivedBytes | 接收字节总数 |
SentBytes | 发送字节总数 |
RpcQueueTimeNumOps | RPC调用总数 |
RpcQueueTimeAvgTime | RPC队列平均时间(以毫秒为单位) |