Код: Выделить всё
requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='192.168.99.100', port=50070): Max retries exceeded with url: /webhdfs/v1/user/hadoop/real_estate_data/Real_Estate_Sales.csv?user.name=modhv&offset=0&op=OPEN (Caused by ConnectTimeoutError(, 'Connection to 192.168.99.100 timed out. (connect timeout=None)'))
Python Версия: 3.12
Библиотеки: запросы, urllib3, hdfs, pandas
Образ Docker: suhothayan/hadoop-spark-pig-hive :2.9.2
Версия Docker: 4.37.1
ОС: Windows 11
Предпринятые шаги:
Я запускаю кластер Hadoop внутри контейнера Docker и пытаюсь получить доступ к HDFS через WebHDFS.
Контейнер работает со следующими открытыми портами:
50070 для NameNode
50075 для DataNode
Я подтвердил, что службы Hadoop (NameNode и DataNode) запущены и работают внутри контейнера.
Я использовал IP-адрес Docker 172.17.0.2 и даже localhost в сценарии Python для подключения к HDFS.
При попытке запустить сценарий Python постоянно происходит сбой с ошибкой ConnectTimeoutError.при использовании https://localhost/50070 и https://172.17. 0.2/50070 в браузере все в порядке. Код:
Код: Выделить всё
from hdfs import InsecureClient
import pandas as pd
# Connect to HDFS using the container's IP address
client = InsecureClient('http://localhost:50070') # Use the container IP
# Correct HDFS file path
hdfs_file_path = '/user/hadoop/real_estate_data/Real_Estate_Sales.csv'
# Read the file from HDFS
with client.read(hdfs_file_path) as reader:
df = pd.read_csv(reader)
# Display the first few rows of the DataFrame
print(df.head())
Код: Выделить всё
requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='192.168.99.100', port=50070): Max retries exceeded with url: /webhdfs/v1/user/hadoop/real_estate_data/Real_Estate_Sales.csv?user.name=modhv&offset=0&op=OPEN (Caused by ConnectTimeoutError(, 'Connection to 192.168.99.100 timed out. (connect timeout=None)'))
1. Службы Hadoop: я проверил, что HDFS и YARN работают внутри контейнера Docker.
2. Доступ к портам: порт 50070 и 50075 правильно отображаются и сопоставляются с хост-компьютером через Docker.
3. Брандмауэр: Брандмауэр Windows временно отключен для проверки соединения.
/>4.Тестовое соединение: я пытался получить доступ к веб-интерфейсу NameNode из браузера по адресу http://192.168.99.100:50070, но время ожидания истекло.
5.Сетевой режим Docker: я также проверил сетевой режим контейнера и настроен на мост. Я попытался использовать IP-адрес виртуальной машины Docker (192.168.99.100) для доступа к контейнеру.
Подробнее здесь: https://stackoverflow.com/questions/793 ... nnection-t