So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

インフラエンジニアのためのHadoop情報 ログの切捨て [Hadoop]

Hadoopはlog4jを使って、大量のログを生成しています。連日ジョブを走らせている
ような環境では、NameNodeのログ領域はGバイト単位で肥大化してディスクを圧迫します。
ログの出力ディレクトリをシステム領域と共有している場合などは、ディスク残容量
不足でシステムトラブルの原因にもなりえます。
見落としがちですが、ログの管理もやっておきましょう。
ローテーションについては、Hadoopがやってくれているので、不要なログを抑制して
不要になった古いログは削除するようにします。
ログの抑制についてですが、CDHを使う限りHDFSへのアクセスにパーミッションを設定して
はいないので、HDFSへの監査ログは不要と思われます。
しかも、この監査ログがHDFSへのアクセスの度に記録されるので、肥大化の原因になって
ます。
log4j.properties中に定義されている「SNamesystem Audit logging」をデフォルトの
INFO(全て)からWARNに切り替えます。
以下の行をlog4j.propertiesに追加します。
log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=WARN

ちなみに、log4j.propertiesのコメント中には、
#log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN

の記述がありますが、これを設定してもログに変化は見られませんでした。
次に、古いログを削除しましょう。
例えば、以下のようなスクリプトを/etc/cron.dailyに作成しておき、指定した日にちが
経過したログは削除するようにします。
#!/bin/bash
# 15日前のHadoopログを削除する。
CDATE=15
LOGS=/var/log/hadoop-0.20
/bin/rm -r `find $LOGS -ctime +$CDATE`


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は180日以上新しい記事の更新がないブログに表示されております。