Aufgrund einer Verbindungszeitüberschreitung beim Versuch, eine Datei aus HDFS zu lesen, kann keine Verbindung zu HadoopPython

Python-Programme
Guest
 Aufgrund einer Verbindungszeitüberschreitung beim Versuch, eine Datei aus HDFS zu lesen, kann keine Verbindung zu Hadoop

Post by Guest »

Beim Versuch, von meinem Python-Skript aus eine Verbindung zu einer Hadoop HDFS-Instanz herzustellen, die in einem Docker-Container ausgeführt wird, tritt ein ConnectTimeout-Fehler auf. Das Skript soll mithilfe von WebHDFS eine Datei aus HDFS lesen, beim Versuch, die Verbindung zum NameNode herzustellen, tritt jedoch eine Zeitüberschreitung auf. Hier ist die Fehlermeldung, die ich sehe:

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)'))
Umgebung:
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())

Fehlermeldung:

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)'))
Fehlerbehebung abgeschlossen:
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post