如何让Hive Metastore将日志输出到独立文件?
独立Hive部署配置HiveServer2与Metastore独立日志方案
在无Cloudera/Ambari的独立Hive环境中,可通过log4j2配置文件分别指定HiveServer2和Metastore的日志输出,实现日志分离,具体步骤如下:
一、Metastore独立日志配置
- 定位
metastore-log4j2.properties文件(默认在$HIVE_HOME/conf目录下),编辑该文件添加专属日志输出配置:
# 定义Metastore日志滚动文件Appender appender.metastore.type = RollingFile appender.metastore.name = metastoreAppender appender.metastore.fileName = ${sys:hive.log.dir}/hive-metastore.log appender.metastore.filePattern = ${sys:hive.log.dir}/hive-metastore-%d{yyyy-MM-dd}-%i.log.gz appender.metastore.layout.type = PatternLayout appender.metastore.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n # 设置日志滚动策略:单文件256MB时滚动,保留最近30个日志文件 appender.metastore.policies.type = Policies appender.metastore.policies.size.type = SizeBasedTriggeringPolicy appender.metastore.policies.size.size = 256MB appender.metastore.strategy.type = DefaultRolloverStrategy appender.metastore.strategy.max = 30 # 将Metastore核心日志关联到上述Appender logger.metastore.name = org.apache.hadoop.hive.metastore logger.metastore.level = INFO logger.metastore.additivity = false logger.metastore.appenderRef.metastore.ref = metastoreAppender
- 启动Metastore时指定该配置文件:
hive --service metastore -Dlog4j.configurationFile=file://$HIVE_HOME/conf/metastore-log4j2.properties &
或者在$HIVE_HOME/conf/hive-env.sh中添加环境变量,避免每次启动手动指定:
export HIVE_METASTORE_LOG4J_PROPERTIES=$HIVE_HOME/conf/metastore-log4j2.properties
二、HiveServer2独立日志配置
- 在
$HIVE_HOME/conf目录下创建/编辑hiveserver2-log4j2.properties,添加专属日志配置:
# 定义HiveServer2日志滚动文件Appender appender.hiveserver2.type = RollingFile appender.hiveserver2.name = hiveserver2Appender appender.hiveserver2.fileName = ${sys:hive.log.dir}/hive-server2.log appender.hiveserver2.filePattern = ${sys:hive.log.dir}/hive-server2-%d{yyyy-MM-dd}-%i.log.gz appender.hiveserver2.layout.type = PatternLayout appender.hiveserver2.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n # 日志滚动策略 appender.hiveserver2.policies.type = Policies appender.hiveserver2.policies.size.type = SizeBasedTriggeringPolicy appender.hiveserver2.policies.size.size = 256MB appender.hiveserver2.strategy.type = DefaultRolloverStrategy appender.hiveserver2.strategy.max = 30 # 将HiveServer2核心日志关联到上述Appender logger.hiveserver2.name = org.apache.hive.service.server logger.hiveserver2.level = INFO logger.hiveserver2.additivity = false logger.hiveserver2.appenderRef.hiveserver2.ref = hiveserver2Appender
- 启动HiveServer2时指定该配置文件:
hive --service hiveserver2 -Dlog4j.configurationFile=file://$HIVE_HOME/conf/hiveserver2-log4j2.properties &
同样可在hive-env.sh中添加环境变量简化启动:
export HIVE_SERVER2_LOG4J_PROPERTIES=$HIVE_HOME/conf/hiveserver2-log4j2.properties
三、关键注意事项
- 确保
$HIVE_HOME/logs目录存在且服务运行用户有读写权限,也可在配置中替换为自定义日志路径 - 不要使用默认的
hive-log4j2.properties同时配置两个服务,否则会导致日志混杂 - 启动服务后可查看对应日志文件(如
hive-metastore.log、hive-server2.log)验证配置是否生效
内容的提问来源于stack exchange,提问作者MarcT
相关产品推荐
相关产品推荐

