Подтвердить что ты не робот

Запись в HDFS могла быть реплицирована только на 0 узлов вместо minReplication (= 1)

У меня есть 3 узла данных, работающих при запуске задания, я получаю следующую ниже приведенную ниже ошибку,

java.io.IOException: Файл/пользователь/ashsshar/olhcache/loaderMap9b663bd9 может быть реплицирован только на 0 узлов вместо minReplication (= 1). В этой операции исключены 3 datanode (s) и 3 node (s).         на org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325)

Эта ошибка возникает, когда наши экземпляры DataNode закончили свободное пространство или DataNodes не запущены. Я попытался перезапустить DataNodes, но все равно получаю ту же ошибку.

dfsadmin - записи на моих узлах кластера ясно показывают, что доступно много места.

Я не уверен, почему это происходит.

4b9b3361

Ответ 1

1.Установить всех демонов Hadoop

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x stop ; done

2. Удалите все файлы из /var/lib/hadoop-hdfs/cache/hdfs/dfs/name

Eg: [email protected]:~$ sudo rm -r /var/lib/hadoop-hdfs/cache/

3.Format Namenode

sudo -u hdfs hdfs namenode -format

4. Запустите всех демонов Hadoop

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x start ; done

Остановить все службы Hadoop

Ответ 2

У меня была одна и та же проблема, у меня было очень мало места на диске. Освобождение диска решило его.

Ответ 3

  • Проверьте, работает ли ваш DataNode, используйте команду: jps.
  • Если он не работает, подождите некоторое время и повторите попытку.
  • Если это работает, я думаю, вам нужно переформатировать свой DataNode.

Ответ 4

Что я обычно делаю, когда это происходит, так это то, что я иду в каталог tmp/hadoop-username/dfs/и вручную удаляю папки данных и имен (при условии, что вы работаете в среде Linux).

Затем отформатируйте dfs, вызвав bin/hadoop namenode -format (убедитесь, что вы отвечаете с помощью буквы Y, когда вас спрашивают, хотите ли вы форматировать, если вас не спросят, повторите команду снова).

Затем вы можете снова запустить hadoop, вызвав bin/start-all.sh

Ответ 5

Очень простое исправление для той же проблемы в Windows 8.1
Я использовал ОС Windows 8.1 и Hadoop 2.7.2, чтобы решить эту проблему.

  • Когда я запустил hdfs namenode -format, я заметил, что в моем каталоге есть блокировка. см. рисунок ниже. HadoopNameNode
  • Как только я удалю полную папку, как показано ниже, и снова я сделал hdfs namenode -format. Местоположение папки
    Полное удаление папки
  • После выполнения выше двух шагов я могу успешно разместить нужные файлы в системе HDFS. Я использовал команду start-all.cmd, чтобы начать пряжу и namenode.

Ответ 6

У меня была эта проблема, и я решил ее как рев:

  • Найдите, где сохраняются ваши метаданные данных и данных natenode и данные; если вы не можете найти его, просто выполните эту команду на mac, чтобы найти его (они находятся в папке с именем "tmp" )

    find/usr/local/Cellar/-name "tmp";

    Команда

    find выглядит так: find < "directory" > -name < "любой строковый ключ для этого каталога или файла" >

  • После нахождения этого файла, cd в него. /USR/ локальные/Cellar//Hadoop/HDFS/TMP

    то cd в dfs

    затем используя команду -ls, увидите, что там расположены каталоги данных и имен.

  • Используя команду remove, удалите их оба:

    rm -R. и rm -R name

  • Перейдите в папку bin и завершите все, если вы еще этого не сделали:

    SBIN/end-dfs.sh

  • Выход из сервера или локального хоста.

  • Войдите снова в сервер: ssh < "имя сервера" >

  • запустите dfs:

    SBIN/start-dfs.sh

  • Отформатируйте namenode для уверенности:

    bin/hdfs namenode -format

  • теперь вы можете использовать команды hdfs для загрузки ваших данных в dfs и выполнения заданий MapReduce.