web-dev-qa-db-ja.com

Hadoopセーフモード回復-時間がかかりすぎます!

18データノードのHadoopクラスターがあります。 2時間以上前にネームノードを再起動しましたが、ネームノードはまだセーフモードです。

これに時間がかかりすぎて、良い答えが見つからない理由を探していました。ここの投稿: Hadoopセーフモードの回復-時間がかかる は関連がありますが、この記事に記載されているように、この設定を変更した後に名前ノードを再起動する必要があるかどうかはわかりません:

<property>
 <name>dfs.namenode.handler.count</name>
 <value>3</value>
 <final>true</final>
</property>

いずれにせよ、これは私が「hadoop-hadoop-namenode-hadoop-name-node.log」で取得しているものです:

2011-02-11 01:39:55,226 INFO org.Apache.hadoop.ipc.Server: IPC Server handler 0 on 8020, call delete(/tmp/hadoop-hadoop/mapred/system, true) from 10.1.206.27:54864: error: org.Apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-hadoop/mapred/system. Name node is in safe mode.
The reported blocks 319128 needs additional 7183 blocks to reach the threshold 0.9990 of total blocks 326638. Safe mode will be turned off automatically.
org.Apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-hadoop/mapred/system. Name node is in safe mode.
The reported blocks 319128 needs additional 7183 blocks to reach the threshold 0.9990 of total blocks 326638. Safe mode will be turned off automatically.
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.deleteInternal(FSNamesystem.Java:1711)
    at org.Apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.Java:1691)
    at org.Apache.hadoop.hdfs.server.namenode.NameNode.delete(NameNode.Java:565)
    at Sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:616)
    at org.Apache.hadoop.ipc.RPC$Server.call(RPC.Java:508)
    at org.Apache.hadoop.ipc.Server$Handler$1.run(Server.Java:966)
    at org.Apache.hadoop.ipc.Server$Handler$1.run(Server.Java:962)
    at Java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.Java:416)
    at org.Apache.hadoop.ipc.Server$Handler.run(Server.Java:960)

任意のアドバイスをいただければ幸いです。ありがとう!

27
senile_genius

私は一度それを持っていましたが、いくつかのブロックは報告されませんでした。namenodeをセーフモード(hadoop dfsadmin -safemode leave)次にfsckを実行して、見つからないファイルを削除します。

44
xinit

Hdfs-site.xmlのプロパティdfs.namenode.handler.countを確認します。

hdfs-site.xmlのdfs.namenode.handler.countは、Namenodeが処理するために使用するスレッドの数を指定します。デフォルト値は10です。このプロパティの値が小さすぎると、指定された問題が発生する可能性があります。

また、欠落または破損しているブロックhdfs fsck /を確認してください。 egrep -v '^。+ $' | grep -vレプリカ

hdfs fsck/path/to/corrupt/file -locations -blocks -files

破損したブロックが見つかった場合は削除します。 hdfs fs -rm/file-with-missing-corruptブロック。

0
Pravat Sutar