Hadoop作为大数据处理的核心框架,其命令行工具是用户与Hadoop分布式文件系统(HDFS)及MapReduce等组件交互的重要方式,掌握Hadoop命令不仅能够帮助用户高效管理数据,还能深入理解分布式系统的运行机制,以下将从HDFS常用命令、MapReduce命令、Hadoop集群管理命令以及高级操作技巧四个方面,详细阐述Hadoop命令的使用方法及注意事项。

HDFS常用命令
HDFS是Hadoop的分布式文件系统,其命令格式为hadoop fs [command] [args]
,部分命令也支持hdfs dfs
前缀,以下是核心命令的详解:
文件与目录操作
ls
:列出指定路径下的文件和目录。hadoop fs /user
将显示/user
下的所有文件和子目录,若添加-R
参数,可递归列出所有子目录内容。mkdir
:创建目录。hadoop fs -mkdir /input
在根目录下创建input
文件夹,使用-p
参数可创建多级目录,如hadoop fs -mkdir -p /data/2023
。put
:将本地文件上传至HDFS。hadoop fs -put local.txt /input/
将本地local.txt
上传至HDFS的/input
目录,若目标路径已存在同名文件,操作会失败。get
:从HDFS下载文件到本地。hadoop fs -get /output/result.txt local_result.txt
将HDFS上的result.txt
下载至本地并重命名。rm
:删除文件或目录。hadoop fs -rm /input/temp.txt
删除单个文件;hadoop fs -rm -r /data
递归删除/data
目录及其所有内容。mv
:移动或重命名文件/目录。hadoop fs -mv /input/file1.txt /output/
将file1.txt
从input
移动至output
目录。cp
:复制文件或目录。hadoop fs -cp /input/file1.txt /output/file1_copy.txt
在output
目录下创建副本。
文件信息查看与统计
du
:显示目录或文件所占空间大小。hadoop fs -du /input
返回/input
下每个文件的大小(字节),使用-h
参数可显示人类可读格式(如KB、MB)。df
:查看HDFS整体空间使用情况。hadoop fs -df /
显示根目录的已用空间、剩余空间和容量百分比。cat
:查看文件内容。hadoop fs -cat /output/result.txt
在终端打印文件内容,适合小文件查看。text
:将文本文件或压缩文件(如.gz)转换为文本格式输出。hadoop fs -text /input/log.gz
可解压并显示gzip文件内容。
权限与所有者管理
chmod
:修改文件权限。hadoop fs -chmod 755 /input/script.sh
将文件权限设置为所有者可读写执行,其他用户可读执行。chown
:修改文件所有者。hadoop fs -chown user:group /output/result.txt
将文件所有者改为user
,所属组改为group
。
MapReduce命令
MapReduce是Hadoop的核心计算模型,其命令主要通过hadoop jar
执行用户程序:
jar
:运行MapReduce作业。hadoop jar wordcount.jar WordCount /input /output
执行wordcount.jar
中的WordCount
类,输入路径为/input
,输出路径为/output
。jar
参数说明:-D
:配置作业属性,如-D mapreduce.job.reduces=4
设置Reducer数量为4。-files
:分发本地依赖文件,如-files config.txt
将config.txt
分发到各节点。-archives
:分发归档文件(如.tar.gz),适用于依赖第三方库的场景。
Hadoop集群管理命令
集群管理通常通过hadoop
脚本或yarn
命令实现:
yarn node -list
:列出集群中所有活跃的NodeManager节点。yarn application -list
:显示当前运行的所有应用,添加-appStates ALL
可查看历史应用。yarn application -kill <appId>
:终止指定ID的应用。hadoop job -list
(旧版):列出MapReduce作业(已被YARN命令取代)。hadoop job -kill <jobId>
:终止指定ID的作业。
高级操作技巧
- 文件压缩:上传大文件时可启用压缩减少存储空间。
hadoop fs -put -z local.txt /input/
上传时启用gzip压缩。 - 并行操作:使用
-threads
参数(如hadoop fs -put -threads 10 local_dir /input/
)提高文件上传/下载并行度。 - 快照管理:HDFS支持快照功能,通过
hdfs dfsadmin -allowSnapshot /path
启用快照,再通过hdfs dfs -createSnapshot /path snapshot_name
创建快照,便于数据备份与恢复。
命令使用注意事项
- 路径格式:HDFS路径需以开头,如
/input/file.txt
,避免使用相对路径。 - 权限问题:操作文件需确保当前用户对目标路径有足够权限,否则会报
Permission denied
错误。 - 数据一致性:在写入或删除操作后,建议使用
hadoop fs -stat
检查文件状态,确保操作成功。 - 性能优化:处理大文件时,避免频繁使用
cat
或text
命令,以免因IO压力影响集群性能。
以下为Hadoop常用命令速查表:

功能分类 | 命令 | 示例 | 说明 |
---|---|---|---|
文件列表 | ls |
hadoop fs -ls /input |
列出目录内容 |
创建目录 | mkdir |
hadoop fs -mkdir -p /data/2023 |
创建多级目录 |
上传文件 | put |
hadoop fs -put local.txt /input/ |
本地文件上传至HDFS |
下载文件 | get |
hadoop fs -get /output/result.txt . |
下载文件到当前目录 |
删除文件 | rm |
hadoop fs -rm -r /data |
递归删除目录 |
移动/重命名 | mv |
hadoop fs -mv /input/file1.txt /output/ |
移动文件或重命名 |
查看文件大小 | du |
hadoop fs -du -h /input |
显示文件大小(人类可读格式) |
查看文件内容 | cat |
hadoop fs -cat /output/result.txt |
打印文件内容 |
运行MapReduce | jar |
hadoop jar wordcount.jar WordCount /input /output |
执行MapReduce作业 |
查看应用列表 | yarn application -list |
yarn application -list -appStates RUNNING |
查看运行中的应用 |
相关问答FAQs
Q1: Hadoop命令执行时出现“FileNotFound”错误,可能的原因及解决方法?
A: 可能原因包括:HDFS路径错误、文件不存在或权限不足,解决方法:
- 检查路径是否正确,确保以开头且文件名拼写无误;
- 使用
hadoop fs -ls
确认文件是否存在; - 使用
hadoop fs -chmod
调整文件权限,或使用具有足够权限的用户执行命令。
Q2: 如何优化HDFS文件上传/下载的性能?
A: 可通过以下方式优化:
- 使用
-threads
参数增加并行度,如hadoop fs -put -threads 20 local_dir /input/
; - 启用文件压缩(如gzip或snappy),减少数据传输量;
- 避免在高峰期执行大文件操作,或使用
distcp
工具实现集群间并行复制。