摘要: 本篇文章主要介绍的是hadoop hdfs的基础api的使用。包括Windows端依赖配置,Maven依赖配置。最后就是进行实际的操作,包括:获取远程hadoop hdfs连接,并对其进行的一系列操作,包括;文件夹创建、文件上传、文件下载、文件(夹)删除、文件更名或移动、文件详细信息的获取并打印到控制台,以及文件类型的判断(文件夹或文件)并打印对应文件(夹)的详细信息。


目录

  • 使用hadoop API前先进行一下Windows的依赖配置
  • IDEA_Maven_Hadooop_API
    • pom.xml文件配置
    • 工具类com.lqs.util.HadoopUtil说明
    • 配置文件
    • 文件夹创建
    • 文件上传
    • 文件下载
    • 文件(夹)删除
    • 文件更名或移动和两者同时进行
    • 文件类型判断(文件夹或文件)
    • 文件详细信息

使用hadoop API前先进行一下Windows的依赖配置

Windows-hadoop-3.1.0
阿里云下载链接:Windows-hadoop-3.1.0
CSDN下载链接:Windows-hadoop-3.1.0
1、下载Windows-hadoop-3.1.0并解压到您的安装目录中

进行如下的环境变量配置:


最后点击一下第一张图片方块画着的那个exe文件,如果没有报错则配置成功。

IDEA_Maven_Hadooop_API

pom.xml文件配置

1、使用前先在idea中创建Maven工程(工程名称:HdfsClientDemo),首先在pom.xml中配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>HdfsClientDemo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!-- 配置hadoop API的相关插件 --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency></dependencies></project>

工具类com.lqs.util.HadoopUtil说明


注意:

后面代码里用到的
//关闭资源
HadoopUtil.close(fs);
这是我自己写的工具类,内容如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package com.lqs.util;import java.io.IOException;
import org.apache.hadoop.fs.FileSystem;public class HadoopUtil {private HadoopUtil() {}public static void close(FileSystem fileSystem) {try {if (fileSystem != null) {fileSystem.close();System.out.println("关闭hadoop hdfs 文件远程连接成功...");}} catch (IOException e) {System.out.println("关闭hadoop hdfs 文件远程连接失败...\n原因如下:" + e);}}
}

配置文件

2、然后再路径HdfsClientDemo\src\main\resources下创建配置文件:log4j.properties,并添加如下内容:

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

文件夹创建

