您的位置:首页 > Web前端 > Node.js

Hadoop2动态调整Log级别-以datanode的heartbeat log为例

2016-08-17 18:09 393 查看
  在Hadoop中,有些log信息在正常情况下是不打印出来的。比如datanode发送heartbeat的日志。

  代码位于BPServiceActor#sendHeartBeat方法中,如下图:

  


  由于默认心跳间隔时间为3s,默认打印该日志的话,日志文件会很大。

一、使用命令

  可以使用命令
hadoop daemonlog
来获取和修改指定类的Log级别。

[hadoop@hadoop001 logs]$ hadoop daemonlog

Usage: General options are:
[-getlevel <host:httpPort> <name>]
[-setlevel <host:httpPort> <name> <level>]


  这个参数需要传入是get日志级别,还是set日志级别。

  需要指定访问的host和port

  需要指定修改日志级别的类

  如果是set日志级别,需要指定希望设置的Log级别

二、端口号

  查看datanode进程可以通过http访问的端口号

参数默认值作用
dfs.datanode.http.address0.0.0.0:50075The datanode http server address and port.
  所有想要动态调整的,都需要访问该进程的http-address。

  再比如,如果需要调整namenode的日志级别,那么需要访问端口号

参数默认值作用
dfs.namenode.http-address0.0.0.0:50070The address and the base port where the dfs namenode web ui will listen on.

三、操作

1、获取datanode日志级别

hadoop daemonlog -getlevel hadoop001:50075 org.apache.hadoop.hdfs.server.datanode.DataNode
Connecting to http://hadoop001:50075/logLevel?log=org.apache.hadoop.hdfs.server.datanode.DataNode Submitted Log Name: org.apache.hadoop.hdfs.server.datanode.DataNode
Log Class: org.apache.commons.logging.impl.Log4JLogger
Effective level: INFO


2、设置datanode日志级别

[hadoop@hadoop001 logs]$ hadoop daemonlog -setlevel hadoop001:50075 org.apache.hadoop.hdfs.server.datanode.DataNode DEBUG
Connecting to http://hadoop001:50075/logLevel?log=org.apache.hadoop.hdfs.server.datanode.DataNode&level=DEBUG Submitted Log Name: org.apache.hadoop.hdfs.server.datanode.DataNode
Log Class: org.apache.commons.logging.impl.Log4JLogger
Submitted Level: DEBUG
Setting Level to DEBUG ...
Effective level: DEBUG


四、查看日志

  修改datanode进程的日志级别后,查看日志。

1、INFO级别日志



2、DEBUG级别日志

  从下图中可以看出,调整为DEBUG后,log中显示了最前面源码中的日志语句。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: