Pivotal Knowledge Base

フォローする

Hadoop デーモンの log4j.properties を変更する方法

環境

製品 バージョン
PHD 1.x
PHD 2.0.0.0

目的

デフォルトではPHDサービスデーモンは様々な log4j ファイルアペンダを使用しており、そのいくつかはユーザがHadoopデーモンログのデータ量を制御することを許可していない。これはsysadminに、生成されたログデータの管理や保持を委譲しているためである。この記事では、sysadminによる制御の補助とPHDデーモンログ管理の理解のため、全ての様々なPHDコアコンポーネントに対するlog4j.propertiesの設定方法について説明する。  

log4jのJava Docsとサンプル設定パラメータのクイックリファレンス

DailyRollingFileAppender_DRFA
#
# 日次ローリングファイルアペンダ
# 夜間にロールオーバーを実施
log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
RollingFileAppender_RFA
#
# ローリングファイルアペンダ – 各ログファイルの最大サイズは256MB
#
hadoop.log.maxfilesize=256MB
hadoop.log.maxbackupindex=20
log4j.appender.RFA=org.apache.log4j.RollingFileAppender
log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
log4j.appender.RFA.MaxFileSize=${hadoop.log.maxfilesize}
log4j.appender.RFA.MaxBackupIndex=${hadoop.log.maxbackupindex}
log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
FileAppender
#
# ファイルアペンダ
#
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=${hive.log.dir}/${hive.log.file}
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
ConsoleAppender
#
# コンソール出力アペンダオプション
#
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.appender.console.encoding=UTF-8

ルートロガー環境変数クリックリファレンス

変数 サービス オーバーライドされる箇所
HADOOP_ROOT_LOGGER=INFO,RFA Namenode
Journalnode
ZKFC
Datanode
Secondary Namenode
/etc/gphd/hadoop/conf/hadoop-env.sh
HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA     Mapreduce History Server     /etc/gphd/hadoop/conf/mapred-env.sh
YARN_ROOT_LOGGER=INFO,RFA

Resourcemanager
Nodemanager

/etc/gphd/hadoop/conf/yarn-env.sh
 ZOO_LOG4J_PROP=INFO,ROLLINGFILE  zookeeper /etc/gphd/zookeeper/conf/java.env
 HBASE_ROOT_LOGGER=INFO,RFA

hbase master
hbase regionserver

 /etc/gphd/hbase/conf/hbase-env.sh

ログディレクトリを定義する箇所

すべてのサービスは /etc/default/<service 名>の配下に定義されている$<SERVICE 名>_LOG_DIRという変数を割り当てている。例えばdatanodeサービスは"HADOOP_LOG_DIR=/var/log/gphd/hadoop-hdfs"という環境変数が割り当ててある。従ってすべてのdatanodeサービスログファイルは"/var/log/gphd/hadoop-hdfs" で見つかる。

[gpadmin@hdw1 ~]$ cat /etc/default/hadoop-hdfs-datanode  | egrep ^export
export HADOOP_PID_DIR=/var/run/gphd/hadoop-hdfs
export HADOOP_LOG_DIR=/var/log/gphd/hadoop-hdfs
export HADOOP_NAMENODE_USER=hdfs
export HADOOP_SECONDARYNAMENODE_USER=hdfs
export HADOOP_DATANODE_USER=hdfs
export HADOOP_IDENT_STRING=hdfs

Namenode、Journalnode、ZKFC、DatanodeとSecondary Namenode デーモン

これらのデーモンは/etc/gphd/hadoop/conf/log4j.propertiesからlog4jの設定を読み込む。

HADOOP_ROOT_LOGGER 環境変数はデフォルトロガーを制御するために使われ、デフォルトでRollingFileAppenderにルートロガーを設定するファイルである"/usr/lib/gphd/hadoop/sbin/hadoop-daemon.sh”から読み込まれる。これは /etc/gphd/hadoop/conf/hadoop-env.sh の設定内容で上書きされる。

export HADOOP_ROOT_LOGGER=INFO,RFA 

監査ログ

/etc/gphd/hadoop/conf/hadoop-env.shの環境変数HADOOP_NAMENODE_OPTS、HADOOP_DATANODE_OPTS並びにHADOOP_SECONDARYNAMENODE_OPTS環境変数に指定されている"hadoop.security.logger"の設定項目ごとに DRFAS を適用する。

