Get corrupt file blocks returned error: Operation category READ is not supported in state standby

Cloudera ManagerでNameNode HAしてから,以下のWARNメッセージがStandbyNameNodeのログに定期的に出力される。結構な頻度で書き込まれ,また診断のログの方にも上がってくるので何とか抑制したい。

2015-05-01 00:00:00,350 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Get corrupt file blocks returned error: Operation category READ is not supported in state standby

このJIRAのことだろうか。。

[HDFS-7452] Can we skip getCorruptFiles() call for standby NameNode..? – ASF JIRA

ソースを追っていくと,このgetCorruptFiles()の先のStandbyState#checkOperationStandbyExceptionからのようだった。どのサービスが影響しているのかと,手元の仮想環境で試してところ,どうも以下の状況でログにこのメッセージが吐かれているもよう(他にもあるかもしれない。。)

  • SNNのcloudera-scm-agentがrunning
  • SNNのWebUIへのアクセス
  • Cloudera Management Service,Event Server

そこそこログを占める割合も大きく,診断>イベントでも頻繁に上がってくるため,filterで対応することにした。以下をNameNode ログの高度な設定スニペット(安全バルブ)に設定して再起動する。

log4j.appender.RFA.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.RFA.filter.1.StringToMatch=Get corrupt file blocks returned error: Operation category READ is not supported in state standby
log4j.appender.RFA.filter.1.AcceptOnMatch=false
log4j.appender.EventCatcher.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.EventCatcher.filter.1.StringToMatch=Get corrupt file blocks returned error: Operation category READ is not supported in state standby
log4j.appender.EventCatcher.filter.1.AcceptOnMatch=false

他に,dfs.ha.allow.stale.readsというプロパティをtrueにすることでもできそうだったが,ソースのコメントを見て触らないことにした。。

byebyehaikikyou

日記やIT系関連のネタ、WordPressに関することなど様々な事柄を書き付けた雑記です。ITエンジニア経験があるのでプログラミングに関することなどが多いです。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

Translate »