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

HDFS 命令的基本语法格式为 hadoop fs [genericOptions] [command] [args],genericOptions 是可选的通用参数,如 -conf 指定配置文件、-D 设置属性等;command 是具体的操作命令;args 是命令所需的参数,对于 HDFS 特有的命令,也可直接使用 hadoop dfs,但推荐使用 hadoop fs 以保持兼容性。
文件与目录基本操作
创建目录
使用mkdir命令可在 HDFS 上创建目录,支持递归创建多级目录。hadoop fs -mkdir /input # 在根目录下创建 input 目录 hadoop fs -mkdir -p /data/logs # 递归创建多级目录,若父目录不存在则自动创建
上传本地文件到 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)
从 HDFS 下载文件到本地
get命令用于将 HDFS 文件或目录下载到本地文件系统。
(图片来源网络,侵删)hadoop fs -get /input/local.txt ./ # 下载 HDFS 文件到当前目录,可重命名 hadoop fs -get -r /data ./local_data # 递归下载 HDFS 目录到本地 local_data 目录
移动/重命名文件
mv命令用于移动 HDFS 中的文件或目录,也可实现重命名。hadoop fs -mv /input/file1.txt /output/ # 将 file1.txt 从 /input 移动到 /output hadoop fs -mv /input/old_name.txt /input/new_name.txt # 重命名文件
复制文件
cp命令用于复制 HDFS 中的文件或目录,支持递归复制。hadoop fs -cp /input/file1.txt /output/file1_copy.txt # 复制文件并重命名 hadoop fs -cp -r /input /backup # 递归复制 /input 目录到 /backup
删除文件或目录
rm命令用于删除 HDFS 中的文件或目录,-r或-R参数用于递归删除目录。hadoop fs -rm /input/file1.txt # 删除文件 hadoop fs -rm -r /temp # 递归删除 /temp 目录及其内容
查看文件内容
(图片来源网络,侵删)cat:查看文件内容,适合小文件。hadoop fs -cat /input/file1.txt。head:查看文件前几行内容,默认前 1000 行,可通过-n指定行数。hadoop fs -head -n 50 /input/file1.txt。tail:查看文件末尾几行内容,默认末尾 1000 行,-f参数可实时追踪文件更新(类似 Linux 的 tail -f)。
列出目录内容
ls命令用于列出 HDFS 目录下的文件和子目录,-R参数递归列出,-h参数以人类可读格式显示文件大小(如 KB、MB)。hadoop fs -ls /input # 列出 /input 目录内容 hadoop fs -ls -h -R /data # 递归列出 /data 目录内容,并显示友好格式文件大小
文件权限与所有者管理
HDFS 支持类似 Linux 的权限模型,包括文件所有者(Owner)、所属组(Group)和权限(读、写、执行)。
修改文件权限
chmod命令用于修改文件或目录权限。hadoop fs -chmod 755 /input/file1.txt # 设置权限为 rwxr-xr-x hadoop fs -chmod -R 750 /data # 递归设置 /data 目录及其内容权限为 rwxr-x---
修改所有者和所属组
chown和chgrp命令分别用于修改文件所有者和所属组。hadoop fs -chown user:group /input/file1.txt # 修改所有者为 user,所属组为 group hadoop fs -chgrp -R hadoop /data # 递归修改 /data 目录所属组为 hadoop
查看文件详细信息
ls -l可显示文件的权限、所有者、大小、修改时间等详细信息。hadoop fs -ls -l /input/file1.txt
文件块信息与存储管理
HDFS 将大文件分割为多个块(Block,默认 128MB)进行存储,可通过命令查看块信息。
查看文件块信息
hadoop fsck命令用于检查 HDFS 文件系统健康状况,也可查看文件块分布。hadoop fsck /input/file1.txt -files -blocks -locations # 查看 file1.txt 的块位置及存储节点
设置文件副本数
setrep命令用于修改文件的副本数(默认为 3)。hadoop fs -setrep 2 /input/large_file.txt # 将 large_file.txt 的副本数设置为 2
集群状态与磁盘空间查看
查看 HDFS 总体使用情况
df命令用于查看 HDFS 的磁盘使用情况,-h参数以友好格式显示。hadoop fs -df -h /
查看目录或文件大小
du命令用于计算文件或目录占用的空间,-s参数汇总显示,-h参数友好格式。hadoop fs -du -h /input # 查看 /input 目录总大小 hadoop fs -du -s -h /data/* # 汇总显示 /data 下各子目录大小
高级操作
到文件
appendToFile命令将本地文件内容追加到 HDFS 文件末尾。hadoop fs -appendToFile local_append.txt /input/file1.txt
统计文件行数
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 地址,从而了解文件的分布式存储细节。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/367942.html<
