系列文章目录

系列文章目录

Hadoop第一章:环境搭建
Hadoop第二章:集群搭建(上)
Hadoop第二章:集群搭建(中)
Hadoop第二章:集群搭建(下)
Hadoop第三章:Shell命令
Hadoop第四章:Client客户端
Hadoop第四章:Client客户端2.0


文章目录

  • 系列文章目录
  • 系列文章目录
  • 前言
  • 一、简单封装
  • 二、上传文件
    • 副本数量优先级
  • 三、下载文件
  • 四、删除文件
  • 五、更名和移动
    • 六、是否为文件
    • 七、查看文件详情
  • 总结

前言

在上一次的博客中我们完成了了Client的基础模板,这次我们将其完善。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简单封装

核心代码

public class HdfsClient {//连接集群的nn地址@Testpublic void testmkdir() throws URISyntaxException, IOException, InterruptedException {//连接地址URI uri=new URI("hdfs://hadoop102:8020");//配置文件Configuration configuration=new Configuration();//用户String user="atguigu";//获取客户端对象FileSystem fs=FileSystem.get(uri,configuration,user);//创建一个文件夹fs.mkdirs(new Path("/xiyou/huaguoshan"));//关闭资源fs.close();}
}

可以看到我们将整个过程中的连接集群,执行命令,以及最后的连接断开,都写到了一个函数中,这很明显不利用代码的我们应该将其分别封装在三个函数中。

public class HdfsClient {private FileSystem fs;@Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {//连接地址URI uri=new URI("hdfs://hadoop102:8020");//配置文件Configuration configuration=new Configuration();//用户String user="atguigu";//获取客户端对象fs = FileSystem.get(uri,configuration,user);}@Afterpublic void close() throws IOException {//关闭资源fs.close();}@Testpublic void testmkdir() throws  IOException {//创建一个文件夹fs.mkdirs(new Path("/xiyou/huaguoshan1"));}
}

现在我们在创建一个文件。

现在我们只需要在命令部分进行修改即可。

二、上传文件

核心代码

只测试某一个test

