Hadoop日志按天分割和开启审计日志

Hadoop日志按天分割和开启审计日志

日志按天分割

hadoop 各个组件默认日志是大小分割的,到一定大小就分割出 .1 .2 .3 .4这样的文件,这样我们在查找问题的时候不是好定位你要的那天日志在哪个文件中。要是一天一个文件,按照日志的话就很好定位了。

在这里介绍一下hadoop按天切分日志的方法。

方法一 修改变量

hbase
1
2
3
hbase-env.sh
添加:
export HBASE_ROOT_LOGGER=INFO,DRFA
hdfs
1
2
3
4
5
hadoop-env.sh
修改:
export HADOOP_ROOT_LOGGER=INFO,DRFA
export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,DRFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,DRFAAUDIT} $HADOOP_NAMENODE_OPTS"
export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=INFO,DRFAS $HADOOP_DATANODE_OPTS"
yarn
1
2
3
yarn-env.sh
添加:
export YARN_ROOT_LOGGER=INFO,DRFA

方法二 修改启动脚本

hdfs
1
2
3
4
5
6
7
8
export HADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-"INFO,RFA"}
export HADOOP_SECURITY_LOGGER=${HADOOP_SECURITY_LOGGER:-"INFO,RFAS"}
export HDFS_AUDIT_LOGGER=${HDFS_AUDIT_LOGGER:-"INFO,NullAppender"}
改为:
export HADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-"INFO,DRFA"}
#开启hdfs审计日志
export HADOOP_SECURITY_LOGGER=${HADOOP_SECURITY_LOGGER:-"INFO,DRFAS"}
export HDFS_AUDIT_LOGGER=${HDFS_AUDIT_LOGGER:-"INFO,DRFAAUDIT"}
yarn
1
2
3
4
	修改yarn-darmon.sh下面
export YARN_ROOT_LOGGER=${YARN_ROOT_LOGGER:-INFO,RFA}

export YARN_ROOT_LOGGER=${YARN_ROOT_LOGGER:-INFO,DRFA}
hbase
1
2
3
4
5
6
export HBASE_ROOT_LOGGER=${HBASE_ROOT_LOGGER:-"INFO,RFA"}
export HBASE_SECURITY_LOGGER=${HBASE_SECURITY_LOGGER:-"INFO,RFAS"}

为:
export HBASE_ROOT_LOGGER=${HBASE_ROOT_LOGGER:-"INFO,DRFA"}
export HBASE_SECURITY_LOGGER=${HBASE_SECURITY_LOGGER:-"INFO,DRFAS"}(无法直接修改,log4里没有配置,需要添加day日志配置)

审计日志

hdfs 日审计日志

1
2
3
4
5
6
7
8
9
10
hdfs.audit.logger=INFO,console
hdfs.audit.log.maxfilesize=256MB
hdfs.audit.log.maxbackupindex=20
log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=${hdfs.audit.logger}
log4j.additivity.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=false
log4j.appender.DRFAAUDIT=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFAAUDIT.File=${hadoop.log.dir}/hdfs-audit.log
log4j.appender.DRFAAUDIT.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFAAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
log4j.appender.DRFAAUDIT.DatePattern=.yyyy-MM-dd

hbase的日审计日志

log4j.properties

1
2
3
4
5
6
7
8
9
10
11
hbase.security.log.file=SecurityAuth.audit
hbase.security.log.maxfilesize=256MB
hbase.security.log.maxbackupindex=20
log4j.category.SecurityLogger=${hbase.security.logger}
log4j.appender.DRFAS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFAS.File=${hbase.log.dir}/${hbase.security.log.file}
log4j.appender.DRFAS.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
log4j.appender.DRFAS.DatePattern=.yyyy-MM-dd
log4j.additivity.SecurityLogger=true
log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE

同时需要配置 hbase-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController</value>
</property>

<property>
<name>hbase.superuser</name>
<value>hadoop</value>
</property>

<property>
<name>hbase.security.authorization</name>
<value>false</value> <!-- 如果值为true,默认每个用户只能访问当前的表。而之前创建的member表的属主是HBase,其他用户对其没有访问权限,需要超级用户为其赋权 -->
</property>
感谢您的支持!