HDFS 编程实践主要涉及三种方式:Shell 命令、Web 界面以及 Java API。通过 Shell 可以快速管理文件,Web 页面适合监控集群状态,而 Java API 则提供了更灵活的开发能力。本文以 Hadoop 3.x 版本为例,介绍这些操作的核心用法及实战流程。
HDFS 常用 Shell 命令
hadoop fs 是 HDFS 最常用的命令工具,适用于本地和分布式文件系统。相比 hadoop dfs 或 hdfs dfs(仅支持 HDFS),hadoop fs 的通用性更强。基本语法如下:
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 -copyFromLocal <localsrc> <dst>:上传本地文件到 HDFS。hadoop fs -put <localsrc> <dst>:功能同上传,也支持从 stdin 读取。hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>:下载 HDFS 文件到本地。hadoop fs -rm -r <path>:递归删除文件或目录。hadoop fs -setrep [-R] <path>:修改文件副本系数。hadoop fs -test -ezd <path>:测试文件属性(存在、大小、是否为目录)。
HDFS Web 管理界面
配置好集群后,可以通过浏览器访问 NameNode 的 Web UI(默认端口 9870)。例如在伪分布式模式下,访问 http://localhost:9870 即可查看文件系统信息。
该界面能直观展示节点分布、存储日志及文件浏览情况。虽然大部分功能可通过 Shell 命令实现,但 Web 界面在排查问题时更为便捷。例如,通过'Browse the filesystem'查看目录结构,等价于执行 hadoop fs -ls /。
HDFS Java API 实战
Hadoop 核心基于 Java 构建,Java API 是进行复杂业务逻辑开发的首选。下面介绍核心类及一个完整的文件合并示例。
核心 API 类
- FileSystem:通用文件系统抽象基类,所有 HDFS 操作的基础。
- FileStatus:获取文件和目录的元数据(大小、权限、所有者等)。
- FSDataInputStream / FSDataOutputStream:用于读写 HDFS 文件。
- Configuration:加载配置文件(如 core-site.xml)中的参数。
- Path:表示 HDFS 中的文件路径。


