Cloudera Manager Standard(以下CM)で環境構築中。
CMでは,CMの管理画面上で各種サービスの設定を管理できるようになっているが,主要な設定以外の任意の設定を追加したい場合,安全バルブというフックを利用することで可能となっている。fluentd + webhdfsでHDFSへファイルを書き込む場合,2回のHTTPリクエストが発生する。1回目のHTTPリクエストでは,新規ファイル作成の場合は以下のようなFileNotFoundException
が表示されるが,これは仕様どおりで実質無害なException
なので除外したい。
1 |
ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.FileNotFoundException: File /tmp/service=test/dt=20131214/cent6.20131214-20.fd1.log not found. |
初め,NameNodeの安全バルブでappenderのRFAにorg.apache.log4j.varia.StringMatchFilter
の設定を加えたが,変わらずCM管理画面上のイベントには,FileNotFoundException
が報告されてしまう。ということで,どうもEventServerは上記とは別にログイベントを受け取っているようだ。EventServer,NameNodeのlog4j.propertiesを見ると,以下のような定義が見られる。
1 |
log4j.appender.EventCatcher=com.cloudera.cmf.eventcatcher.client.logs.ExceptionForwarderAppender |
ということで,RFAとは別にログイベントを転送しているであろうこのappenderにfilter設定を追加すれば上手くいきそうである。properties形式で以下のように安全バルブに設定を加える。
1 2 3 |
log4j.appender.EventCatcher.filter.1=org.apache.log4j.varia.StringMatchFilter log4j.appender.EventCatcher.filter.1.StringToMatch=FileNotFoundException log4j.appender.EventCatcher.filter.1.AcceptOnMatch=false |
これで今のところイベントにあがってきていないので上手くいったようだ。NameNodeのログもフィルタリングする場合は,RFAにも設定を加える。
参考
- http://www.cloudera.co.jp/blog/how-does-cloudera-manager-work2.html
- http://blog.father.gedow.net/2012/07/17/fluentd-webhdfs-log4j-ignore-append-error/
コメント