1. Java操作

2. HDFS文件上传

  1. //获取配置对象
  2. Configuration configuration = new Configuration();
  3. //设置配置 将默认分块设置为2
  4. configuration.set("dfs.replication","2");
  5. //新建HDFS对象
  6. FileSystem fileSystem = FileSystem.get(URI.create("hdfs://hadoop102:8020"), configuration, "atguigu");
  7. //操作集群
  8. fileSystem.copyFromLocalFile(new Path("D:\\图\\QQ图片20190517141148.jpg"),new Path("/"));
  9. //关闭资源
  10. fileSystem.close();
  • get(URI.crate(“hdfs://hadoop地址”),new Configuation(), 集群用户名); 获取HDFS操作对象

    • copyFromLocalFile(new Path(“本地路径”),new Path(集群路径)); 上传文件到HDFS

3. HDFS下载到本地

  1. fileSystem.copyToLocalFile(
  2. new Path("/QQ图片20190517141148.jpg"),
  3. new Path("d:/images")
  4. );

4. HDFS追加

  1. FSDataOutputStream append = fileSystem.append(
  2. new Path("1.txt")
  3. );
  4. //写入流
  5. append.write("testApi".getBytes(StandardCharsets.UTF_8));
  6. //关闭流
  7. IOUtils.closeStream(append);

5. ls

  1. //ls操作 返回数组
  2. FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
  3. for (FileStatus fileStatus : fileStatuses) {
  4. //获取文件对象路径
  5. System.out.println(fileStatus.getPath());
  6. //获取文件所属者
  7. System.out.println(fileStatus.getOwner());

6. listFiles

  1. //获取当前所有文件的迭代器 无论是文件夹还是文件 true返回一个迭代器
  2. RemoteIterator<LocatedFileStatus> locatedFileStatusRemoteIterator = fileSystem.listFiles(
  3. new Path("/"),
  4. true);
  5. while (locatedFileStatusRemoteIterator.hasNext()) {
  6. LocatedFileStatus fileStatus = locatedFileStatusRemoteIterator.next();
  7. System.out.println(fileStatus.getPath());
  8. //获取当前文件的块 返回数组
  9. BlockLocation[] blockLocations = fileStatus.getBlockLocations();
  10. for (int i = 0; i < blockLocations.length; i++) {
  11. System.out.println("第" + i + "块");
  12. //获取当前文件 每个块存储的集群情况
  13. String[] hosts = blockLocations[i].getHosts();
  14. for (String host : hosts) {
  15. System.out.print(host + " ");
  16. }
  17. System.out.println();
  18. }
  19. }

7. 移动或重命名

  1. //重命名或者移动文件
  2. fileSystem.rename(new Path("/QQ图片20190517141148.jpg"),new Path("/test/233.jpg"));