从Windows Jupyter Notebook连接Linux HDFS报Connection refused错误如何解决
HDFS连接拒绝问题解决步骤
1. 修正core-site.xml监听配置
你当前core-site.xml中的fs.default.name绑定为localhost,这会导致NameNode仅监听虚拟机本地回环网卡(127.0.0.1)的请求,宿主机Windows发往虚拟机IP192.168.208.129的请求会被直接拒绝。
将配置修改为以下内容:
<property> <name>fs.default.name</name> <value>hdfs://0.0.0.0:50000</value> <!-- 也可直接填写虚拟机固定IP:hdfs://192.168.208.129:50000 --> </property>
修改完成后执行命令重启HDFS服务生效:
stop-dfs.sh start-dfs.sh
2. 放行虚拟机防火墙端口
Ubuntu默认ufw防火墙可能拦截HDFS相关端口的外部请求,可先临时关闭防火墙验证问题来源:
sudo ufw disable
如果关闭后可正常连接,可按需永久开放所需端口:
sudo ufw allow 50000/tcp sudo ufw allow 50070/tcp sudo ufw allow 50010/tcp sudo ufw reload
Windows端可执行telnet 192.168.208.129 50000验证端口连通性。
3. 补充hdfs-site.xml访问配置
如果修改以上配置后仍连接失败,在hdfs-site.xml中添加以下配置:
<property> <name>dfs.client.use.datanode.hostname</name> <value>false</value> </property> <property> <name>dfs.datanode.use.datanode.hostname</name> <value>false</value> </property> <!-- 测试环境可关闭权限校验简化配置,生产环境谨慎使用 --> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property>
修改后重启HDFS服务即可。
4. Spark连接优化
Spark访问时可在初始化会话时显式指定NameNode地址,避免配置不一致问题:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("HDFSReadTest") \ .config("fs.defaultFS", "hdfs://192.168.208.129:50000") \ .getOrCreate() df_hdfs = spark.read.csv("/input_data/realestate.csv")
内容的提问来源于stack exchange,提问作者rvssankar
相关产品推荐
相关产品推荐

