hadoop2.0 ha failoverで発生した問題
3127 ワード
最近hadoop 2をテストしています.0のha、failoverの場合、standby namenodeはactive namenodeのeditログを同期します.
editファイルが多い場合、standby namenodeはjournalnodeに頻繁にアクセスします.同期帯域幅に制限がないため、standby namenodeはjournalnodeの帯域幅を占有し、active namenodeはjournalnodeにアクセスできません.timeoutになるとactivenamenodeが切られます.Active namenodeのログは次のとおりです.
テストは何度もこの問題が発生します.
時間制限と帯域幅に関係している以上、プロファイルに関連する2つの構成を探します.よく調べてみると、いくつかの構成が見つかりました.
editファイルが多い場合、standby namenodeはjournalnodeに頻繁にアクセスします.同期帯域幅に制限がないため、standby namenodeはjournalnodeの帯域幅を占有し、active namenodeはjournalnodeにアクセスできません.timeoutになるとactivenamenodeが切られます.Active namenodeのログは次のとおりです.
192.168.24.71:8485: Call From l-datalogm2.data.cn1/192.168.24.73 to l-datalog3.data.cn1:8485 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81)
at org.apache.hadoop.hdfs.qjournal.client.QuorumCall.rethrowException(QuorumCall.java:223)
at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:142)
at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.selectInputStreams(QuorumJournalManager.java:460)
at org.apache.hadoop.hdfs.server.namenode.JournalSet.selectInputStreams(JournalSet.java:252)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1237)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1265)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.selectInputStreams(FSEditLog.java:1249)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:609)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:264)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:787)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:568)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:443)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:491)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:684)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:669)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1254)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1320)
テストは何度もこの問題が発生します.
時間制限と帯域幅に関係している以上、プロファイルに関連する2つの構成を探します.よく調べてみると、いくつかの構成が見つかりました.
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
<value>60000</value>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>60000</value>
</property>
// timeout , image edit , 1M
<property>
<name>dfs.image.transfer.bandwidthPerSec</name>
<value>1048576</value>
</property>
2個のnamenodeを再起動し、各種failoverを行い、問題は再発しなかった.keep moving!