怎么设置某个用户生成hdfs文件的权限_HDFS常用API操作总结

a28c7e8e784d294c9e84789cb2454e67.png

HDFS 文件上传

编写源代码

@TestpublicvoidtestCopyFromLocalFile()throwsIOException, InterruptedException, URISyntaxException {    // 1 获取文件系统    Configuration configuration = new Configuration(); configuration.set("dfs.replication", "2");    FileSystemfs=FileSystem.get(new URI("hdfs://hadoop102:9000"), configuration, "hd");    // 2 上传文件    fs.copyFromLocalFile(new Path("e:/ceshi.txt"), new Path("/ceshi.txt"));    // 3 关闭资源    fs.close();    System.out.println("over");}    

将hdfs-site.xml 拷贝到项目的根目录下

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?>dfs.replication1

参数优先级

参数优先级排序:

(1)客户端代码中设置的值。

(2)ClassPath 下的用户自定义配置文件 。

(3)然后是服务器的默认配置。

HDFS 文件下载

@Testpublic void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException{      // 1 获取文件系统      Configuration configuration = new Configuration(); FileSystemfs=FileSystem.get(new      URI("hdfs://hadoop102:9000"), configuration, "hd");        // 2 执行下载操作       // boolean delSrc 指是否将原文件删除       // Path src 指要下载的文件路径       // Path dst 指将文件下载到的路径       // boolean useRawLocalFileSystem       fs.copyToLocalFile(false, new Path("/ceshi.txt"), new Path("e:/ceshi.txt"), true);       // 3 关闭资源       fs.close();  }

是否开启 crc 文件校验,true为本地文件方式,表示不开启 crc 校验,如果是 false,会下载一个.crc 文件,Crc 在数据完整性的时候会涉及。

HDFS 文件夹删除

@Testpublic void testDelete() throws IOException, InterruptedException, URISyntaxException{    // 1 获取文件系统    Configuration configuration = new Configuration(); FileSystemfs=FileSystem.get(new    URI("hdfs://hadoop102:9000"), configuration, "hd");    // 2 执行删除    fs.delete(new Path("/ceshi/"), true);    // 3 关闭资源    fs.close();}

HDFS 文件名更改

@Testpublic void testRename() throws IOException, InterruptedException, URISyntaxException{    // 1 获取文件系统    Configuration configuration = new Configuration(); FileSystemfs=FileSystem.get(new    URI("hdfs://hadoop102:9000"), configuration, "hd");    // 2 修改文件名称    fs.rename(new  Path("/ceshi.txt"),new Path("/ceshi.txt"));    // 3 关闭资源    fs.close();}

HDFS 文件详情查看

查看文件名称、权限、长度、块信息

@Testpublic void testListStatus() throws IOException, InterruptedException, URISyntaxException{        // 1 获取文件系统      Configuration configuration = new Configuration(); FileSystemfs=FileSystem.get(new      URI("hdfs://hadoop102:9000"), configuration, "hd");      // 2 获取文件详情     RemoteIterator listFiles = fs.listFiles(new Path("/"), true);     while(listFiles.hasNext()){              LocatedFileStatus status = listFiles.next();              // 输出详情              // 文件名称              System.out.println(status.getPath().getName());              // 长度              System.out.println(status.getLen());              // 权限              System.out.println(status.getPermission());              // 分组              System.out.println(status.getGroup());              // 获取存储的块信息             BlockLocation[] blockLocations  = status.getBlockLocations();            for (BlockLocation blockLocation : blockLocations) {                  // 获取块存储的主机节点                  String[] hosts = blockLocation.getHosts();                  for (String host : hosts) { System.out.println(host);}            }           System.out.println("-----------班长的分割线");   }// 3 关闭资源fs.close();}

HDFS 文件和文件夹判断

@Testpublic void testListStatus() throws IOException, InterruptedException, URISyntaxException{          // 1 获取文件配置信息        Configuration configuration = new Configuration(); FileSystemfs=FileSystem.get(new        URI("hdfs://hadoop102:9000"), configuration, "hd");        // 2 判断是文件还是文件夹        FileStatus[] listStatus = fs.listStatus(new Path("/")); for (FileStatus fileStatus : listStatus) {                // 如果是文件                if (fileStatus.isFile()) {                      System.out.println("f:"+fileStatus.getPath().getName());                }else {                      System.out.println("d:"+fileStatus.getPath().getName());                }        }        // 3 关闭资源        fs.close();}

通过源码查看 LocatedFileStatus 是 FileStatus 的子类,多了块信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值