HDFS 提供了多种访问方式,除了命令行操作和 Web 界面监控外,Java API 是进行自动化开发和集成最核心的手段。本文将介绍 Linux 下常用的 Shell 命令、Web 页面查看方法,并重点通过实例演示如何利用 Java API 完成文件上传、合并等操作。
一、HDFS 常用命令
在 Linux 环境中,hadoop fs 是最通用的命令,适用于本地文件和 HDFS。此外还有 hadoop dfs 和 hdfs dfs,后两者仅针对 HDFS。基本用法如下:
hadoop fs [genericOptions][commandOptions]
以下是一些高频使用的命令:
hadoop fs -ls <path>:显示指定路径的文件详细信息。hadoop fs -cat <path>:将文件内容输出到标准输出。hadoop fs -mkdir [-p] <paths>:创建文件夹,-p支持递归创建。hadoop fs -copyFromLocal <localsrc> <dst>:从本地复制文件到 HDFS。hadoop fs -put <localsrc> <dst>:功能同 copyFromLocal,也支持从 stdin 读取。hadoop fs -rm -r <path>:递归删除目录及其内容。hadoop fs -setrep [-R] <path>:修改文件副本系数。hadoop fs -getmerge [-nl] <src> <localdst>:合并源目录下的文件到本地。
二、HDFS 的 Web 页面
配置好集群后,可以通过浏览器访问 NameNode 的 Web UI(默认端口 9870)。例如伪分布式模式下访问 http://localhost:9870。这里可以直观地浏览文件系统结构、查看节点日志以及下载特定数据块。虽然 Web 界面方便查看,但日常运维和开发中更推荐使用 Shell 命令或 API 来实现自动化管理。
三、HDFS 常用 Java API 及应用实例
Hadoop 基于 Java 实现,通过调用 Java API 可以灵活地与 HDFS 交互。以下是核心类说明:
org.apache.hadoop.fs.FileSystem:通用文件系统抽象基类,所有 HDFS 操作的基础。org.apache.hadoop.fs.FileStatus:展示文件和目录的元数据,如大小、权限、所有者等。org.apache.hadoop.fs.FSDataInputStream/OutputStream:用于读写 HDFS 文件的流。org.apache.hadoop.conf.Configuration:管理配置项,优先读取 core-site.xml。org.apache.hadoop.fs.Path:表示文件系统路径。
应用实例:文件合并
下面通过一个实际案例,演示如何编写 Java 程序合并 HDFS 中的多个文件,并过滤掉特定后缀的文件。
1. 项目准备
在 Eclipse 中创建一个名为 HDFSExample 的 Java 工程。确保 JDK 版本与 Hadoop 环境兼容(推荐 JDK 1.8)。
2. 添加依赖库
进入项目属性设置,在 Libraries 选项卡中添加外部 JAR 包。需要包含以下目录下的所有 jar 文件(注意排除 jdiff、lib、sources 等目录):
/usr/local/hadoop/share/hadoop/common/usr/local/hadoop/share/hadoop/common/lib/usr/local/hadoop/share/hadoop/hdfs


