准备工作:IDEA > HDFS客户端准备

目录

文件上传

文件下载

文件夹删除

修改文件名称

查看文件详情

文件和文件夹的判断

完整代码


文件上传

注意conf.set("dfs.replication","2");的位置,位置不一样,设置的副本数不一样

HDFS参数优先级说明(由高到低):代码中 > resources中的hdfs-site.xml > 集群中的设置cat /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml  > 默认设置

在hdfs-site.xml中添加:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
//文件上传
@Test
public void testCopyFromLocalFile() throws IOException, URISyntaxException, InterruptedException {//1. 获取fs对象Configuration conf = new Configuration();conf.set("dfs.replication","2");FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");
//conf.set("dfs.replication","2");//2.执行上传APIfs.copyFromLocalFile(new Path("e:/copyFromLocalFile.txt"),new Path("/copyFromLocalFile_code.txt"));//3.关闭资源fs.close();
}

文件下载

查看copyToLocalFile源码

delSrc是否删除源数据

useRawLocalFileSystem(使用本地文件系统)默认值是False,在文件下载的时候会有crc校验

设置为true时,就没有crc

crc是一种安全校验,校验数据的可靠性,数据是否被改变了

@Test
//2. 文件下载
public void testCopyToLocalFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行下载操作
//    fs.copyToLocalFile(new Path("/user/zzz/input/wc.input"),new Path("e:/input.txt"));fs.copyToLocalFile(false,new Path("/user/zzz/input/wc.input"),new Path("e:/input1.txt"),true);//3.关闭资源fs.close();}

文件夹删除

fs.delete(new Path("/0529"),true);

两个参数最好同时在

也可以只有一个Path,但是不建议这么使用

@Test
//3. 文件删除
public void testDelete() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行删除操作//@Deprecated//不建议这么使用,但是可以使用
//    fs.delete(new Path("/0529"));fs.delete(new Path("/0529"),true);//3. 关闭资源fs.close();
}

修改文件名称

// 4. 文件更名
@Test
public void testRename() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行更名操作fs.rename(new Path("/panjinlian.txt"),new Path("/pjl.txt"));//3. 关闭资源fs.close();
}

查看文件详情

//5. 文件详情查看
@Test
public void testListFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 查看文件详情RemoteIterator<LocatedFileStatus> listFile = fs.listFiles(new Path("/"), true);while(listFile.hasNext()){LocatedFileStatus fileStatus = listFile.next();//查看文件名称、权限、长度、块信息System.out.println(fileStatus.getPath().getName());//文件名称System.out.println(fileStatus.getPermission());//文件权限System.out.println(fileStatus.getLen());//文件长度BlockLocation[] blockLocations = fileStatus.getBlockLocations();for(BlockLocation blockLocation: blockLocations){String[] hosts = blockLocation.getHosts();//副本具体存在于哪个主机上for(String host:hosts){System.out.println(host);}}System.out.println("---------------分割线---------------------");}//3. 关闭资源fs.close();
}

文件和文件夹的判断

//文件和文件夹判断
@Test
public void  testLineStatus() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"), conf, "zzz");//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();
}

