Code: Select all
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-Version: 3.12
Bibliotheken: Anfragen, urllib3, hdfs, pandas
Docker-Image: suhothayan/hadoop-spark-pig-hive :2.9.2
Docker-Version: 4.37.1
Betriebssystem: Windows 11
Schritte Aufgenommen:
Ich betreibe einen Hadoop-Cluster in einem Docker-Container und versuche, über WebHDFS auf HDFS zuzugreifen.
Der Container wird mit den folgenden offengelegten Ports ausgeführt:
50070 für NameNode
50075 für DataNode
Ich habe bestätigt, dass die Hadoop-Dienste (NameNode und DataNode) im Container aktiv sind und ausgeführt werden.
Ich habe die Docker-IP verwendet 172.17.0.2 und sogar localhost im Python-Skript, um eine Verbindung zu HDFS herzustellen.
Beim Versuch, das Python-Skript auszuführen, schlägt es regelmäßig mit dem ConnectTimeoutError fehl. Bei Verwendung von https://localhost/50070 und https://172.17. 0.2/50070 im Browser ist in Ordnung.Code:
Code: Select all
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())
Code: Select all
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-Dienste: Ich habe überprüft, dass sowohl HDFS als auch YARN im Docker-Container ausgeführt werden.
2.Ports-Offenlegung: Port 50070 und 50075 werden korrekt bereitgestellt und über Docker dem Host-Computer zugeordnet.
3.Firewall: Die Windows-Firewall wurde vorübergehend deaktiviert, um die Verbindung zu testen.
4.Test Verbindung: Ich habe versucht, über meinen Browser unter http://192.168.99.100:50070 auf die NameNode-Web-Benutzeroberfläche zuzugreifen, es kommt jedoch zu einer Zeitüberschreitung.
5. Docker-Netzwerkmodus: Ich habe auch den Netzwerkmodus des Containers überprüft. und es ist auf Überbrückung eingestellt. Ich habe versucht, die IP der Docker-VM (192.168.99.100) zu verwenden, um auf den Container zuzugreifen.