使用JAVA上传文件至HDFS失败

使用JAVA上传文件至HDFS失败

添加依赖后报错信息如下:

2021-06-25 11:06:01,071 [main] [org.apache.hadoop.util.Shell] [WARN] - Did not find winutils.exe: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems

2021-06-25 11:06:01,138 [main] [org.apache.hadoop.util.NativeCodeLoader] [WARN] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

尝试过的解决方式:

  1. 网上下载winutils文件到本地hadoop\bin目录下,并在配置了相关的环境变量,未报错,但HDFS目录下找不到上传的文件

  2. 在代码行里面加入了config.set("hadoop.home.dir","D:\\hadoop-3.2.0");还是未能解决此问题

  3. 相关代码:

  4. Configuration config = new Configuration();
    config.set("fs.DefaultFS","hdfs://shendongchao:9000");
    config.set("hadoop.home.dir","D:\\hadoop-3.2.0");
    FileSystem fileSystem = FileSystem.get(config);
    put(fileSystem);
  5. private static void put(FileSystem fileSystem) throws IOException {
    FSDataOutputStream fos = fileSystem.create(new Path("/abc.txt"));
    FileInputStream fis = new FileInputStream("D:\\abc.txt");
    IOUtils.copyBytes(fis,fos,1024,true);
    }

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
徐老师 2021-06-25 11:44:12

代码的执行和第1和第2点没关系,那两个警告不影响代码的执行,你加一下慕课内部群,到时候我给你远程看一下,加群方式在第1周的1-1小节中有介绍

  • 提问者 是东潮啊 #1

    老师,上面的问题解决了,我重新装了3.0.5版本的maven,然后重新配置了一遍,HDFS上面有上传文件,但是文件为空(按照电子书中阿里云服务器配置),但是又出现了一下报错信息:

    Exception in thread "main" org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /abc.txt could only be written to 0 of the 1 minReplication nodes. There are 1 datanode(s) running and 1 node(s) are excluded in this operation.

    2021-06-25 19:15:39
  • 徐老师 回复 提问者 是东潮啊 #2
    应该是集群重复格式化导致出问题了,主节点和从节点的版本信息不一致,需要删除hadoop_repo目录,然后重新格式化集群
    2021-06-25 19:17:39
  • 徐老师 回复 提问者 是东潮啊 #3
    先删除/data/hadoop_repo目录,再格式化集群
    2021-06-25 19:18:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师