Debian上HBase日志分析技巧
Debian系统中,HBase的日志默认存储在/var/log/hbase/目录下,主要包括两类日志:
hbase-<username>-master-<hostname>.log(HMaster日志)、hbase-<username>-regionserver-<hostname>.log(RegionServer日志),记录集群核心进程的运行状态(如Region分裂、合并、请求处理);使用tail -f命令实时跟踪日志文件的更新,快速捕捉异常信息:
tail -f /var/log/hbase/hbase-<username>-master-<hostname>.log # 实时查看HMaster日志
tail -f /var/log/hbase/hbase-<username>-regionserver-<hostname>.log # 实时查看RegionServer日志
该命令适用于故障排查时观察实时错误(如RegionServer宕机、GC停顿),帮助快速定位问题发生的时间点。
根据运维需求调整日志级别,平衡日志详细程度与性能:
/etc/hbase/conf/log4j.properties,调整rootLogger的日志级别(优先级从高到低为FATAL>ERROR>WARN>INFO>DEBUG>TRACE):log4j.rootLogger=WARN, console # 生产环境推荐WARN,减少日志量
# 若需调试特定组件(如RegionServer),可单独设置
log4j.logger.org.apache.hadoop.hbase.regionserver=WARN
hbase> set_log_level 'org.apache.hadoop.hbase.regionserver', 'DEBUG'
注意:DEBUG/TRACE级别会生成大量日志,仅建议在故障排查时临时使用,生产环境需恢复至WARN/INFO。通过关键词快速定位常见问题:
OutOfMemoryError(内存溢出)、GC overhead limit exceeded(GC停顿过长)、RegionServer Aborted(进程异常终止);Slow Read(慢读)、Slow Write(慢写)、BlockCache Miss(块缓存未命中)、Compaction(合并)耗时过长;Connection refused(连接拒绝)、RPC timeout(RPC超时)、HDFS is not ready(HDFS未就绪);ZooKeeper connection lost(ZooKeeper连接丢失)、Session expired(会话过期)。grep过滤错误日志,awk提取关键字段(如时间、线程、错误类型):grep -i "ERROR" /var/log/hbase/hbase-<username>-regionserver-<hostname>.log | awk '{print $1, $2, $4, $5}' # 提取错误日志的时间、线程、类名
避免日志文件过大占用磁盘空间,需配置日志轮转:
log4j.properties中添加RollingFileAppender,设置日志文件大小上限(如100MB)和保留数量(如10个):log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/var/log/hbase/hbase-<username>-master.log
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
cron任务定期删除超过7天的日志文件:0 0 * * * find /var/log/hbase/ -name "*.log.*" -mtime +7 -exec rm -f {} \;