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