hadoop(02)、使用JAVA API对HDFS进行基本操作

      本文源码码云地址:https://gitee.com/MaxBill/hadoop

      在上篇《hadoop(01)、windows平台下hadoop环境搭建》中,实践了在windows平台下使用搭建hadoop开发环境,同时搭建完毕在基于命令行的形式对HDFS进行了基本的操作,本文我们会在搭建的hadoop的基础平台上使用JAVA API来对HDFS进行简单的操作。

一、环境准备

1.windows下hadoop开发环境:参见《hadoop(01)、windows平台下hadoop环境搭建

2.IDEA 开发编辑器

二、开发准备

1.使用IDEA新建一个SpringBoot项目,参见《SpringBoot学习之路:02.第一个程序Hello World及项目结构介绍》,如下是我新建的项目结构:

125251_dSJF_2846946.png

2.添加操作HDFS的依赖包

在刚建的SpringBoot项目的pom.xml文件里添加hadoop的依赖包hadoop-common, hadoop-client, hadoop-hdfs:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.8.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.8.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.8.2</version>
</dependency>

3.启动hadoop服务

进入hadoop安装目录下的sbin中,执行脚本start-dfs.cmd

113709_wcFP_2846946.png

113758_VVEq_2846946.png

这时hadoop服务已经成功启动。

三、开始编码

对HDFS操作设计以下几个主要的类:

Configuration:封装了客户端或者服务器的配置信息

FileSystem:此类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作通过FileSystem的静态方法get获得该对象,例:FileSystem hdfs = FileSystem.get(conf);

FSDataInputStream:这是HDFS中的输入流,通过由FileSystem的open方法获取

FSDataOutputStream:这是HDFS中的输出流,通过由FileSystem的create方法获取

1.获取hadoop配置信息

130355_W3Yn_2846946.png

2.获取文件系统对象

130413_lQUL_2846946.png

客户端去操作HDFS时,是有一个用户身份的,默认情况下,HDFS客户端API会从JVM中获取一个参数来作为自己的用户身份:DHADOOP_USER_NAME=hadoop

FileSystem hdfs = FileSystem.get(getHdfsConfig()); //默认获取

也可以在构造客户端fs对象时,通过参数传递进去

FileSystem hdfs = FileSystem.get(new URI(rootPath), getHdfsConfig(), "你的用户名");

3.创建文件夹操作

先看下我们使用的用户下的目录(注:本文使用Administrator用户):

134602_ORtB_2846946.png

可以看到该用户下为空目录,然后编写程序运行测试:

131704_uRDl_2846946.png131728_Gg0N_2846946.png

此时查看maxbill目录

134516_XhDO_2846946.png

4.创建文件操作

134952_ISM9_2846946.png

运行测试创建文件后查看目录:(在刚创建的demo目录创建maxbill.txt文件,并写入hello world)

135646_Sb8m_2846946.png

5.读取文件内容操作

读取刚才创建的maxbill.txt文件

135943_1MKF_2846946.png

6.读取目录信息

141755_BLMh_2846946.png141923_kBNg_2846946.png

读出那会我们创建的demo目录的详细信息:

142012_CFiC_2846946.png

7.读取文件列表

142122_hP4F_2846946.png
读出那会我们创建的demo目录下的文件:

142226_Hj9z_2846946.png

142320_Sinq_2846946.png

8.重命名文件

142557_lME3_2846946.png

142730_FewD_2846946.png

运行重命名程序后,查看文件已经被重命名:

142828_7veY_2846946.png

9.删除文件

143213_9zeH_2846946.png

143125_U9qx_2846946.png

运行删除程序后,查看文件已经被删除:

143246_0LMU_2846946.png

10.上传文件

144655_12fp_2846946.png144051_CY1X_2846946.png

运行上传程序后,查看文件已经被上传到指定目录:

144222_JmCv_2846946.png

11.下载文件

144712_RDgR_2846946.png

运行下载程序后,查看文件已经被下载到指定目录:

145003_wjsy_2846946.png

下载后多出一个crc文件,还没注意是啥作用

四、最后总结

      通过使用java api操作hadoop的hdfs,给我的感觉是和阿里的对象存储类似的效果,hdfs可以用来架设公司的云盘等服务,也可作文件服务器使用,本文使用的单机操作,后面会使用集群来进行实践。

 

转载于:https://my.oschina.net/zss1993/blog/1574505

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值