完整代码

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.Configuration;
import org.junit.Test;public class HDFSClient {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {Configuration conf = new Configuration();//conf.set("fs.defaultFS","hdfs://hadoop131:9000");// 1 获取hdfs客户端对象FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");// 2 在hdfs上创建路径fs.mkdirs(new Path("/test/zzz"));// 3 关闭fs.close();System.out.println("over");}//文件上传@Testpublic void testCopyFromLocalFile() throws IOException, URISyntaxException, InterruptedException {//1. 获取fs对象Configuration conf = new Configuration();conf.set("dfs.replication","2");FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2.执行上传APIfs.copyFromLocalFile(new Path("e:/copyFromLocalFile.txt"),new Path("/copyFromLocalFile_code.txt"));//3.关闭资源fs.close();}@Test//2. 文件下载public void testCopyToLocalFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行下载操作//    fs.copyToLocalFile(new Path("/user/zzz/input/wc.input"),new Path("e:/input.txt"));fs.copyToLocalFile(false,new Path("/user/zzz/input/wc.input"),new Path("e:/input1.txt"),true);//3.关闭资源fs.close();}@Test//3. 文件删除public void testDelete() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行删除操作//@Deprecated//不建议这么使用,但是可以使用//    fs.delete(new Path("/0529"));fs.delete(new Path("/0529"),true);//3. 关闭资源fs.close();}// 4. 文件更名@Testpublic void testRename() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行更名操作fs.rename(new Path("/panjinlian.txt"),new Path("/pjl.txt"));//3. 关闭资源fs.close();}//5. 文件详情查看@Testpublic void testListFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 查看文件详情RemoteIterator<LocatedFileStatus> listFile = fs.listFiles(new Path("/"), true);while(listFile.hasNext()){LocatedFileStatus fileStatus = listFile.next();//查看文件名称、权限、长度、块信息System.out.println(fileStatus.getPath().getName());//文件名称System.out.println(fileStatus.getPermission());//文件权限System.out.println(fileStatus.getLen());//文件长度BlockLocation[] blockLocations = fileStatus.getBlockLocations();for(BlockLocation blockLocation: blockLocations){String[] hosts = blockLocation.getHosts();//副本具体存在于哪个主机上for(String host:hosts){System.out.println(host);}}System.out.println("---------------分割线---------------------");}//3. 关闭资源fs.close();}//文件和文件夹判断@Testpublic void  testLineStatus() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"), conf, "zzz");//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();}
}

HDFS的API操作相关推荐

  1. 2021年大数据Hadoop(十二):HDFS的API操作

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...

  2. HDFS的API操作-获取FileSystem方式

    HDFS 的 API 操作 导入 Maven 依赖 <repositories><repository><id>cloudera</id><url ...

  3. HDFS Java API 操作

    文章目录 HDFS Java API操作 零.启动hadoop 一.HDFS常见类接口与方法 1.hdfs 常见类与接口 2.FileSystem 的常用方法 二.Java 创建Hadoop项目 1. ...

  4. 实验二 HDFS的Shell命令操作,和HDFS的API操作

    文章目录 实验目的 一. 实验原理 二.实验准备 实验内容 步骤 项目1 HDFS常见命令练习 列出HDFS当前用户家目录下的文件及文件夹: 列出HDFS文件下名为directory的文件夹中的文件: ...

  5. 分布式文件系统—HDFS—Java API操作

    原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...

  6. 大数据之-Hadoop之HDFS的API操作_文件上传---大数据之hadoop工作笔记0056

    然后我们HDFS的java的api操作. 比如我们有个需求从mysql中把数据上传到完全分布式的集群中的,hdfs中 比如这里首先我们演示,把e盘下的banzhang.txt文件上传到完全分布式集群h ...

  7. HDFS java API操作

    HDFS的javaAPI操作 目标:掌握如何使用API对HDFS上的目录和数据进行增.删.改.查操作. 1.idea创建maven工程 2.修改pom.xml文件如下: (需要下载jar包,时间可能稍 ...

  8. HDFS的API操作-获取文件列表信息

    遍历 HDFS 中所有文件 递归遍历 @Test public void listFile() throws Exception{FileSystem fileSystem = FileSystem. ...

  9. 大数据之-Hadoop之HDFS的API操作_文件IO流_上传_案例---大数据之hadoop工作笔记0063

    然后我们来看一下HDFS的I/O流操作,这里我们实现文件上传. 这个是文档代码 我们自己写一写,分5步

最新文章

  1. win定时关机_如何将电脑设置为定时关机?
  2. java.text.SimpleDateFormat多线程下的问题
  3. python flag函数_Python(函数基础,阶段总联系)
  4. C++ vector的用法
  5. 安徽中职计算机专业对口高考,安徽对口高考和普通高考有什么区别?
  6. 为什么我们选择 Flutter 开发移动应用?
  7. hadoop22---wait,notify
  8. github上的优秀项目和开发环境配置
  9. python 网站 批量 投票_python requests 简单实现易班自动登录,批量_文章发布,投票发布,评论,点赞,v2.0...
  10. BZOJ4199: [Noi2015]品酒大会
  11. ETS88 获取TesterID
  12. 阿里P6到P9的技术栈有哪些?程序员该如何准备学习?如何进入大厂
  13. 【火炉炼AI】机器学习031-KNN回归器模型的构建
  14. 明日传奇第三季/全集Legends of Tomorrow迅雷下载
  15. R语言LR逻辑回归实例
  16. 如何深入理解时间序列分析中的平稳性?
  17. window下vmware使用无线网卡nat的方式上网
  18. 苹果x怎么关机_苹果12怎么关机 iPhone12关机方法汇总
  19. 谈谈 Bias-Variance Tradeoff
  20. 如何使用Gulp完成项目的自动化构建

热门文章

  1. 1037 Magic Coupon
  2. 前端中的this,指的是什么?
  3. 微信小程序-锚点定位+内容滑动控制导航选中
  4. halcon算子翻译——set_framegrabber_callback
  5. Vue的模板语法学习
  6. 参观Speedy Cloud 有感
  7. 让你提升命令行效率的 Bash 快捷键
  8. MS sql server和mysql中update多条数据的例子
  9. mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结
  10. 多传感器融合技术简介