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

Windows本地YARN应用无法传输至Hortonworks沙箱求助

我之前帮朋友排查过类似的Spring YARN + HDP沙箱的文件传输问题,结合你的场景,大概率是VirtualBox的网络配置、HDFS访问权限或者Spring YARN的配置细节没踩对,咱们一步步来梳理:

一、先确认VirtualBox沙箱的网络模式是否正确

虽然你已经telnet通了8020、8032端口,但Windows和沙箱之间的文件传输(不管是手动SCP还是Spring YARN自动上传HDFS)都依赖稳定的网络连通性,这里要重点检查:

  • 如果用NAT模式:必须确保VirtualBox的端口转发规则配置完整,至少要包含HDFS NameNode(8020)、YARN ResourceManager(8032)、SSH(22)这几个端口的转发,且子系统IP要填沙箱的内部IP(沙箱里执行ip addr就能看到,一般是10.0.2.15这类)。
  • 如果用桥接模式:要确认沙箱和Windows在同一网段,互相能ping通,且沙箱的防火墙没有拦截相关端口(HDP沙箱默认防火墙是关闭的,但可以用systemctl status firewalld确认)。
  • 额外验证:打开Windows浏览器访问http://沙箱IP:50070(HDFS UI),如果能正常打开,说明HDFS的网络通路是通的;如果打不开,先解决这个基础问题。
二、Spring YARN的application.yml配置关键踩坑点

你说试了三种配置都失败,大概率是配置里的HDFS地址、权限或文件路径没写对,这里给你一个适配HDP2.6.4沙箱的标准配置模板,你对比检查:

spring:
  yarn:
    application:
      name: simple-yarn-app
    client:
      files:
        - local: "C:/Users/你的用户名/target/simple-yarn-app-1.0.0.jar"  # Windows本地绝对路径,带空格要加引号,用正斜杠代替反斜杠
          remote: /user/hadoop/simple-yarn-app.jar  # 沙箱HDFS目标路径,选hadoop用户目录避免权限问题
    config:
      yarn.resourcemanager.address: 192.168.56.101:8032  # 必须填沙箱实际IP,不能写localhost
      yarn.resourcemanager.scheduler.address: 192.168.56.101:8030
      fs.defaultFS: hdfs://192.168.56.101:8020  # HDFS默认文件系统地址,同样填沙箱IP

这里要注意几个容易踩的坑:

  • 本地路径格式:Windows下的路径要用正斜杠,有空格必须加引号,Spring YARN对Windows反斜杠的解析容易出问题。
  • HDFS权限:HDP沙箱默认开启HDFS权限检查,你手动SCP是传到Linux本地文件系统,但Spring YARN是上传到HDFS。可以先在沙箱里执行hdfs dfs -mkdir -p /user/hadoop,再hdfs dfs -chmod 777 /user/hadoop(仅测试用,生产环境别这么做)来临时开放权限验证。
  • IP地址问题:绝对不能写localhost,因为Windows的localhost指向自己,不是沙箱。必须填沙箱的实际IP(可以在沙箱里用ip addr查看)。
三、Windows命令行的Hadoop环境变量配置

Spring YARN依赖Hadoop客户端的配置,即使你没装完整Hadoop,也要确保以下环境变量正确:

  • 配置HADOOP_HOME:指向你下载的Hadoop 2.7.x(HDP2.6.4对应Hadoop2.7.3)解压目录,Windows下要下载带winutils的版本,不然会报找不到本地库的错误。
  • 把%HADOOP_HOME%\bin加到系统PATH环境变量里。
  • 配置HADOOP_CONF_DIR:指向包含core-site.xml、yarn-site.xml的目录,你可以从沙箱的/etc/hadoop/conf目录把这两个文件SCP到Windows本地,然后设置该环境变量指向这个目录。
四、先手动测试HDFS上传通路

如果直接跑Spring YARN应用还是失败,可以先手动用Hadoop命令行测试从Windows上传文件到沙箱HDFS,确认通路没问题:

hdfs dfs -put "C:/Users/你的用户名/target/simple-yarn-app.jar" hdfs://192.168.56.101:8020/user/hadoop/test.jar

如果这个命令成功,说明HDFS上传通路正常,问题出在Spring YARN的配置上;如果失败,根据报错信息(比如权限拒绝、连接超时)针对性排查。

五、NAT模式下的端口转发补充

如果你的沙箱用的是NAT模式,除了前面说的端口转发,还要注意配置里的IP和端口要对应:

  • 比如VirtualBox里把沙箱的8020端口转发到Windows的8020端口,那配置里的fs.defaultFS就要写hdfs://localhost:8020,yarn.resourcemanager.address写localhost:8032,这样Windows才能通过转发端口访问沙箱的服务。

内容的提问来源于stack exchange,提问作者inor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:11:28