3、在\src\main\java路径下创建创建文件夹的类文件HdfsClient.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 10:51** 这是测试连接*/public class HdfsClient {@Testpublic void testMkdirs() throws IOException, URISyntaxException, InterruptedException {//1、获取文件系统Configuration configuration = new Configuration();//        FileSystem fileSystem = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration);FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//执行创建目录操作fs.mkdirs(new Path("/test/test1/lqs.txt"));//关闭资源HadoopUtil.close(fs);}}

文件上传

4、在\src\main\java路径下创建创建文件夹的类文件HdfsClientUpload.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 16:24*/public class HdfsClientUpload {@Testpublic void testCopyFromLocalFile() throws URISyntaxException, IOException, InterruptedException {//1、获取文件系统Configuration configuration = new Configuration();configuration.set("dfs.replication", "2");FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//执行上传文件操作fs.copyFromLocalFile(new Path("F:\\test\\lqs.txt"), new Path("/test/test1"));//关闭资源HadoopUtil.close(fs);}}

文件下载

5、在\src\main\java路径下创建创建文件夹的类文件HdfsClientDownload.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 16:10*/public class HdfsClientDownload {@Testpublic void testCopyToLocalFile() throws URISyntaxException, IOException, InterruptedException {//1、获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//2、执行下载操作// boolean delSrc 指是否将原文件删除// Path src 指要下载的文件路径// Path dst 指将文件下载到的路径// boolean useRawLocalFileSystem 是否开启文件校验fs.copyToLocalFile(false, new Path("/test/test1/lqs.txt"), new Path("f:/lqs.txt"), true);//3、关闭资源HadoopUtil.close(fs);}}

文件(夹)删除

6、在\src\main\java路径下创建创建文件夹的类文件HdfsClientDelete.java,并输入以下内容:

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 18:36*/public class HdfsClientDelete {@Testpublic void testDelete() throws URISyntaxException, IOException, InterruptedException {//1、获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//执行删除操作fs.delete(new Path("/test"), true);//关闭资源HadoopUtil.close(fs);}}

文件更名或移动和两者同时进行

7、在\src\main\java路径下创建创建文件夹的类文件HdfsClientRename.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 17:32*/public class HdfsClientRename {@Testpublic void testRename() throws URISyntaxException, IOException, InterruptedException {//1、获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//2、修改文件名称fs.rename(new Path("/test/test1/lqs.txt"), new Path("/test/test1/lqstest.txt"));//移动文件到指定目录,注意:目的目录必须要存在,否则会移动失败boolean result = fs.rename(new Path("/test/test1/lqs.txt"), new Path("/lqs/test/test.txt"));if (result) {System.out.println("移动文件成功");} else {System.out.println("移动文件失败");}//移动文件并修改移动后的文件名。注意:目的目录必须要存在,否则会移动失败boolean result1 = fs.rename(new Path("/xiyo/test/test1/lqs.txt"), new Path("/lqs/test/test.txt"));if (result1) {System.out.println("移动文件并修改移动后的文件名成功");} else {System.out.println("移动文件并修改移动后的文件名失败");}//3、关闭资源HadoopUtil.close(fs);}}

文件类型判断(文件夹或文件)

8、在\src\main\java路径下创建创建文件夹的类文件HdfsClientListStatus.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 23:24*/public class HdfsClientListStatus {@Testpublic void testListStatus() throws URISyntaxException, IOException, InterruptedException {Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");FileStatus[] fileStatuses = fs.listStatus(new Path("/test/test1/lqs.txt"));for (FileStatus fileStatus : fileStatuses) {//如果是文件者输出名字if (fileStatus.isFile()) {System.out.println("-:" + fileStatus.getPath());} else {System.out.println("d:" + fileStatus.getPath());}System.out.println("++++++++++++++" + fileStatus.getPath() + "++++++++++++++");System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getGroup());System.out.println(fileStatus.getLen());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockSize());System.out.println(fileStatus.getPath().getName());//获取块信息long blockLocations = fileStatus.getBlockSize();System.out.println(Arrays.toString(new long[]{blockLocations}));}HadoopUtil.close(fs);}}

文件详细信息

9、在\src\main\java路径下创建创建文件夹的类文件HdfsClientListFiles.java,并输入以下内容

package com.lqs.hdfs;import com.lqs.util.HadoopUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;/*** @author qingSong liu* @version 1.0* @time 2021/12/7 19:07*/public class HdfsClientListFiles {@Testpublic void testListFiles() throws URISyntaxException, IOException, InterruptedException {//1、获取文件系统,获取的的是hadoop的配置信息文件:Configuration: core-default.xml, core-site.xml, hdfs-default.xml, hdfs-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xmlConfiguration configuration=new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://bdc112:8020"), configuration, "lqs");//2、获取文件详情.注意是获取的文件,而不是文件夹(目录)//final boolean recursive 是否递归查找RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);System.out.println(listFiles.hasNext());while (listFiles.hasNext()){LocatedFileStatus fileStatus=listFiles.next();System.out.println("++++++++++++++"+fileStatus.getPath()+"++++++++++++++");System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getGroup());System.out.println(fileStatus.getLen());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockSize());System.out.println(fileStatus.getPath().getName());//获取块信息BlockLocation[] blockLocations=fileStatus.getBlockLocations();System.out.println(Arrays.toString(blockLocations));}//3、关闭资源HadoopUtil.close(fs);}}

hadoop HDFS的文件夹创建、文件上传、文件下载、文件夹删除,文件更名、文件详细信息、文件类型判断(文件夹或者文件)相关推荐

  1. 【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)

    目录 1 镜像源查看及设置 2 镜像相关操作 2.1 获取镜像列表 2.2 镜像下载 2.3 查看本地的镜像 2.4 从镜像创建容器 2.5 将容器抽象为镜像--commit 2.6 将容器抽象为镜像 ...

  2. php ftp 创建文件夹失败,phpftp上传多个文件时失败

    遍历文件夹,打算批量上传到FTP上,li下有 dir和 files两个数组,一个是目录数组,一个文件数组 用ftp上传时失败,单个上传没有问题??? 怎么解决啊 foreach ($li['files ...

  3. 打印日志文件并将其上传存到HDFS中

    在本地打印日志 , 对日志文件进行分析 , 把需要上传的日志文件移动到待上传目录 , 将待上传的日志文件逐个上传到HDFS , 并移动到备份目录 , 定期清理过期备份日志 . 1.首先生产日志文件: ...

  4. HDFS以IO流的形式上传和下载文件案例

    Maven工程HdfsClient的创建,对应包和类的创建参考HDFS文件上传.下载和删除案例 1.文件上传 //把本地的banzhang.txt文件上传到HDFS的根目录@Testpublic vo ...

  5. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹

    摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...

  6. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存

    pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存 目录 输出结果 代码实现 输出结果 代码实现 # -*- codi ...

  7. php临时目录没有文件夹里,PHP上传 找不到临时文件夹的解决方法

    最近遇到这样的麻烦,找不到临时文件夹返回的错误代码为6 错误原因: 一.配置文件没有设置临时文件夹 二.临时文件夹没有或者上级文件夹没有相应的权限 处理方式: 找到PHP配置文件PHP.ini,找到以 ...

  8. 通过putty取linux文件,putty对Linux上传下载文件或文件夹

    putty是一个开源软件,目前为止最新版本为0.70.对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令. (1).pscp pscp在命令提示符中使用,只要putty ...

  9. 无法删除ftp服务器上的文件夹,批处理 FTP上传,后删除本地文件夹(无法删除) 问题...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 @echo off :: 设置FTP服务器地址(仅输入IP)set ftpIP=192.168.7.183 :: 设置FTP用户名set ftpUser= ...

  10. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

最新文章

  1. 记数据结构MOOC-二叉树
  2. 给Eclipse提速的7个技巧
  3. 知识图谱入门知识(二)事件抽取(EE)详细介绍
  4. 程序员真的是吃青春饭的吗?(献给即将进入职场的程序员们)
  5. java代码加载_java类中代码加载顺序
  6. 如何学习前端知识?优秀的前端开发工程师应该具备什么条件?
  7. 滴滴“负重”387天
  8. list 分组求和_数据分析-python-分组聚合-2
  9. Java中Double保留六位小数_Java中Double保留后小数位的几种方法
  10. JVM学习04-垃圾回收概念与算法
  11. 数学教授曲安京2016年毕业致辞:永远珍重那些美好的内蕴品质
  12. win7映射网络驱动器消失了_win7系统映射网络驱动器出现问题的解决方法
  13. cad打印样式ctb丢失,CAD打印样式表如何设置?CTB和STB有何区别?
  14. 稻盛和夫:中国企业如何在萧条中实现大飞跃
  15. 初学JAVA项目(三、槑图秀秀)
  16. 希尔排序(实现+总结)
  17. 华为资深工程师:码农很多,但程序员并不多......
  18. stm32F103C8T6控制DHT11
  19. linux上nagios安装完整版
  20. 看雪题库REVERSE的马到成功

热门文章

  1. 一个完整的项目复盘到底要怎么做?
  2. 低秩表达的简单通俗化理解
  3. Java:项目license证书控制
  4. FFmpeg多媒体文件格式探测
  5. c语言 内存映射文件,内存映射文件
  6. oracle 备份命令
  7. Java项目:宠物医院管理系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)
  8. 托盘图标在explorer.exe进程退出重启后图标消失(应用程序进程依然存在)的问题
  9. C语言字符数组的输入输出处理
  10. vs下载“无法下载安装文件,请连接Internet连接,然后重试”