• Hadoop FS 文件系统命令


    前言

    Hadoop 文件系统命令可以用来直接和 Hadoop 的文件系统交互,支持包括 HDFS、本地文件系统、WebHDFS、S3 等文件系统。

    命令的入口是:

    bin/hadoop fs <args>
    

    下面我们介绍下常用的文件命令。

    命令

    合并文件

    appendToFile 命令可以用来合并文件,或者将一个或多个文件添加到目标文件的末尾,也支持直接从标准输入获取。

    hadoop fs -appendToFile <localsrc> ... <dst>
    

    例子:

    # 添加文件内容到目标文件末尾
    hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
    # 合并多个文件
    hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
    # 支持其他文件系统
    hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
    # 支持标准输入
    hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile
    

    显示文件内容

    cat 用来显示文件内容,和 Linux 的 cat 命令类似。

    hadoop fs -cat [-ignoreCrc] URI [URI ...]
    

    使用 -ignoreCrc 选项禁用文件校验。

    例子:

    hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
    hadoop fs -cat file:///file3 /user/hadoop/file4
    

    修改文件权限

    chmod 可以修改文件权限,类似 Linux 的 chmod 命令。

    hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
    

    使用 -R 选项递归修改。用户必须具有文件的权限(所有者或超级用户)。

    修改文件所有者

    chown 可以修改文件所有者,类似 Linux 的 chown 命令。

    hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
    

    使用 -R 选项递归修改。用户必须是超级用户。

    计数

    count 可以用来计算指定路径下的目录、文件或者字节数量。

    hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] [-s] <paths>
    

    参数:

    • -q 参数显示已使用量和限额,-u 参数仅显示限额。-t 配合 -q 或 -u 使用,显示每个存储类型的已使用量和配额。
    • -h 将大小转换为易于阅读的格式。
    • -v 显示表头行。
    • -x 指定计算时排除快照。
    • -e 会增加一列 ERASURECODING_POLICY。
    • -s 会显示每个文件夹的快照数量。

    例子:

    hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
    hadoop fs -count -q hdfs://nn1.example.com/file1
    hadoop fs -count -q -h hdfs://nn1.example.com/file1
    hadoop fs -count -q -h -v hdfs://nn1.example.com/file1
    hadoop fs -count -u hdfs://nn1.example.com/file1
    hadoop fs -count -u -h hdfs://nn1.example.com/file1
    hadoop fs -count -u -h -v hdfs://nn1.example.com/file1
    hadoop fs -count -e hdfs://nn1.example.com/file1
    hadoop fs -count -s hdfs://nn1.example.com/file1
    

    复制文件

    cp 命令可以复制文件。

    hadoop fs -cp [-f] [-p | -p[topax]] [-d] [-t <thread count>] [-q <thread pool queue size>] URI [URI ...] <dest>
    

    参数:

    • -f 强制覆盖。
    • -d 不创建临时文件。
    • -p 保留文件的属性(如时间、所有权、权限等)。
    • -t <线程数量> 指定线程的数量,默认 1。
    • -q <线程池队列数量> 指定线程池中的队列数量,默认 1024,当线程数量大于 1 时有效。

    例子:

    hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
    hadoop fs -cp -f -d /user/hadoop/file1 /user/hadoop/file2
    hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
    hadoop fs -cp -t 5 /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
    hadoop fs -cp -t 10 -q 2048 /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
    

    查看空闲空间

    df 命令查看空闲的空间。

    hadoop fs -df [-h] URI [URI ...]
    

    -h 选项将大小格式化为易于理解的格式。

    例子:

    hadoop dfs -df /user/hadoop/dir1
    

    查看空间占用

    du 查看目录的空间占用或文件的大小。

    hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
    

    参数:

    • -s 显示目录下文件大小的总和。
    • -h 将大小格式化为易于理解的格式。
    • -v 显示表头行。
    • -x 计算时排除快照。

    例子:

    hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1
    

    查找文件

    find 命令可根据表达式查找指定的文件,并应用操作。如果不指定路径,则默认从当前目录查找。如果不指定操作,则默认打印。

    支持的表达式有:

    -name pattern:匹配文件名模式
    -iname pattern:匹配文件名模式,不区分大小写
    -print:打印
    -print0:打印,会添加 ASCII NULL 字符

    支持逻辑运算符,如 expression -a expressionexpression -and expression

    例子:

    hadoop fs -find / -name test -print
    

    下载到本地文件系统

    get 可以从其他文件系统下载到本地文件系统。

    hadoop fs -get [-ignoreCrc] [-crc] [-p] [-f] [-t <thread count>] [-q <thread pool queue size>] <src> ... <localdst>
    

    参数:

    • -p 保留文件的属性(如时间、所有权、权限等)。
    • -f 强制覆盖。
    • -ignoreCrc 跳过文件校验。
    • -crc 输出文件校验码。
    • -t <线程数量> 指定线程的数量,默认 1。
    • -q <线程池队列数量> 指定线程池中的队列数量,默认 1024,当线程数量大于 1 时有效。

    例子:

    hadoop fs -get /user/hadoop/file localfile
    hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile
    hadoop fs -get -t 10 hdfs://nn.example.com/user/hadoop/dir1 localdir
    hadoop fs -get -t 10 -q 2048 hdfs://nn.example.com/user/hadoop/dir* localdir
    

    查看文件列表

    ls 可以查看文件夹中文件的信息。默认按文件名排序。

    hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] <args>
    

    参数:

    • -C 只显示文件或文件夹的路径。
    • -d 将文件夹像普通文件一样展示。
    • -h 将大小格式化为易于理解的格式。
    • -q 将不能打印的字符显示为 ?。
    • -R 递归展示文件夹。
    • -t 按修改时间排序。
    • -S 按大小排序。
    • -r 倒转排序顺序。
    • -u 在显示和排序时 使用访问时间替换修改时间。
    • -e 显示文件和文件夹的 ERASURECODING_POLICY。

    例子:

    hadoop fs -ls /user/hadoop/file1
    hadoop fs -ls -e /ecdir
    

    创建文件夹

    mkdir 用来创建文件夹。

    hadoop fs -mkdir [-p] <paths>
    

    使用 -p 参数来创建父文件夹(如果不存在)。

    例子:

    hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
    hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir
    

    移动文件或文件夹

    mv 用来移动文件或文件夹,或者重命名,不支持跨文件系统移动。

    hadoop fs -mv URI [URI ...] <dest>
    

    例子:

    hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
    hadoop fs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1
    

    本地文件系统上传

    put 可以将本地文件系统中的文件上传到目标文件系统中。也支持从标准输入读取。

    hadoop fs -put [-f] [-p] [-l] [-d] [-t <thread count>] [-q <thread pool queue size>] [ - | <localsrc> ...] <dst>
    

    参数:

    • -p 保留文件的属性(如时间、所有权、权限等)。
    • -f 强制覆盖。
    • -l 允许数据节点延迟持久化文件,慎用。
    • -d 不创建临时文件。
    • -t <线程数量> 指定线程的数量,默认 1。
    • -q <线程池队列数量> 指定线程池中的队列数量,默认 1024,当线程数量大于 1 时有效。

    例子:

    hadoop fs -put localfile /user/hadoop/hadoopfile
    hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
    hadoop fs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile
    hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.
    hadoop fs -put -t 5 localdir hdfs://nn.example.com/hadoop/hadoopdir
    hadoop fs -put -t 10 -q 2048 localdir1 localdir2 hdfs://nn.example.com/hadoop/hadoopdir
    

    删除文件

    rm 可以删除文件。如果启用了回收站(默认不启用),则会将文件移动到回收站。

    hadoop fs -rm [-f] [-r |-R] [-skipTrash] [-safely] URI [URI ...]
    

    参数:

    • -f 强制删除。
    • -R/-r 递归删除目录及目录下的所有文件。
    • -skipTrash 不放入回收站。
    • -safely 可以避免误操作,当要删除的文件夹中的文件数量大于配置项 hadoop.shell.delete.limit.num.files(默认 100)时,会增加确认提示。

    例子:

    hadoop fs -rm hdfs://nn.example.com/file /user/hadoop/emptydir
    

    删除文件夹

    rmdir 可以删除文件夹。

    hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]
    

    --ignore-fail-on-non-empty 选项指定使用通配符时,当文件夹中有文件时不报错。

    例子:

    hadoop fs -rmdir /user/hadoop/emptydir
    

    显示文件统计信息

    stat 可以按指定格式输出文件或文件夹的统计信息。

    hadoop fs -stat [format] <path> ...
    

    支持如下格式:

    • %a:权限
    • %A:文件符号
    • %b:文件大小
    • %F:类型
    • %g:所有者组
    • %n:名称
    • %o:块大小
    • %r:副本
    • %u:所有者
    • %x:访问时间,UTC 格式
    • %X:访问时间,毫秒时间戳
    • %y:修改时间,UTC 格式
    • %Y:修改时间,毫秒时间戳

    例子:

    hadoop fs -stat "type:%F perm:%a %u:%g size:%b mtime:%y atime:%x name:%n" /file
    

    修改文件时间

    touch 可以修改文件的访问时间和修改时间,当文件不存在时,则创建一个空文件。

    hadoop fs -touch [-a] [-m] [-t TIMESTAMP] [-c] URI [URI ...]
    

    参数:

    • -a 仅更新访问时间
    • -m 仅更新修改时间
    • -t 指定特定的时间,默认是当前时间
    • -c 选项指定当不存在时不创建文件

    例子:

    hadoop fs -touch pathname
    hadoop fs -touch -m -t 20180809:230000 pathname
    hadoop fs -touch -t 20180809:230000 pathname
    hadoop fs -touch -a pathname
    

    支持其他文件系统

    Hadoop 也支持对象存储协议等其他文件系统,如 AWS S3,Azure ABFS 等,使用对应的协议。

    # 创建文件夹
    hadoop fs -mkdir s3a://bucket/datasets/
    
    # 从本地上传文件
    hadoop fs -put /datasets/example.orc s3a://bucket/datasets/
    
    # 更新文件时间
    hadoop fs -touch wasb://yourcontainer@youraccount.blob.core.windows.net/touched
    
    # 下载文件
    hadoop fs -get wasb://yourcontainer@youraccount.blob.core.windows.net/hello.txt /examples
    

    注意:使用 S3 等远程文件系统时,如果大量文件复制、移动或者查找的话会非常慢,对应的命令需谨慎。

  • 相关阅读:
    【Java多线程】线程同步机制(含同步方法)及不安全案例讲解
    Linux yum 运行时提示编码问题错误
    十四、MySql的用户管理
    .NET WebAPI 自定义 NullableConverter 解决可为空类型字段入参“”空字符触发转换异常问题
    ApiFox 基本使用教程(浅尝辄止,非广)
    JWT与token的区别
    如何测试 esp-matter_example_light 例程
    linux 下安装 Nginx 以及 开启文件下载目录 配置web路径
    js post下载文件
    [交互]实战问题2-413 Request Entity Too Large
  • 原文地址:https://blog.csdn.net/wwtg9988/article/details/140999014