分布式文件系统 HDFS 的编程实践主要涉及 Shell 命令操作、Web 界面管理以及 Java API 开发。这里以 Hadoop 3.3.5 版本为例,介绍如何在 Linux 环境下进行文件操作和程序编写。
一、HDFS 常用命令
hadoop fs 是 HDFS 最常用的 Shell 命令,适用于本地文件和 HDFS 文件系统。相比之下,hadoop dfs 和 hdfs dfs 仅针对 HDFS。基本用法如下:
hadoop fs [genericOptions][commandOptions]
以下是一些高频使用的命令示例:
hadoop fs -ls <path>:显示指定路径下文件的详细信息。hadoop fs -ls -R <path>:递归列出目录内容。hadoop fs -cat <path>:将文件内容输出到标准输出。hadoop fs -mkdir [-p] <paths>:创建文件夹,-p支持递归创建。hadoop fs -put <localsrc> <dst>:从本地上传文件到 HDFS。hadoop fs -get <src> <localdst>:从 HDFS 下载文件到本地。hadoop fs -rm -r <path>:递归删除文件或目录。hadoop fs -setrep [-R] <path>:修改文件副本系数。
对于权限管理,如 chown 和 chmod,通常仅限超级用户或文件所有者执行。
二、HDFS 的 Web 页面
配置好集群后,可以通过浏览器访问 NameNode 的 Web UI(默认端口 9870),例如 http://localhost:9870。该页面提供了直观的集群状态监控、日志查看及文件浏览功能。
虽然 Web 界面方便浏览,但实际运维中更多依赖 Shell 命令或 API 脚本实现自动化。例如,通过'Browse the filesystem'查看目录等价于执行 hadoop fs -ls /。
三、HDFS 常用 Java API 及应用实例
Hadoop 基于 Java 构建,Java API 是开发 HDFS 应用的核心。常用的类包括 FileSystem(文件系统抽象)、FileStatus(元数据接口)、FSDataInputStream/OutputStream(流处理)以及 Configuration(配置管理)。
(一)常用 Java API 介绍
- org.apache.hadoop.fs.FileSystem:通用文件系统基类,提供具体的实现如
DistributedFileSystem。 - org.apache.hadoop.fs.FileStatus:获取文件大小、块大小、所有者等元数据。
- org.apache.hadoop.conf.Configuration:读取
core-site.xml等配置文件。 - org.apache.hadoop.fs.Path:表示 HDFS 中的文件路径。


