HDFS 常用基础命令详解——快速上手分布式文件系统
简介:
本文面向刚接触 Hadoop HDFS(Hadoop 分布式文件系统)的读者,结合 CSDN 博客风格,系统梳理最常用的 HDFS 客户端命令,并配以示例和注意事项,帮助你在开发和运维中快速掌握 HDFS 的文件管理能力。
一、前置条件与环境准备
-
安装 Hadoop
已完成 Hadoop 单节点或伪分布式集群安装,并能正常启动 HDFS(start-dfs.sh
)。 -
配置环境变量
确保HADOOP_HOME
和PATH
已包含 Hadoop 可执行文件路径。例如在~/.bashrc
中:export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
验证 HDFS 服务
jps # 应至少看到 NameNode、DataNode、SecondaryNameNode 等进程 hdfs dfsadmin -report
二、HDFS 文件系统目录操作
操作 | 命令示例 | 说明 |
---|---|---|
创建目录 | hdfs dfs -mkdir /user/yourname/input | 支持 -p 递归创建父目录 |
列出目录 | hdfs dfs -ls /user/yourname | 同 hadoop fs -ls |
递归列出 | hdfs dfs -ls -R /user/yourname | 列出子目录及文件 |
删除文件/目录 | hdfs dfs -rm /path/to/file hdfs dfs -rm -r /path/to/dir | -r 递归,-skipTrash 直删 |
重命名/移动 | hdfs dfs -mv /src /dst | src 与 dst 必须同属 HDFS |
复制文件 | hdfs dfs -cp /src /dst | 从 HDFS 到 HDFS |
三、HDFS 与本地文件互转
操作 | 命令示例 | 说明 |
---|---|---|
本地 → HDFS(上传) | hdfs dfs -put local.txt /user/yourname/input/ | 同 -copyFromLocal |
强制覆盖上传 | hdfs dfs -put -f local.txt /user/yourname/input/ | 覆盖已存在同名文件 |
HDFS → 本地(下载) | hdfs dfs -get /user/yourname/input/data01.txt ./ | 同 -copyToLocal |
本地重命名后上传 | hdfs dfs -copyFromLocal local.txt /user/yourname/input/new.txt | 可以在 HDFS 端指定新文件名 |
四、查看与读取文件内容
-
查看完整内容
hdfs dfs -cat /user/yourname/input/data01.txt
-
查看开头或结尾
hdfs dfs -cat /user/yourname/input/data01.txt | head -n 20 # 前 20 行 hdfs dfs -tail /user/yourname/input/data01.txt # 末尾 1KB
-
统计行数、字节数
hdfs dfs -count -q /user/yourname/input # 行数、文件数、目录数 hdfs dfs -du -h /user/yourname/input # 各文件和目录的大小
五、权限与空间管理
-
修改文件权限
hdfs dfs -chmod 755 /user/yourname/input/data01.txt
-
修改文件属主/属组
hdfs dfs -chown yourname:yourgroup /path/to/file
-
查看使用情况
hdfs dfsadmin -report hdfs dfs -df -h
六、最佳实践与注意事项
-
避免在小文件大量场景下使用:HDFS 更适合存储大文件,千万级小文件会导致 NameNode 内存压力增大。
-
合理设置副本数:开发环境可用副本数 1,生产应至少 2~3。
-
频繁读写使用中间目录:避免在同一目录下反复
put
、rm
,可按日期或业务类型分区。 -
使用
hadoop fs
:hdfs dfs
与hadoop fs
功能等价,可根据习惯任选。
七、结语
以上涵盖了 HDFS 最常用的基础命令,包含目录管理、文件上传下载、内容查看及权限调整等。掌握这些命令后,你就可以在开发、调试和运维环节高效地与 HDFS 交互。更多高级用法(如 DistCp、HDFS Shell 脚本批量化操作、WebHDFS 接口等),可在后续文章中继续分享,欢迎关注与留言讨论!