文档章节

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

MaxBill
 MaxBill
发布于 2017/11/16 14:55
字数 953
阅读 717
收藏 2

      本文源码码云地址: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及项目结构介绍》,如下是我新建的项目结构:

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

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

三、开始编码

对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文件,还没注意是啥作用

四、最后总结

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

 

© 著作权归作者所有

MaxBill

MaxBill

粉丝 54
博文 77
码字总数 59631
作品 1
宝山
后端工程师
私信 提问
hadoop(03)、Hadoop Map/Reduce框架的简单实践

本文源码码云地址:https://gitee.com/MaxBill/hadoop 在上篇《hadoop(02)、使用JAVA API对HDFS进行基本操作》中,通过JAVA API连接HDFS系统进行了基本的操作实践,本文将使用Hadoop的Map/R...

MaxBill
2017/11/19
109
0
hive(02)、数据仓库Hive的基本使用

在上篇《 hive(01)、基于hadoop集群的数据仓库Hive搭建实践 》一文中我们搭建了分布式的数据仓库Hive服务,本文主要是在上文的基础上结合Hadoop分布式文件系统,将结构化的数据文件映射为一张...

MaxBill
2018/01/10
245
0
HDFS入门笔记------架构以及应用介绍

引言—HDFS的重要性: Hadoop的定义:适合大数据的分布式存储与计算的一个平台,其中大数据的分布式存储就是由HDFS来完成的,因此掌握好HDFS的相关概念与应用非常重要! 本篇博客将从以下几个...

a2011480169
2016/06/14
0
0
2014-11-09---Hadoop的基础学习(二)----HDFS的特性和JavaAPI源码分析

1.HDFS概览 HDFS 是一个 Apache Software Foundation 项目,是 Apache Hadoop 项目的一个子项目。Hadoop 非常适于存储大型数据(比如 terabytes和petabytes),并使用 HDFS 作为其存储系统。...

查封炉台
2014/11/10
1K
6
学习hadoop-远程链接 HDFS

使用javaAPI的方式远程链接HDFS 首先项目进行maven管理 我这边使用的hadoop是2.5.0 进行学习 远程在win上面使用ide开发工具进行链接hadoop 首先创建maven工程 然后在resources 导入在 hadoop...

qq_36020545
2018/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用CSS自定义属性构建骨架屏

写在前面 几天前看到薄荷前端团队分享的《前端骨架屏方案小结》,突然回想起一年前看到的max bock写的《Building Skeleton Screens with CSS Custom Properties》,翻译整理写下出此文,分享...

前端老手
昨天
9
0
Docker常用命令小记

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,还有一些命令及参数也很重要,在此记录下来避免遗忘。 ......

程序员欣宸
昨天
9
0
MAT使用-jvm内存溢出问题分析定位

1.MAT简介: MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,...

xiaomin0322
昨天
5
0
内网和外网之间的通信(端口映射原理)

首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的...

Jack088
昨天
6
0
3.深入jvm内核-原理、诊断与优化-4. GC算法和种类

一、GC算法和种类 GC的概念 GC算法 引用计数法 标记清除 标记压缩 复制算法 可触及性 Stop-The-World GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法 通过引用计算来回收垃圾 使用者...

hexiaoming123
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部