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

  在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中显示了最前面源码中的日志语句。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值