HDFS命令详解

202 阅读4分钟

文件/目录操作

  • -ls: 列出目录中的文件和子目录信息。

    • 用法: dfs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ ...]

    • 常用选项:

      • 无选项: 列出路径下的文件和目录,类似ls。
      • -R: 递归列出所有子目录的内容,类似ls -R。
      • -h: 以人类可读的格式显示文件大小(例如 1K, 2M, 3G)。
      • -d: 将目录作为普通文件列出,而不是显示其内容。
    • 示例: dfs -ls -h /user/data

  • -mkdir: 创建一个或多个目录。

    • 用法: dfs -mkdir [-p] ...

    • 选项:

      • -p: 沿路径创建父目录(如果不存在的话),类似mkdir -p。
    • 示例: dfs -mkdir -p /user/project/input

  • -mv: 移动或重命名文件或目录。

    • 用法: dfs -mv ...

    • 说明: 此命令可以在HDFS内部移动文件/目录。如果源和目标都在同一目录下,则效果为重命名。

    • 示例:

      • 移动文件: dfs -mv /user/data/file.txt /user/backup/
      • 重命名文件: dfs -mv /user/data/old_name.txt /user/data/new_name.txt
  • -cp: 复制文件或目录。

    • 用法: hadoop fs -cp [-f] [-p | -p[topax]] [-d] [-t ] [-q ] ...

    • 常用选项:

      • -f: 如果目标文件已存在,则强制覆盖。
      • -p: 保留文件属性(时间戳、所有权、权限)。
    • 示例: hadoop fs -cp /user/data/file1.txt /user/data/file2.txt

  • -rm: 删除一个或多个文件或目录。

    • 用法: hadoop fs -rm [-f] [-r|-R] [-skipTrash] [-safely] ...

    • 常用选项:

      • -r 或 -R: 递归删除目录及其内容。删除目录时必须使用此选项。
      • -skipTrash: 永久删除文件,不将其移入回收站。
      • -f: 强制删除,不进行提示。
    • 示例: hadoop fs -rm -r /user/temp_data

  • -rmdir: 删除一个空目录。

    • 用法: hadoop fs -rmdir [--ignore-fail-on-non-empty]

      ...

    • 说明: 只能删除空目录。如果要删除非空目录,请使用rm -r。

    • 选项:

      • --ignore-fail-on-non-empty: 如果目录非空,不打印错误信息。
    • 示例: hadoop fs -rmdir /user/empty_dir


数据上传与下载

  • -copyFromLocal (或 -put): 将本地文件系统中的文件或目录复制到HDFS。

    • 用法: hadoop fs -copyFromLocal ...  或 hadoop fs -put ...

    • 常用选项:

      • -f: 覆盖目标路径下的同名文件。
    • 示例: hadoop fs -put ./local_file.txt /user/hadoop/

  • -copyToLocal (或 -get): 将HDFS中的文件或目录复制到本地文件系统。

    • 用法: hadoop fs -copyToLocal ...  或 hadoop fs -get ...

    • 常用选项:

      • -f: 覆盖本地路径下的同名文件。
    • 示例: hadoop fs -get /user/hadoop/hdfs_file.txt ./

  • -moveFromLocal: 将本地文件移动到HDFS,移动后本地文件会被删除。

    • 用法: hadoop fs -moveFromLocal ...
    • 示例: hadoop fs -moveFromLocal ./report.csv /user/archive/
  • -moveToLocal: 将HDFS文件移动到本地文件系统,移动后HDFS上的文件会被删除。

    • 用法: hadoop fs -moveToLocal

文件内容查看与合并

  • -cat: 将HDFS中一个或多个文件的内容输出到标准输出(通常是终端)。

    • 用法: hadoop fs -cat [-ignoreCrc] ...
    • 示例: hadoop fs -cat /user/data/part-00000
  • -text: 以文本格式显示文件内容,支持压缩文件(如gzip, bzip2)。

    • 用法: hadoop fs -text [-ignoreCrc] ...
    • 示例: hadoop fs -text /user/data/logs.gz
  • -head: 查看文件的开头部分,默认是1KB。

    • 用法: hadoop fs -head
    • 示例: hadoop fs -head /user/large_file.txt
  • -tail: 查看文件的末尾部分。

    • 用法: hadoop fs -tail [-f] [-s ]

    • 选项:

      • -f: 持续显示文件中追加的新内容,类似tail -f。
    • 示例: hadoop fs -tail -f /user/logs/current.log

  • -getmerge: 将HDFS中一个目录下的多个文件合并成一个本地文件。

    • 用法: hadoop fs -getmerge [-nl] [-skip-empty-file]

    • 选项:

      • -nl: 在每个文件合并的末尾添加一个换行符。
    • 示例: hadoop fs -getmerge /user/output/part-* ./merged_output.txt

  • -appendToFile: 将一个或多个本地文件的内容追加到一个HDFS文件中。

    • 用法: hadoop fs -appendToFile ...
    • 示例: hadoop fs -appendToFile ./log1.txt ./log2.txt /user/hadoop/master_log.txt
  • -concat: 将多个HDFS文件合并成一个目标HDFS文件。

    • 用法: hadoop fs -concat ...
    • 说明: 源文件将在合并后被删除,且所有文件必须在同一个目录下。
    • 示例: hadoop fs -concat /user/output/final_result /user/output/part-*

权限与属性管理

  • -chmod: 更改文件或目录的权限。

    • 用法: hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...

    • 示例:

      • hadoop fs -chmod 755 /user/data/script.sh
      • hadoop fs -chmod -R u+w /user/project (递归为用户添加写权限)
  • -chown: 更改文件或目录的所有者和组。

    • 用法: hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH...
    • 示例: hadoop fs -chown -R hadoop:supergroup /user/data
  • -chgrp: 更改文件或目录的所属组。

    • 用法: hadoop fs -chgrp [-R] GROUP PATH...
    • 示例: hadoop fs -chgrp -R supergroup /user/analytics
  • -getfacl / -setfacl: 获取/设置访问控制列表(ACLs),用于更细粒度的权限控制。

  • -getfattr / -setfattr: 获取/设置文件的扩展属性。


磁盘空间与统计

  • -df: 显示文件系统的总空间、已用空间和可用空间。

    • 用法: hadoop fs -df [-h] [ ...]

    • 选项:

      • -h: 以人类可读的格式显示。
    • 示例: hadoop fs -df -h /

  • -du: 显示文件或目录所占用的空间大小。

    • 用法: hadoop fs -du [-s] [-h] [-v] [-x] ...

    • 常用选项:

      • -s: 显示总计大小,而不是每个文件的单独大小。
      • -h: 以人类可读的格式显示。
    • 示例: hadoop fs -du -s -h /user/project

  • -count: 统计路径下的目录数、文件数和总字节数。

    • 用法: hadoop fs -count [-q] [-h] [-v] [-t []] [-u] [-x] [-e] [-s] ...

    • 常用选项:

      • -q: 显示配额信息。
    • 示例: hadoop fs -count /user/data

  • -stat: 显示文件或目录的状态信息。

    • 用法: hadoop fs -stat [format] ...
    • 示例: hadoop fs -stat "%b %n" /user/data/file.txt (以指定格式显示文件大小和名称)