当前位置:   article > 正文

Hadoop --- HDFS配置与操作_更改hadoop文件名

更改hadoop文件名

hadoop的配置文件存放目录在 {HADOOP_HOME}/etc/hadoop 下, 与 hdfs相关的配置: core-site.xml、hdfs-site.xml 

core-site.xml: core-site 配置详解

新增属性信息: fs.defaultFS

fs.defaultFS表示指定集群的文件系统类型是分布式文件系统(HDFS),datanode心跳发送到nameNode的地址

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://#{nameNode}:#{PORT}</value>
  5. </property>
  6. </configuration>

hdfs-site.xml:hdfs-site 配置详解

  • dfs.replication 副本数,表示副本数是3
  • dfs.name.dir和dfs.data.dir, namenode 和 datanode 的数据存放路径
  • dfs.datanode.max.locked.memory 开启缓存,配置值根据自己机器情况配置 
  • dfs.permissions 是否开启权限校验 
  1. <property>
  2. <name>dfs.replication</name>
  3. <value>3</value>
  4. </property>
  5. <property>
  6. <name>dfs.namenode.name.dir</name>
  7. <value>file:/opt/software/hadoop/hdfs/name</value>
  8. </property>
  9. <property>
  10. <name>dfs.datanode.data.dir</name>
  11. <value>file:/opt/software/hadoop/hdfs/data</value>
  12. </property>
  13. <property>
  14. <name>dfs.datanode.max.locked.memory</name>
  15. <value>65536</value>
  16. </property>
  17. <property>
  18. <name>dfs.permissions</name>
  19. <value>false</value>
  20. </property>

HDFS --  API操作: 

1、引入包hadoop-client 

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.hadoop</groupId>
  4. <artifactId>hadoop-client</artifactId>
  5. <version>3.1.3</version>
  6. </dependency>
  7. </dependencies>

2、HSFS 客户端操作

  1.  获取客户端对象
  2. 执行相关操作命令: 文件上传、下载、修改文件名称/路径、文件删除........
  3. 关闭资源
  1. package hadoop.hdfs;
  2. import org.apache.hadoop.fs.Path;
  3. import org.junit.Test;
  4. import org.apache.hadoop.fs.FileSystem;
  5. import org.apache.hadoop.conf.Configuration;
  6. import java.io.IOException;
  7. import java.net.URI;
  8. import java.net.URISyntaxException;
  9. public class HdfsClient {
  10. @Test
  11. public void testMkdirs() throws URISyntaxException, IOException, InterruptedException {
  12. // 连接集群nn的地址
  13. URI uri = new URI("hdfs://TestNode1:9000");
  14. //创建一个配置文件
  15. Configuration configuration = new Configuration();
  16. //用户
  17. String user = "zsm";
  18. // 获取到客户端对象
  19. FileSystem fs = FileSystem.get(uri, configuration, user);
  20. fs.mkdirs(new Path("/zsm/hdfs/test/"));
  21. fs.close();
  22. }
  23. }

2.1 文件上传: copyFromLocalFile

  1. @Test
  2. public void testCopyFromLocalFile() throws URISyntaxException, IOException, InterruptedException {
  3. // 1.获取文件系统
  4. Configuration configuration = new Configuration();
  5. configuration.set("dfs.replication","2");
  6. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"),configuration,"zsm");
  7. // 2.上传文件(在项目文件夹下创建hdfs_test.txt, 也可以指定一个绝对路径下的文件)
  8. fs.copyFromLocalFile(new Path("hdfs_test.txt"), new Path("/zsm/hdfs/test/"));
  9. // 3.关闭资源
  10. fs.close();
  11. }

2.2 文件下载: 