    @Testpublic void testPut() throws IOException {//参数 1.是否删除源文件 2.是否强制覆盖 3.本地文件路径 4.hadoop文件路径fs.copyFromLocalFile(false,false,new Path("D:\\learn\\test.txt"),new Path("/"));}

副本数量优先级

正常情况下,这里会出现三个副本,因为咱们集群有三个节点,但是这个数量可以设置吗,当然是可以的,我们可以在项目的配置文件文件里设置(hdfs-site.xml),但这样灵活性会下降,所以就不介绍了,咱们之说在独立项目中如何设置。

在resources目录下创建一个hdfs-site.xml文件,如果要修改配置文件,就直接在hadoop的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>


这里我们吧副本数量设置为1,现在再次上传。这次注意要允许覆盖。

现在我这个项目里上传的文件的副本数统一更改了,但是还是不够灵活我希望每一次上传的副本数都有我控制,所以我们呀修改连接配置。
核心代码

    @Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {//连接地址URI uri=new URI("hdfs://hadoop102:8020");//配置文件Configuration configuration=new Configuration();//配置副本数configuration.set("dfs.replication", "2");//用户String user="atguigu";//获取客户端对象fs = FileSystem.get(uri,configuration,user);}


所以这里记录优先级
配置文件<项目配置<代码配置。

三、下载文件

核心代码

@Test//文件下载public void testGet() throws IOException {//参数 1.是否删除源文件 2.hadoop路径 3.本地路径 4.是否校验fs.copyToLocalFile(false,new Path("/test.txt"),new Path("C:\\Users\\admin\\Desktop"),false);}

我的下载路径选择的是桌面。

这里说一下这个校验,就hadoop的问价哈希一下,然后本地文件也哈希一下,如果一样,就说明没有产生数据丢失。

四、删除文件

核心代码

    @Test//文件删除public void tessRm() throws IOException {//参数 1.删除目录 2.是否递归fs.delete(new Path("/test.txt"),false);fs.delete(new Path("/wcinput"),true);}


注意空目录和文件可以直接删除,非空目录需要递归。

五、更名和移动

核心代码

    @Test//文件移动和更名public void testmv() throws IOException {//参数 1.源路径 2.目标路径fs.rename(new Path("/xiyou/huaguoshan"),new Path("/xiyou/shuiliandong"));}


更名和移动是类似的只要修改路径即可。

六、是否为文件

信息代码

    @Test//判断是文件夹还是文件public void testFile() throws IOException {FileStatus[] listStatus =fs.listStatus(new Path("/"));for (FileStatus status : listStatus) {if (status.isFile()) {System.out.println("文件:"+status.getPath().getName());}else {System.out.println("目录:"+status.getPath().getName());}}}

七、查看文件详情

核心代码

@Test//获取文件信息public void fileDetail() throws IOException {RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);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));}}


由于集群是从新搭建了一次,里边没啥东西,随便上传个文件测试一下就行。


总结

用Java进行客户端的搭建到这里就告一段落了。

Hadoop第四章:Client客户端2.0相关推荐

  1. hadoop java client_hadoop3 Java client客户端kerberos认证

    hadoop集群升级hadoop3,并需要Kerberos认证,hadoop3代码包做了合并,引用jar包如下: org.apache.hadoop hadoop-hdfs 3.1.1 org.apa ...

  2. 第五章:Tensorflow 2.0 利用十三层卷积神经网络实现cifar 100训练(理论+实战)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/LQ_qing/article/deta ...

  3. 【正点原子Linux连载】第六十四章 Linux 多点电容触摸屏实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  4. Hadoop In Action 第四章(1)

    第四章 编写基本的MapReduce程序 本章涵盖了: 用Hadoop处理数据集,以专利数据为例 一个MapReduce程序的基本结构 基本的MapReduce程序,以数据统计为例 Hadoop的流A ...

  5. HIDL示例-JAVA服务创建-Client验证-Android10.0 HwBinder通信原理(四)

    摘要:本节主要来讲解Android10.0 JAVA层的HIDL服务创建和JAVA层的Client验证 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...

  6. Beginning WF 4.0翻译——第四章(传递参数)

    在第一章,我已经向你展示了在工作流中怎么使用variables(变量)和arguments(参数).跟编码类似,variables类似于类成员,而arguments类似于方法的参数.你已经在前三章使用 ...

  7. 【正点原子Linux连载】第四十四章 设备树下的LED驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. 【正点原子FPGA连载】第四章 Vivado软件的安装和使用 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  9. 【正点原子FPGA连载】第十四章 IP核之RAM实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

最新文章

  1. filebeat成精之路
  2. 【BZOJ4259】残缺的字符串
  3. 2018年各大互联网前端面试题四(美团)
  4. javascript 网页设计 怎么在同一位置显示几张不同的图片(图片自动变换)
  5. 算术运算符_加号的多种用法
  6. JDK9新特性实战:简化流关闭新姿势
  7. H26L encoder.cfg参数分析
  8. VBA 常用代码及自定义函数备忘
  9. Object类中的toString方法
  10. ubuntu下MySQL的安装使用与卸载-程序编译
  11. 得益于数据中心芯片业务提升,AMD公司财务表现令投资者欣喜
  12. 云之讯-》返回码105147
  13. python比java_对比java和python对比
  14. 深度学习——目前可用的3D人体数据集
  15. 机器人学习笔记(3) 正运动学和逆运动学
  16. 调用restFul接口如何实现返回的数据编码格式为utf-8
  17. 机器人与matlab——Robotics Toolbox—02建立机器人模型
  18. python判断谁做了好事
  19. 产品需求文档到底该怎么写?
  20. 机器视觉学习笔记(三)-- 图像采集(镜头)

热门文章

  1. csb反编译_云服务软件
  2. 抖音引流微信11种方法
  3. 严蔚敏《数据结构》的全部代码实现(C语言)
  4. 电赛笔记【集成运放简介】
  5. 应用场景三:西门子PLC通过WIFI实现PLC之间的无线通讯
  6. 根据本地浏览器的版本自动更新chromedriver
  7. 100楼层和两个玻璃球
  8. 虐心的oracle面试之旅
  9. 键盘摄影:今天老李是一名动物摄影师
  10. access的papersize命令_自定义报表纸张大小的函数