You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内Hadoop集群WebHDFS连接超时问题排查求助

Docker容器内Hadoop集群WebHDFS连接超时问题排查求助

大家好,我现在遇到一个棘手的问题:从Python脚本连接Docker容器里的Hadoop HDFS实例时总是出现ConnectTimeout错误,脚本本来应该通过WebHDFS读取HDFS上的文件,但在尝试和NameNode建立连接的时候就超时了。

下面是我收到的错误信息:

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(<urllib3.connection.HTTPConnection object at 0x000001E77F4D7B30>, 'Connection to 192.168.99.100 timed out. (connect timeout=None)'))

我的环境信息

  • Python版本:3.12
  • 使用的库:requests、urllib3、hdfs、pandas
  • Docker镜像:suhothayan/hadoop-spark-pig-hive:2.9.2
  • Docker版本:4.37.1
  • 操作系统:Windows 11

已执行的操作

  • 在Docker容器内运行Hadoop集群,计划通过WebHDFS访问HDFS
  • 容器已暴露以下端口:
    • 50070(NameNode)
    • 50075(DataNode)
  • 确认容器内的Hadoop服务(NameNode和DataNode)均正常运行
  • 尝试在Python脚本中使用容器IP(172.17.0.2)甚至localhost来连接HDFS
  • 用浏览器访问http://localhost:50070和http://172.17.0.2:50070都能正常打开NameNode的Web UI,但运行Python脚本就一直报连接超时

我的Python代码如下:

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(<urllib3.connection.HTTPConnection object at 0x000001E77F4D7B30>, 'Connection to 192.168.99.100 timed out. (connect timeout=None)'))

已做的排查工作

  • Hadoop服务验证:确认容器内HDFS和YARN服务都正常运行
  • 端口映射检查:确认50070和50075端口已经正确暴露并映射到宿主机
  • 防火墙测试:临时关闭了Windows防火墙来测试连接,问题依旧
  • 浏览器连接测试:尝试用浏览器访问http://192.168.99.100:50070,同样出现超时
  • Docker网络模式:检查容器网络模式是bridge,也试过用Docker虚拟机的IP(192.168.99.100)来访问容器

备注:内容来源于stack exchange,提问作者Modhvadiya Balu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:04:33