copyToLocalFile(Boolean delSrc, Path src, Path dst, Boolean useRawLocalFileSystem)

  1. boolean delSrc 指是否将原文件删除 
  2. Path src 指要下载的文件路径
  3. Path dst 指将文件下载到的路径
  4. boolean useRawLocalFileSystem 是否开启文件校验
  1. @Test
  2. public void testCopyToLocalFile() throws IOException, URISyntaxException, InterruptedException {
  3. // 1.获取文件系统
  4. Configuration configuration = new Configuration();
  5. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"),configuration,"zsm");
  6. // 2.执行下载操作
  7. // boolean delSrc 指是否将原文件删除
  8. // Path src 指要下载的文件路径
  9. // Path dst 指将文件下载到的路径
  10. // boolean useRawLocalFileSystem 是否开启文件校验
  11. fs.copyToLocalFile(false, new Path("/zsm/hdfs/test/hdfs_test.txt"), new Path("zsm_test2.txt"), true);
  12. // 3.关闭资源
  13. fs.close();
  14. }

2.3 修改文件名和路径: rename 

  1. @Test
  2. public void testRename() throws IOException, URISyntaxException, InterruptedException {
  3. // 1.获取文件系统
  4. Configuration configuration = new Configuration();
  5. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"),configuration,"zsm");
  6. // 2.修改文件名称
  7. fs.rename(new Path("/zsm/hdfs/test/hdsf_test.txt"),new Path("/zsm/hdfs/test2/hdsf_test2.txt"));
  8. // 3.关闭资源
  9. fs.close();
  10. }

2.4 删除文件和目录: delete 

  1. @Test
  2. public void testDelete() throws IOException, URISyntaxException, InterruptedException {
  3. // 1.获取文件系统
  4. Configuration configuration = new Configuration();
  5. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"),configuration,"zsm");
  6. // 2.执行删除
  7. fs.delete(new Path("/zsm/hdfs"),true);
  8. // 3.关闭资源
  9. fs.close();
  10. }

2.5 HDFS文件详情查看 

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

  1. @Test
  2. public void testListFiles() throws IOException, InterruptedException,
  3. URISyntaxException {
  4. // 1 获取文件系统
  5. Configuration configuration = new Configuration();
  6. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"),configuration,"zsm");
  7. // 2 获取文件详情
  8. RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/zsm"), true);
  9. while (listFiles.hasNext()) {
  10. LocatedFileStatus fileStatus = listFiles.next();
  11. System.out.println("========" + fileStatus.getPath() + "=========");
  12. System.out.println(fileStatus.getPermission());
  13. System.out.println(fileStatus.getOwner());
  14. System.out.println(fileStatus.getGroup());
  15. System.out.println(fileStatus.getLen());
  16. System.out.println(fileStatus.getModificationTime());
  17. System.out.println(fileStatus.getReplication());
  18. System.out.println(fileStatus.getBlockSize());
  19. System.out.println(fileStatus.getPath().getName());
  20. // 获取块信息
  21. BlockLocation[] blockLocations = fileStatus.getBlockLocations();
  22. System.out.println(Arrays.toString(blockLocations));
  23. }
  24. // 3 关闭资源
  25. fs.close();
  26. }

2.6 HDFS文件和文件夹判断 

  1. @Test
  2. public void testListStatus() throws IOException, InterruptedException, URISyntaxException{
  3. // 1 获取文件配置信息
  4. Configuration configuration = new Configuration();
  5. FileSystem fs = FileSystem.get(new URI("hdfs://node01:9000"), configuration, "zsm");
  6. // 2 判断是文件还是文件夹
  7. FileStatus[] listStatus = fs.listStatus(new Path("/zsm"));
  8. for (FileStatus fileStatus : listStatus) {
  9. // 如果是文件
  10. if (fileStatus.isFile()) {
  11. System.out.println("f:"+fileStatus.getPath().getName());
  12. }else {
  13. System.out.println("d:"+fileStatus.getPath().getName());
  14. }
  15. }
  16. // 3 关闭资源
  17. fs.close();
  18. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/633919
推荐阅读
相关标签
  

闽ICP备14008679号