在Hadoop 2.x生态系统中,命令行工具是与HDFS、YARN等组件交互的核心方式,通过这些命令可以实现文件管理、作业提交、集群监控等操作,以下将详细解析Hadoop 2.x中常用的命令,涵盖HDFS和YARN两大核心模块,并结合实际场景说明其用法与参数。

HDFS命令操作
HDFS(Hadoop Distributed File System)作为分布式存储基础,提供了丰富的命令来管理文件和目录,以下是常用HDFS命令的分类说明:
基础文件操作
-
hdfs dfs -ls <path>
列出指定路径下的文件和目录,例如hdfs dfs -ls /
可查看HDFS根目录内容,支持-R
参数递归列出子目录,-h
参数以人类可读格式显示文件大小(如KB、MB)。 -
hdfs dfs -mkdir <path>
创建目录,例如hdfs dfs -mkdir /user/test
会在HDFS上创建test目录,若需创建多级目录,需使用-p
参数,如hdfs dfs -mkdir -p /user/test/data
。 -
hdfs dfs -put <local> <hdfs>
将本地文件或目录上传至HDFS,例如hdfs dfs -put local.txt /user/test/
上传文件,hdfs dfs -put local_dir/ /user/test/
上传整个目录,支持-f
参数覆盖已存在文件。(图片来源网络,侵删) -
hdfs dfs -get <hdfs> <local>
从HDFS下载文件到本地,例如hdfs dfs -get /user/test/local.txt ./
下载文件至当前目录,与put
类似,支持-f
覆盖。 -
hdfs dfs -rm [-r] <path>
删除文件或目录。-r
或-R
用于递归删除目录及其内容,例如hdfs dfs -rm -r /user/test
。 -
hdfs dfs -mv <src> <dst>
移动或重命名文件/目录,例如hdfs dfs -mv /user/test/file1.txt /user/test/newfile.txt
重命名文件,或移动至其他目录。
文件权限与所有者管理
-
hdfs dfs -chown [-R] <owner>:<group> <path>
修改文件所有者和所属组,例如hdfs dfs -chown hadoop:hadoop /user/test/file.txt
将文件权限赋予hadoop用户和组,-R
递归修改。(图片来源网络,侵删) -
hdfs dfs -chmod [-R] <mode> <path>
修改文件权限,例如hdfs dfs -chmod 755 /user/test
设置权限为rwxr-xr-x,-R
递归应用。
文件查看与统计
-
hdfs dfs -cat <path>
查看文件内容,例如hdfs dfs -cat /user/test/file.txt
会在终端输出文件内容,适合小文件查看。 -
hdfs dfs -du [-s] [-h] <path>
统计文件大小。-s
汇总目录总大小,-h
以可读格式显示,例如hdfs dfs -du -sh /user/test
显示test目录总大小。 -
hdfs dfs -count [-h] [-q] <path>
统计目录下的文件数、目录数和总字节数。-q
显示配额信息,-h
可读格式。
高级操作
-
hdfs dfs -cp [-f] <src> <dst>
复制文件或目录。-f
覆盖目标文件,例如hdfs dfs -cp /user/test/file1.txt /user/test/backup/
。 -
hdfs dfs -touchz <path>
创建空文件,例如hdfs dfs -touchz /user/test/empty.txt
。 -
hdfs dfs -checksum <path>
计算文件校验和,例如hdfs dfs -checksum /user/test/file.txt
输出文件的CRC32校验值。
YARN命令操作
YARN(Yet Another Resource Negotiator)负责集群资源管理和作业调度,以下为常用YARN命令:
作业提交与管理
-
yarn jar <jar> <main-class> [args]
提交MapReduce或Spark作业,例如yarn jar wordcount.jar WordCount /input /output
提交WordCount作业。 -
yarn application -kill <app-id>
终止指定作业,例如yarn application -kill application_1234567890012_0001
。 -
yarn application -status <app-id>
查看作业状态,例如yarn application -status application_1234567890012_0001
返回作业的运行状态、进度等信息。
集群资源监控
-
yarn node -list
列出集群中所有NodeManager节点及其状态(如活跃、不可用)。 -
yarn node -status <node-id>
查看指定NodeManager的详细信息,包括资源使用情况、运行中的容器数等。 -
yarn queue -status <queue-name>
查看指定队列的资源使用情况,如内存、CPU配额及已用资源。
日志查看
yarn logs -applicationId <app-id>
查看作业的运行日志,例如yarn logs -applicationId application_1234567890012_0001
输出标准输出和错误日志。
命令使用场景示例
以下通过表格对比常见操作场景下的命令选择:
操作场景 | HDFS命令示例 | YARN命令示例 |
---|---|---|
上传本地文件到HDFS | hdfs dfs -put local.txt /input/ |
|
从HDFS下载文件到本地 | hdfs dfs -get /input/result.txt ./ |
|
提交MapReduce作业 | yarn jar wordcount.jar WordCount /input /output |
|
查看作业运行状态 | yarn application -status <app-id> |
|
删除HDFS目录 | hdfs dfs -rm -r /old_data/ |
|
查看集群节点状态 | yarn node -list |
相关问答FAQs
问题1:HDFS中-put
和-copyFromLocal
命令有什么区别?
解答:hdfs dfs -put
和hdfs dfs -copyFromLocal
功能基本相同,均用于将本地文件上传至HDFS,区别在于-put
还支持从HDFS到HDFS的文件复制(如hdfs dfs -put /src /dst
),而-copyFromLocal
仅支持本地到HDFS的上传,语义更明确,可避免误操作。
问题2:YARN作业运行失败后,如何通过命令定位问题?
解答:首先通过yarn application -status <app-id>
查看作业失败状态(如FAILED),然后使用yarn logs -applicationId <app-id>
获取作业日志,日志中会包含具体的错误信息,如内存溢出(OOM)、文件路径不存在、类未找到等异常,若日志过多,可结合grep
过滤关键字,如yarn logs -applicationId <app-id> | grep "Exception"
。