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

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

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

1、环境准备

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

2.IDEA 开发编辑器windows

2、开发准备

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

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服务oop

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

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

3、开始编码

对HDFS操做设计如下几个主要的类:

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

FileSystem:此类的对象是一个文件系统对象,能够用该对象的一些方法来对文件进行操做经过FileSystem的静态方法get得到该对象,例:FileSystem hdfs = FileSystem.get(conf);

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

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

1.获取hadoop配置信息

2.获取文件系统对象

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

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

也能够在构造客户端fs对象时,经过参数传递进去

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

3.建立文件夹操做

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

能够看到该用户下为空目录,而后编写程序运行测试:

此时查看maxbill目录

4.建立文件操做

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

5.读取文件内容操做

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

6.读取目录信息

读出那会咱们建立的demo目录的详细信息:

7.读取文件列表


读出那会咱们建立的demo目录下的文件:

8.重命名文件

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

9.删除文件

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

10.上传文件

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

11.下载文件

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

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

4、最后总结

      经过使用java api操做hadoop的hdfs,给个人感受是和阿里的对象存储相似的效果,hdfs能够用来架设公司的云盘等服务,也可做文件服务器使用,本文使用的单机操做,后面会使用集群来进行实践。

相关文章
相关标签/搜索