Mapreduce ヒストリサーバ

Mapreduce ヒストリサービスは/etc/gphd/hadoop/conf/log4j.propertiesからlog4jの設定を読み込む。

HADOOP_MAPRED_ROOT_LOGGER 環境変数はデフォルトロガーを制御するために使われ、デフォルトでRollingFileAppenderにMapreduceヒストリサーバロガーを設定するファイル"/usr/lib/gphd/hadoop-mapreduce/sbin/mr-jobhistory-daemon.sh"で読み込まれる。これは /etc/gphd/hadoop/conf/mapred-env.sh でオーバーライド可能である。

export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

Resource ManagerとNodemanager

これらのデーモンは/etc/gphd/hadoop/conf/log4j.propertiesからlog4jの設定を読み込む。

YARN_ROOT_LOGGER 環境変数はデフォルトロガーを制御するのに使われ、RollingFileAppenderにデフォルトロガーを設定するファイル"/usr/lib/gphd/hadoop-yarn/sbin/yarn-daemon.sh"で読み込まれる。これは /etc/gphd/hadoop/conf/yarn-env.sh でオーバーライド可能である。

export YARN_ROOT_LOGGER=INFO,RFA

Zookeeper

Zookeeprは /etc/gphd/zookeeper/conf/log4j.propertiesからlog4jの設定を読み込む。

ZOO_LOG4J_PROP 環境変数はデフォルトロガーを制御するために使われ、RollingFileAppenderにデフォルトロガーを設定するファイル"/usr/bin/zookeeper-server" で読み込まれる。これは /etc/gphd/zookeeper/conf/java.envにこの値をエクスポートすることでオーバーライド可能である。

export ZOO_LOG4J_PROP=INFO,ROLLINGFILE

Hbase MasterとHbase Regionserver

これらのデーモンは/etc/gphd/hbase/conf/log4j.propertiesからlog4jの設定を読み込む。

HBASE_ROOT_LOGGER 環境変数はデフォルトロガーを制御するために使われ、RollingFileAppenderにデフォルトロガーを設定するファイル"/usr/lib/gphd/hbase/bin/hbase-daemon.sh" で読み込まれる。これは /etc/gphd/hbase/conf/hbase-env.sh でオーバーライド可能である。

export HBASE_ROOT_LOGGER=INFO,RFA

HIVE

Hiveは /etc/gphd/hive/conf/hive-log4j.properties からlog4jの設定を読み込む。PHD においては、すべてのHiveデーモンログはこのファイルのhive.root.loggerの値を読み込む。 

hive.root.logger=WARN,DRFA
hive.log.dir=/tmp/${user.name}
hive.log.file=hive.log

"/etc/init.d/hive-server" はHiveサーバを起動するために使われる。そしてHiveサーバのログファイル名を"hive-server.log" に設定し、hive-log4j.propertiesで定義されたhive.root.logger の値をデフォルトとして使用する。このログファイルは、Hiveサーバデーモンが再起動される度にトランケートされる。

NAME="hive-server"
LOG_FILE="/var/log/gphd/hive/${NAME}.log"

"/etc/init.d/hive-metastore" はHiveメタストアを起動するために使われる。そしてHiveサーバのログファイル名を"hive-metastore" に設定し、hive-log4j.propertiesで定義されたhive.root.loggerデフォルト値を使用する。このログファイルは、Hiveサーバデーモンが再起動される度にトランケートされる。

NAME="hive-metastore"
LOG_FILE="/var/log/gphd/hive/${NAME}.log"

HiveサーバとHiveメタストアデーモンの双方ともに、hive-log4j.propertiesでの定義によりデータを "hive.log" に記録する。この統合されたhive.logファイルは、hive.root.loggerごとにログローテーションが実施される。hive.root.loggerには、DRFA が設定され、hive-log4j.propertiesに定義される。

Hive クエリのヒストリログ

ヒストリログファイルの配置箇所はhive-stie.xmlの"hive.querylog.location" により管理されている。デフォルトでは、このパラメータは"/<hdfs-site.xml の hadoop.tmp.dir>/${user.name}/" と設定されている。

コメント

Powered by Zendesk