ConnectionError(MaxRetryError("Максимальное количество попыток HTTPConnectionPool превышено с использованием pywebhdfs

Привет, я использую pywebhdfs python lib. я подключаю EMR, звоня и пытаясь создать файл на HDFS. Я получаю исключение ниже, которое кажется неуместным по сравнению с тем, что я выполняю, поскольку здесь я не достигаю предела подключения. это из-за того, как работает webhdfs

from pywebhdfs.webhdfs import PyWebHdfsClient
hdfs = PyWebHdfsClient(host='myhost',port='50070', user_name='hadoop')
my_data = '01010101010101010101010101010101'
my_file = 'user/hadoop/data/myfile.txt'
hdfs.create_file(my_file, my_data)

бросает:

request.exceptions.ConnectionError: HTTPConnectionPool (host = 'masterDNS', port = 50070): превышено максимальное количество попыток с URL-адресом: /webhdfs/v1/user/hadoop/data/myfile.txt?op=CREATE&user.name=hadoop (вызвано NewConnectionError(': Не удалось установить новое соединение: [Errno 115] Выполняется операция',))


person Sam    schedule 04.03.2016    source источник
comment
Возможно, это может быть полезно: https://translate.google.com/translate?hl=en&sl=zh-CN&u=http://91r.net/ask/34259099.html&prev=search. Похоже, речь идет о вводе отдельных записей хоста, чтобы обойти одну и ту же проблему с URL-адресом, вызывающую исключение. Не лучшее решение основной проблемы, но, по крайней мере, это может помочь вам обойти ее.   -  person ManoDestra    schedule 15.03.2016


Ответы (4)


У меня тоже была эта проблема. Я обнаружил, что по какой-то причине вызов:

send(self, request, stream=False, timeout=None, verify=True, cert=None, proxy=None):

проходит тайм-аут 0, и это заставляет send выдать

MaxRetryError

В итоге я обнаружил, что если вы просто установите timeout = 1, он отлично работает:

hdfs = PyWebHdfsClient(host='yourhost', port='50070', user_name='hdfs', timeout=1)

Надеюсь, это сработает и для вас.

person Greg    schedule 19.03.2016

Форматирование namenode решило эту проблему для меня несколько раз.

hdfs namenode -format
person Angelo Di Donato    schedule 19.09.2019

Пожалуйста, проверьте статус вашего подключения. Запустите команду ниже, чтобы увидеть, работает ли порт webhdfs с вашего хоста:

netstat -an | grep 50070 | grep LIST

Пожалуйста, обрати внимание:

  • Если SSL включен, то порт будет 50470.
  • hdfs namenode -format не должен запускаться из узла, потому что он форматирует ваш узел имени, и вы все теряете.
person Amit    schedule 08.08.2020

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

person user7779187    schedule 28.03.2017