菜鸟科技网

HDFS Shell命令有哪些?

HDFS(Hadoop Distributed File System)作为Hadoop生态系统的核心组件,提供了分布式文件存储能力,其Shell命令是与HDFS交互的主要方式,通过HDFS Shell命令,用户可以完成文件的上传、下载、删除、查看、目录管理、权限设置等操作,这些命令大多基于Linux Shell命令设计,语法相似但针对分布式环境进行了优化,以下将详细介绍HDFS Shell的常用命令及其使用场景。

HDFS Shell命令有哪些?-图1
(图片来源网络,侵删)

基础文件与目录操作

创建目录

hdfs dfs -mkdir <目录路径>:用于在HDFS上创建目录,创建/input目录:

hdfs dfs -mkdir /input

若需创建多级目录(类似mkdir -p),使用-p参数:

hdfs dfs -mkdir -p /data/2023/10

上传文件/目录

hdfs dfs -put <本地路径> <HDFS路径>:将本地文件或目录上传到HDFS,上传本地file.txt到HDFS的/input目录:

hdfs dfs -put file.txt /input/

上传本地目录local_data到HDFS的/data

HDFS Shell命令有哪些?-图2
(图片来源网络,侵删)
hdfs dfs -put local_data /data/

下载文件/目录

hdfs dfs -get <HDFS路径> <本地路径>:将HDFS文件或目录下载到本地,下载HDFS的/output/result.txt到本地当前目录:

hdfs dfs -get /output/result.txt ./

下载HDFS目录/data到本地local_backup

hdfs dfs -get /data local_backup

删除文件/目录

hdfs dfs -rm [-r] <路径>:删除文件或目录。-r用于递归删除目录及其内容。

  • 删除文件:hdfs dfs -rm /input/file.txt
  • 删除目录:hdfs dfs -rm -r /data

查看目录内容

hdfs dfs -ls [-R] <路径>:列出目录下的文件和子目录。-R表示递归查看(类似ls -R)。

HDFS Shell命令有哪些?-图3
(图片来源网络,侵删)
hdfs dfs -ls /input  # 查看/input目录内容
hdfs dfs -ls -R /data # 递归查看/data目录及子目录

文件查看与内容操作

查看文件内容

hdfs dfs -cat <文件路径>:在终端显示文件内容,适合查看小文件。

hdfs dfs -cat /input/file.txt

hdfs dfs -head [-n] <文件路径>:查看文件前n行内容,默认前1000行,查看文件前5行:

hdfs dfs -head -n 5 /input/file.txt

hdfs dfs -tail [-f] <文件路径>:查看文件末尾内容,-f可实时跟踪文件变化(类似Linux tail -f)。

hdfs dfs -tail -f /output/log.txt

合并文件

hdfs dfs -getmerge <源目录> <本地文件>:将HDFS目录下的多个文件合并为一个本地文件,将/output目录下的所有文件合并为merged_result.txt

hdfs dfs -getmerge /output ./merged_result.txt

权限与所有权管理

修改权限

hdfs dfs -chmod [-R] <权限模式> <路径>:修改文件或目录权限,-R递归修改,将/input目录及其内容权限设为755:

hdfs dfs -chmod -R 755 /input

修改所有者

hdfs dfs -chown [-R] <所有者>:<所属组> <路径>:修改文件或目录的所有者和所属组,将/data目录所有者改为hadoop,所属组改为hadoop

hdfs dfs -chown -R hadoop:hadoop /data

查看权限信息

hdfs dfs -ls <路径>:输出的权限信息格式为权限 所有者 所属组 文件大小 修改时间 文件名

-rw-r--r--   3 hadoop supergroup      134217728 2023-10-01 10:00 /input/file.txt

磁盘空间与使用情况

查看目录/文件大小

hdfs dfs -du [-s] [-h] <路径>:显示目录或文件占用的空间大小。-s汇总显示(不显示子目录详情),-h以人类可读格式(如KB、MB、GB)显示。

hdfs dfs -du -h /data  # 查看/data目录总大小
hdfs dfs -du -sh /input/* # 查看/input下各文件大小并汇总

查看磁盘剩余空间

hdfs dfs -df [-h] <路径>:显示HDFS文件系统的剩余空间。-h以人类可读格式显示。

hdfs dfs -df -h /  # 查看根目录剩余空间

高级操作

移动/重命名文件

hdfs dfs -mv <源路径> <目标路径>:移动文件或目录,也可用于重命名。

  • /input/file.txt移动到/backup/
    hdfs dfs -mv /input/file.txt /backup/
  • 重命名/old.txt/new.txt
    hdfs dfs -mv /old.txt /new.txt

复制文件

hdfs dfs -cp <源路径> <目标路径>:复制文件或目录,将/input/file.txt复制到/output/

hdfs dfs -cp /input/file.txt /output/

计数文件信息

hdfs dfs -count [-h] [-q] <路径>:统计目录下的文件数量、目录数量和总空间。-h人类可读,-q显示配额信息。

hdfs dfs -count -h /data
# 输出:目录数 文件数 总大小 HDFS路径

设置文件副本数

hdfs dfs -setrep [-R] <副本数> <路径>:修改文件副本数。-R递归修改目录下所有文件,将/input/file.txt副本数设为3:

hdfs dfs -setrep 3 /input/file.txt

常用命令速查表

命令 功能描述 示例
hdfs dfs -mkdir 创建目录 hdfs dfs -mkdir /data
hdfs dfs -put 上传本地文件/目录到HDFS hdfs dfs -put local.txt /data/
hdfs dfs -get 下载HDFS文件/目录到本地 hdfs dfs -get /data/file.txt ./
hdfs dfs -ls 列出目录内容 hdfs dfs -ls /data
hdfs dfs -cat 查看文件内容 hdfs dfs -cat /data/file.txt
hdfs dfs -rm 删除文件/目录 hdfs dfs -rm -r /data
hdfs dfs -chmod 修改权限 hdfs dfs -chmod 644 /data/file.txt
hdfs dfs -du 查看文件/目录大小 hdfs dfs -du -h /data
hdfs dfs -df 查看磁盘剩余空间 hdfs dfs -df -h /
hdfs dfs -mv 移动/重命名文件 hdfs dfs -mv /old.txt /new.txt
hdfs dfs -count 统计目录文件数、大小 hdfs dfs -count -h /data

相关问答FAQs

Q1: HDFS中如何查看某个目录下所有文件的总大小?
A: 使用hdfs dfs -du -sh <目录路径>命令,查看/input目录总大小:

hdfs dfs -du -sh /input

-s表示汇总显示(不显示子目录详情),-h以人类可读格式(如MB、GB)输出结果。

Q2: 如果HDFS文件删除后,如何从回收站恢复?
A: HDFS默认会将被删除的文件移动到回收站(路径为/user/<当前用户>/.Trash),可通过以下步骤恢复:

  1. 查看回收站文件:hdfs dfs -ls /user/$USER/.Trash
  2. 将文件从回收站移回原目录:hdfs dfs -mv /user/$USER/.Trash/文件路径 /目标目录
    恢复/input/file.txt
    hdfs dfs -mv /user/$USER/.Trash/input/file.txt /input/

    注意:回收站的保留时间由fs.trash.interval参数配置(默认为0,即禁用回收站),需在hdfs-site.xml中调整该值才能启用回收站功能。

分享:
扫描分享到社交APP
上一篇
下一篇