Java 操作 Hadoop
注意:本文内容基于 Hadoop 集群搭建完成基础上:
Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤
本文的内容是基于下面前提:
- Hadoop 集群搭建完成并能正常启动和访问
- Idea 和 Maven 分别安装完成
- 需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令
内容大纲
- Maven 及 idea 中 Maven 相关配置
- 本地仓库
- 阿里镜像
- JDK 编译版本
- Java 操作 Hadoop
- 查询文件列表
- 上传文件及应用案例
- 读取文件内容
- 新建文件及内容追加
- 文件删除
- 文件下载
- 文件移动
配置 Idea 中的 Maven
配置 Maven
配置文件目录:maven 安装目录/conf/settings.xml
- 本地仓库
- 阿里镜像
- JDK 编译版本
本地仓库
<localRepository>D:/Soft/apache-maven-3.6.3/repo</localRepository>
阿里镜像
默认下载的地址是国外网址,速度比较慢或不稳定,可以配置切换为阿里的网址
settings.xml 中找到<mirrors>节点,在节点中配置子节点<mirror>
配置如下:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
配置 JDK
在 settings.xml 中找到 <profiles> 节点,在中间增加子节点<profile>
增加的内容如下:
<profile>
<id>jdk11</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>11</jdk>
</activation>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
</properties>
</profile>
Java 操作 Hadoop
- 查询指定目录下文件列表 — ls
- 在 hadoop 上创建目录
- 上传本地(windows) 上传到 hadoop
- 下载 hdfs 上的文件到本地
- 写出内容到 hdfs 指定文件中
- 删除指定文件
准备
- 使用 idea 新建 maven 项目
- 配置 pom.xml
在空工程下新建 module
配置 pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wdzl</groupId>
<artifactId>hadoop04</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
</project>
注意:配置 pom.xml 完成后,一定要注意点击右上角的刷新按钮
现在对文件的操作成功与否,可以通过浏览器访问页面来查看
查询文件列表
用到的 Java 的 API :
- org.apache.hadoop.conf.Configuration
- org.apache.hadoop.fs.FileSystem
- org.apache.hadoop.fs.FileStatus
- org.apache.hadoop.fs.Path
package org.wdzl;
import org.apache.hadoop.conf.Configuration;
import