Hadoop作为分布式系统基础框架,其基本操作命令主要通过HDFS(Hadoop Distributed File System)和YARN(Yet Another Resource Negotiator)两大核心组件实现,涵盖文件管理、任务提交、集群状态查看等核心功能,以下从HDFS shell命令、YARN命令及Hadoop通用命令三个维度展开说明,辅以表格归纳常用操作,帮助系统掌握Hadoop日常运维与开发技能。

HDFS Shell操作命令
HDFS是Hadoop的存储基石,其命令语法类似Linux Shell,支持文件与目录的创建、删除、查看、移动等基础操作,同时针对分布式特性提供权限控制、副本管理等功能,常用命令如下:
-
文件上传与下载
hadoop fs -put local_file hdfs_path
:将本地文件上传至HDFS指定路径,如hadoop fs -put test.txt /input
;
hadoop fs -get hdfs_path local_path
:从HDFS下载文件到本地,如hadoop fs -get /output/result.txt ./
;
hadoop fs -copyFromLocal local_file hdfs_path
:功能与put
类似,但会校验本地文件是否存在,适合频繁操作。 -
目录与文件管理
hadoop fs -mkdir -p hdfs_dir
:递归创建HDFS目录,-p
参数可自动创建父目录;
hadoop fs -ls [-R] hdfs_path
:列出目录内容,-R
递归显示子目录,如hadoop fs -ls /user
;
hadoop fs -rm [-r] hdfs_path
:删除文件或目录,-r
用于删除非空目录,如hadoop fs -rm -r /old_data
;
hadoop fs -mv src_path dest_path
:移动或重命名文件/目录,如hadoop fs -mv /input/test.txt /input/backup.txt
。 -
文件查看与权限设置
hadoop fs -cat hdfs_file
:查看文件内容,类似Linux的cat
,如hadoop fs -cat /output/part-r-00000
;
hadoop fs -text hdfs_file
:以文本格式查看压缩文件(如.gz、.bz2);
hadoop fs -chown user:group hdfs_path
:修改文件所有者与所属组,如hadoop fs -chown hadoop:hadoop /data
;
hadoop fs -chmod 755 hdfs_path
:设置文件权限,如hadoop fs -chmod 644 /input/config.txt
。(图片来源网络,侵删) -
副本与磁盘空间管理
hadoop fs -setrep 3 hdfs_file
:设置文件副本数,如hadoop fs -setrep 2 /large_file
(默认副本数为3);
hadoop fs -du [-s] [-h] hdfs_path
:查看文件大小,-s
汇总目录总大小,-h
以人类可读格式显示(如KB/MB),如hadoop fs -du -h /user
。
YARN资源管理与任务提交命令
YARN负责Hadoop集群资源调度与任务监控,常用命令用于查看集群状态、提交MapReduce任务及管理应用程序。
-
集群状态查看
yarn node -list
:列出集群中所有NodeManager节点状态;
yarn application -list
:显示当前运行中的应用程序列表,-appTypes MAPREDUCE
可筛选MapReduce任务;
yarn application -status application_id
:查看指定应用的状态(如application_1234567890123_0001
)。 -
任务提交与终止
yarn jar my_job.jar MainClass input_path output_path
:提交MapReduce任务,需指定JAR包主类、输入输出路径;
yarn application -kill application_id
:终止运行中的应用程序,如yarn application -kill application_1234567890123_0001
。(图片来源网络,侵删) -
日志查看
yarn logs -applicationId application_id
:获取应用程序的运行日志,便于调试任务失败问题。
Hadoop通用辅助命令
hadoop version
:查看Hadoop版本信息;hadoop classpath
:输出Hadoop类路径,用于配置环境变量;hadoop fs -help [command]
:查看命令详细帮助,如hadoop fs -help put
。
常用Hadoop命令速查表
功能分类 | 命令示例 | 说明 |
---|---|---|
文件上传 | hadoop fs -put test.txt /input |
本地文件上传至HDFS |
目录创建 | hadoop fs -mkdir -p /data/test |
递归创建多级目录 |
文件查看 | hadoop fs -cat /output/result.txt |
查看文件内容 |
文件删除 | hadoop fs -rm -r /old_data |
删除目录及其子文件 |
权限修改 | hadoop fs -chmod 755 /script.sh |
设置文件权限(rwxr-xr-x) |
副本设置 | hadoop fs -setrep 2 /large_file |
修改文件副本数为2 |
任务提交 | yarn jar wordcount.jar input output |
运行MapReduce任务 |
应用状态查看 | yarn application -list |
列出所有应用程序 |
相关问答FAQs
Q1: HDFS中文件上传失败,提示“Permission denied”,如何解决?
A: 主要原因是权限不足,可通过两种方式解决:① 使用hadoop fs -chown
修改文件所有者,如hadoop fs -chown $USER:$USER /target_dir
;② 在core-site.xml中配置权限检查为严格模式(dfs.permissions.enabled=true
),并确保用户对目标目录有执行权限(chmod 755
)。
Q2: 提交MapReduce任务后,YARN显示“Container killed on request”,可能的原因及排查步骤?
A: 通常由资源不足或任务内存溢出导致:① 检查YARN资源配置(yarn.scheduler.maximum-allocation-mb
),确保申请内存不超过节点上限;② 查看任务日志(yarn logs -applicationId <app_id>
),确认是否因代码逻辑错误导致内存溢出;③ 调整MapReduce任务内存参数(如mapreduce.map.memory.mb
),适当增加内存分配或优化算法减少内存消耗。