菜鸟科技网

Hadoop2.7.3 HDFS命令有哪些常用操作?

Hadoop 2.7.3 作为 Hadoop 生态中的经典稳定版本,其 HDFS(Hadoop Distributed File System)命令是用户进行分布式文件管理操作的核心工具,掌握这些命令对于日常的 Hadoop 运维、数据处理及开发至关重要,以下将详细介绍 Hadoop 2.7.3 中常用的 HDFS 命令,涵盖文件与目录的基本操作、权限管理、块信息查看、集群状态监控等多个维度,并结合实例说明其使用方法。

Hadoop2.7.3 HDFS命令有哪些常用操作?-图1
(图片来源网络,侵删)

HDFS 命令的基本语法格式为 hadoop fs [genericOptions] [command] [args]genericOptions 是可选的通用参数,如 -conf 指定配置文件、-D 设置属性等;command 是具体的操作命令;args 是命令所需的参数,对于 HDFS 特有的命令,也可直接使用 hadoop dfs,但推荐使用 hadoop fs 以保持兼容性。

文件与目录基本操作

  1. 创建目录
    使用 mkdir 命令可在 HDFS 上创建目录,支持递归创建多级目录。

    hadoop fs -mkdir /input          # 在根目录下创建 input 目录
    hadoop fs -mkdir -p /data/logs    # 递归创建多级目录,若父目录不存在则自动创建
  2. 上传本地文件到 HDFS
    put 命令用于将本地文件或目录上传到 HDFS 指定路径。

    hadoop fs -put local.txt /input/   # 上传本地文件 local.txt 到 HDFS 的 /input 目录
    hadoop fs -put -f local_dir /data  # 上传本地目录 local_dir 到 HDFS 的 /data,若目标存在则覆盖(-f)
  3. 从 HDFS 下载文件到本地
    get 命令用于将 HDFS 文件或目录下载到本地文件系统。

    Hadoop2.7.3 HDFS命令有哪些常用操作?-图2
    (图片来源网络,侵删)
    hadoop fs -get /input/local.txt ./   # 下载 HDFS 文件到当前目录,可重命名
    hadoop fs -get -r /data ./local_data # 递归下载 HDFS 目录到本地 local_data 目录
  4. 移动/重命名文件
    mv 命令用于移动 HDFS 中的文件或目录,也可实现重命名。

    hadoop fs -mv /input/file1.txt /output/   # 将 file1.txt 从 /input 移动到 /output
    hadoop fs -mv /input/old_name.txt /input/new_name.txt  # 重命名文件
  5. 复制文件
    cp 命令用于复制 HDFS 中的文件或目录,支持递归复制。

    hadoop fs -cp /input/file1.txt /output/file1_copy.txt  # 复制文件并重命名
    hadoop fs -cp -r /input /backup  # 递归复制 /input 目录到 /backup
  6. 删除文件或目录
    rm 命令用于删除 HDFS 中的文件或目录,-r-R 参数用于递归删除目录。

    hadoop fs -rm /input/file1.txt      # 删除文件
    hadoop fs -rm -r /temp              # 递归删除 /temp 目录及其内容
  7. 查看文件内容

    Hadoop2.7.3 HDFS命令有哪些常用操作?-图3
    (图片来源网络,侵删)
    • cat:查看文件内容,适合小文件。hadoop fs -cat /input/file1.txt
    • head:查看文件前几行内容,默认前 1000 行,可通过 -n 指定行数。hadoop fs -head -n 50 /input/file1.txt
    • tail:查看文件末尾几行内容,默认末尾 1000 行,-f 参数可实时追踪文件更新(类似 Linux 的 tail -f)。
  8. 列出目录内容
    ls 命令用于列出 HDFS 目录下的文件和子目录,-R 参数递归列出,-h 参数以人类可读格式显示文件大小(如 KB、MB)。

    hadoop fs -ls /input                # 列出 /input 目录内容
    hadoop fs -ls -h -R /data           # 递归列出 /data 目录内容,并显示友好格式文件大小

文件权限与所有者管理

HDFS 支持类似 Linux 的权限模型,包括文件所有者(Owner)、所属组(Group)和权限(读、写、执行)。

  1. 修改文件权限
    chmod 命令用于修改文件或目录权限。

    hadoop fs -chmod 755 /input/file1.txt  # 设置权限为 rwxr-xr-x
    hadoop fs -chmod -R 750 /data         # 递归设置 /data 目录及其内容权限为 rwxr-x---
  2. 修改所有者和所属组
    chownchgrp 命令分别用于修改文件所有者和所属组。

    hadoop fs -chown user:group /input/file1.txt  # 修改所有者为 user,所属组为 group
    hadoop fs -chgrp -R hadoop /data             # 递归修改 /data 目录所属组为 hadoop
  3. 查看文件详细信息
    ls -l 可显示文件的权限、所有者、大小、修改时间等详细信息。

    hadoop fs -ls -l /input/file1.txt

