栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop学习问题8:Java通过Trash对象不能删除文件到回收站

Hadoop学习问题8:Java通过Trash对象不能删除文件到回收站

问题描述

Java通过Trash对象不能删除文件到回收站,运行没有出错,但是删除不成功

原因分析
uri = URI.create("hdfs://192.168.153.131:8020");
conf = new Configuration();
user = "cxj";
fs = FileSystem.
get(uri, conf, user);
Trash ts = new Trash(fs, conf);
ts.moveToTrash(new Path("/a.txt"));

经过测试,在Shell中是可以正常操作的,并且使用fs对象进行Hadoop中的文件操作也是没有问题的。最后检测出上述不成功的原因就是:节点上的hdfs-site.xml配置的回收站并没有配置到Trash对象中,也就是执行最后的moveToTrash的命令的时候,回收站的状态就是默认的禁用的状态,而不是自定义的hfds-site.xml文件中配置的开启状态,Configuration对象不会自动加载集群中的配置,Trash构造函数也不会将fs对应的集群的配置加载到它的对象中,fs在上述代码的作用是将/a.txt映射到HDFS上,也就是最后组合成hdfs://hadoop102:8020/a.txt

  1. Configuration可以自动添加本地的resources文件下的xml配置文件,但是不会自动加载集群上的配置文件
  2. 上述也可以不添加fs,而直接传入conf:Trash ts = new Trash(conf);并添加:conf.set("fs.defaultFS", "hdfs://hadoop102:8020")
问题解决

在客户端上的resources目录下创建core-site.xml文件,并添加内容




    
        fs.trash.interval
        1
    

    
        fs.trash.checkpoint.interval
        1
    

或者直接通过Configuration对象直接配置

conf.set("fs.trash.interval", 1)
conf.set("fs.trash.checkpoint.interval", 1)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号