Если бы контейнер oop Docker мог быть реплицирован только на 0 узлов вместо minReplication (= 1) - PullRequest
0 голосов
/ 28 мая 2020

Я пробовал разные docker изображений для контейнеров Had oop, но ни один из них не работает, когда я пытаюсь записать файлы в HDFS. Я всегда получаю сообщение об ошибке:

Вызвано: org. apache .had oop .ip c .RemoteException (java .io.IOException): File / t / _porary / 0 / _porary / try_20200528153700_0001_m_000006_7 / part-00006-34c8bc6d-68a3-4177-bfbf-5f225b28c157-c000.snappy.parquet можно было реплицировать только на 0 узлов вместо minReplication (= 1). В этой операции запущено 3 узла данных, и 3 узла (узлов) исключены.

Что я пробовал до сих пор?

  1. Форматированный Namenode, как указано в аналогичных вопросы.
  2. Открыты необходимые порты, 8088, 50070, 9000, 50010.
  3. В Datanode уже достаточно места.
  4. Обновлен файл хоста, 127.0.0.1 сопоставлено с именем контейнера .

Я запускаю приложение на своем локальном компьютере, Docker контейнеры также работают на локальном.

После создания базового c Dataframe, я пытаюсь написать .

df.write.save('hdfs://hadoop-master:9000/t', format='parquet', mode='append'

Потребовалось почти 2 минуты, затем выдает ошибку.

WebUI в порядке. Я могу поместить файл в HDFS с командами в контейнере.

Мне кажется, что проблема с сетью / подключением, но я не мог выяснить.

1 Ответ

0 голосов
/ 28 мая 2020

Я не решил проблему, но нашел быстрое решение.

TL; TR

MacOS может вызвать эту проблему.

Создан новый сервер Debian на GCP, установлен docker, его изображения и Python коды, которые я тестировал. Он работал нормально, но все же я получаю сообщение об ошибке, когда пытаюсь подключиться с моего локального компьютера.

Но все еще нужен ответ, я делюсь им для тех, кому нужно быстрое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...