文件块信息与存储管理

HDFS 将大文件分割为多个块(Block,默认 128MB)进行存储,可通过命令查看块信息。

  1. 查看文件块信息
    hadoop fsck 命令用于检查 HDFS 文件系统健康状况,也可查看文件块分布。

    hadoop fsck /input/file1.txt -files -blocks -locations  # 查看 file1.txt 的块位置及存储节点
  2. 设置文件副本数
    setrep 命令用于修改文件的副本数(默认为 3)。

    hadoop fs -setrep 2 /input/large_file.txt  # 将 large_file.txt 的副本数设置为 2

集群状态与磁盘空间查看

  1. 查看 HDFS 总体使用情况
    df 命令用于查看 HDFS 的磁盘使用情况,-h 参数以友好格式显示。

    hadoop fs -df -h /
  2. 查看目录或文件大小
    du 命令用于计算文件或目录占用的空间,-s 参数汇总显示,-h 参数友好格式。

    hadoop fs -du -h /input              # 查看 /input 目录总大小
    hadoop fs -du -s -h /data/*          # 汇总显示 /data 下各子目录大小

高级操作

  1. 到文件
    appendToFile 命令将本地文件内容追加到 HDFS 文件末尾。

    hadoop fs -appendToFile local_append.txt /input/file1.txt
  2. 统计文件行数
    count 命令统计指定目录下的文件数量、目录数量和总文件大小。

    hadoop fs -count /data

以下为部分常用 HDFS 命令的总结表格:

命令 功能描述 常用示例
mkdir 创建目录 hadoop fs -mkdir -p /data/logs
put 上传本地文件到 HDFS hadoop fs -put local.txt /input/
get 从 HDFS 下载文件到本地 hadoop fs -get /input/file1.txt ./
mv 移动/重命名文件 hadoop fs -mv /input/file1.txt /output/
cp 复制文件 hadoop fs -cp -r /input /backup
rm 删除文件或目录 hadoop fs -rm -r /temp
cat 查看文件内容 hadoop fs -cat /input/file1.txt
ls 列出目录内容 hadoop fs -ls -h -R /data
chmod 修改文件权限 hadoop fs -chmod 755 /input/file1.txt
chown 修改文件所有者 hadoop fs -chown user:group /input/file1.txt
fsck 检查文件系统及查看块信息 hadoop fsck /input/file1.txt -blocks
setrep 设置文件副本数 hadoop fs -setrep 2 /input/large_file.txt
df 查看 HDFS 磁盘使用情况 hadoop fs -df -h /
du 查看文件/目录大小 hadoop fs -du -h /input
appendToFile 追加本地文件内容到 HDFS 文件 hadoop fs -appendToFile local_append.txt /input/file1.txt
count 统计目录下文件数、大小等 hadoop fs -count /data

在实际使用中,需注意 HDFS 命令对路径的区分(HDFS 路径以 开头,本地路径需使用 file:// 前缀或省略),以及权限问题(执行命令的用户需对目标路径有相应操作权限),对于大文件操作,建议在非高峰期执行以避免影响集群性能。

相关问答 FAQs

问题 1:执行 hadoop fs -put 命令上传大文件时,提示“Disk is full”错误,但 HDFS 集群还有剩余空间,可能是什么原因?
解答:该错误通常不是指 HDFS 存储空间不足,而是指 DataNode 本地磁盘空间不足,HDFS 文件块存储在 DataNode 的本地磁盘上,若某个 DataNode 的磁盘空间已满,会导致上传失败,可通过 hadoop dfsadmin -report 查看各 DataNode 的磁盘使用情况,清理对应 DataNode 的本地磁盘或增加磁盘空间即可解决。

问题 2:如何查看 HDFS 中某个文件的存储位置(即分布在哪些 DataNode 上)?
解答:可通过 hadoop fsck 命令结合 -locations 参数查看文件的块存储位置,执行 hadoop fsck /path/to/your/file -files -blocks -locations,命令会输出文件的块信息(Block ID)、大小以及每个块所在的 DataNode 主机名和 IP 地址,从而了解文件的分布式存储细节。

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