HDFS 常用操作命令
Hadoop 分布式文件系统 (HDFS) 提供了灵活且高效的文件管理方式,类似于 Linux 文件系统。本文将介绍常用的 HDFS 操作命令,帮助您更好地掌握 HDFS 的基本操作。
1. 查看 HDFS 内容
HDFS 的目录结构与 Linux 类似,顶层目录为 /
。
1.1 通过浏览器查看
可以通过以下 URL 在浏览器中查看 HDFS 内容:
http://<服务器IP>:50070 #低版本
http://<服务器IP>:9870 #高版本
详细端口区别可以查看本专栏hadoop第一篇内容
1.2 通过 HDFS 命令查看(hadoop fs 与 hdfs fs 完全相同)
-
列出根目录内容:
hadoop fs -ls /
-
列出特定用户目录及其子目录:
hadoop fs -ls -R /user/username
2. 管理 HDFS 文件系统
假设需要操作的 HDFS 路径为 /user/username
。
2.1 创建目录
-
创建新目录:
hadoop fs -mkdir -p /user/username/myfolder
mkdir
会在 /user/username 目录下创建一个名为 myfolder 的新目录。如果中间的路径不存在,-p
选项会确保所有必要的父目录都被创建 -
创建空文件:
hadoop fs -touchz /user/username/myfolder/emptyfile.txt
2.2 本地(正在操作的机器 如Linux)上传文件到 HDFS put
2.2.1 从本地移动文件到 HDFS
- 剪切并粘贴文件:
hadoop fs -moveFromLocal /home/user/localfile.txt /user/username/myfolder
2.2.2 从本地复制上传文件到 HDFS
- 拷贝文件:
hadoop fs -copyFromLocal sample.txt /user/username/myfolder
2.2.3 使用 put 上传文件 (常用)
- 使用
put
命令上传文件,等同于copyFromLocal
:hadoop fs -put sample.txt /user/username/myfolder
2.2.4 追加文件到已存在的文件末尾
- 可以使用
appendToFile
命令将本地文件的内容追加到已经存在的 HDFS 文件末尾。注意,此操作只支持将本地文件追加到 HDFS 文件,不能直接在 HDFS 文件之间追加内容。hadoop fs -appendToFile new_data.txt /user/username/existing_file.txt
2.3 从 HDFS 下载文件到本地 get
2.3.1 从 HDFS 拷贝下载到本地
- 拷贝文件到本地目录:
hadoop fs -copyToLocal /user/username/myfolder/sample.txt ./
2.3.2 使用 get 下载文件 (常用)
- 使用
get
命令下载文件,等同于copyToLocal
:hadoop fs -get /user/username/myfolder/anotherfile.txt ./
3. HDFS 直接操作
3.1 显示文件内容
- 显示文件内容:
hadoop fs -cat /user/username/myfolder/sample.txt
3.2 修改文件权限
- 修改文件权限(基本用不到):
hadoop fs -chmod 755 /user/username/myfolder/sample.txt
3.3 拷贝文件
- 拷贝文件到新位置:
hadoop fs -cp /user/username/myfolder/sample.txt /user/username/myfolder/copy_sample.txt
3.4 移动文件
- 移动或重命名文件:
hadoop fs -mv /user/username/myfolder/sample.txt /user/username/myfolder/renamed_sample.txt
3.5 显示文件末尾内容
- 显示文件的最后 1KB 数据:
hadoop fs -tail /user/username/myfolder/anotherfile.txt
3.6 删除文件或文件夹
-
删除文件:
hadoop fs -rm /user/username/myfolder/oldfile.txt
-
递归删除文件夹及其内容:
hadoop fs -rm -r /user/username/myfolder/old_folder
使用
-r
选项可以使 Hadoop 递归地检查该文件夹中的所有文件和子文件夹并将其一并删除。如果没有-r
选项,Hadoop 将不会删除文件夹(即使文件夹为空),因为-rm
只处理单个文件的删除,与Linux略有不同。
3.7 统计文件夹大小信息
- 统计文件夹大小:
hadoop fs -du -s -h /user/username/myfolder