Hadoop safemode recovery - слишком долго!

26

У меня есть Hadoop-кластер с 18 узлами данных. Я перезапустил узел имени более двух часов назад, а узел имени все еще находится в безопасном режиме.

Я искал, почему это может занять слишком много времени, и я не могу найти хороший ответ. Сообщение здесь: Hadoop safemode recovery - требуется много времени имеет значение, но я не уверен, хочу ли я / перезапустить узел имени после внесения изменений в этот параметр, как упоминается в этой статье:

<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.run(Server.java:966)
    at org.apache.hadoop.ipc.Server$Handler.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)

Любые советы приветствуются. Спасибо!

    
задан senile_genius 11.02.2011 в 08:28
источник
  • Каков ваш фактор репликации? –  Thomas Jungblut 11.02.2011 в 09:58
  • Коэффициент репликации равен 3. И он все еще находится в безопасном режиме! –  senile_genius 11.02.2011 в 12:58
  • K, да, вы должны обязательно пойти на более высокий счетчик обработчиков, должны быть arround 10. –  Thomas Jungblut 11.02.2011 в 13:38

1 ответ

43

У меня было это один раз, когда некоторые блоки никогда не сообщались. Мне пришлось принудительно оставить namenode оставить safemode ( hadoop dfsadmin -safemode leave ), а затем запустить fsck для удаления отсутствующих файлов.

    
ответ дан xinit 16.02.2011 в 20:04
  • Я закончил тем, что должен был запустить «-safemode leave» также после ожидания нескольких часов. Есть недостающие блоки, поэтому мне нужно будет запустить fsk, чтобы удалить отсутствующие файлы. –  senile_genius 17.02.2011 в 13:01
  • Знаете ли вы, почему hdfs не восстанавливает недостающие реплики? –  Denis 14.04.2015 в 12:27
  • Затем используйте hasoop fsck -delete для очистки данных. –  shane 11.05.2017 в 05:12