Hadoop 2.x 引入了 YARN (Yet Another Resource Negotiator) 架构,这使得命令也分为两大类:

- HDFS (Hadoop Distributed File System) 命令:用于管理分布式文件系统。
- YARN 命令:用于管理集群资源和运行计算任务(如 MapReduce、Spark 等)。
这些命令都通过 hadoop 这个统一的脚本来调用,格式为 hadoop [command] [subcommand] [options]。
HDFS 命令
HDFS 命令用于与 Hadoop 文件系统进行交互,类似于 Linux 的文件命令,但作用于分布式环境。
基础文件/目录操作
| 命令 | 描述 | 示例 |
|---|---|---|
hadoop fs -ls |
列出指定路径下的文件和目录。 | hadoop fs -ls /user/hadoop |
hadoop fs -mkdir |
创建目录。 | hadoop fs -mkdir /data/input |
hadoop fs -put |
将本地文件或目录上传到 HDFS。 | hadoop fs -put local.txt /data/input/ |
hadoop fs -get |
从 HDFS 下载文件或目录到本地。 | hadoop fs -get /data/output/result.txt . |
hadoop fs -cp |
在 HDFS 内部复制文件或目录。 | hadoop fs -cp /data/input/file1.txt /data/backup/ |
hadoop fs -mv |
在 HDFS 内部移动/重命名文件或目录。 | hadoop fs -mv /data/input/file1.txt /data/processed/ |
hadoop fs -rm |
删除 HDFS 上的文件或空目录。 | hadoop fs -rm /data/input/file1.txt |
hadoop fs -rm -r |
递归删除 HDFS 上的目录及其所有内容。 | hadoop fs -rm -r /data/input |
hadoop fs -cat |
显示文件内容到终端。 | hadoop fs -cat /data/input/file1.txt |
hadoop fs -du |
显示文件或目录的大小(以字节为单位)。 | hadoop fs -du /data/input |
hadoop fs -du -s |
显示文件或目录的总大小(摘要信息)。 | hadoop fs -du -s /data/input |
hadoop fs -du -h |
以人类可读的方式(KB, MB, GB)显示文件大小。 | hadoop fs -du -h /data/input |
hadoop fs -chmod |
修改文件或目录的权限。 | hadoop fs -chmod 755 /data/input |
hadoop fs -chown |
修改文件或目录的所有者。 | hadoop fs -chown hadoop:hadoop /data/input |
HDFS 特有高级操作
| 命令 | 描述 | 示例 |
|---|---|---|
hadoop fs -setrep |
设置文件的副本数。 | hadoop fs -setrep 3 /data/input/large_file.txt |
hadoop fs -expunge |
清空 HDFS 的垃圾回收站。 | hadoop fs -expunge |
hadoop fs -df |
显示 HDFS 的整体磁盘使用情况。 | hadoop fs -df -h |
hadoop fs -touchz |
创建一个空文件。 | hadoop fs -touchz /data/input/empty_file.txt |
hadoop fs -text |
将各种格式(如 SequenceFile, Avro, gzip)的文件以文本形式输出。 | hadoop fs -text /data/input/compressed.gz |
YARN 命令
YARN 命令用于管理集群资源和作业,主要通过 yarn 脚本调用,但也可以通过 hadoop 调用(如 hadoop jar)。
YARN 集群管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
yarn node -list |
列出集群中所有正在运行 NodeManager 的节点。 | yarn node -list |
yarn node -status |
查看指定节点的详细状态(如资源、容器等)。 | yarn node -status <node-id> |
yarn rmadmin -refreshNodes |
刷新节点列表,使新增或下线的节点生效。 | yarn rmadmin -refreshNodes |
yarn queue -list |
列出集群中所有的队列。 | yarn queue -list |
yarn application -list |
列出所有正在运行和已完成的作业。 | yarn application -list -appStates ALL |
yarn application -kill |
终止一个正在运行的作业。 | yarn application -kill <application-id> |
yarn application -status |
查看指定作业的详细状态。 | yarn application -status <application-id> |
yarn application -historyServer |
启动历史服务器,查看已完成的作业日志和详情。 | 通常作为守护进程启动 yarn --daemon start historyserver |
提交和运行作业 (MapReduce 示例)
这是最常用的 YARN 命令,用于提交你的计算任务。

| 命令 | 描述 | 示例 |
|---|---|---|
hadoop jar |
核心命令,用于提交一个 JAR 包格式的作业到 YARN。 | hadoop jar my-mr-job.jar com.example.MyDriver /input/path /output/path |
yarn jar |
与 hadoop jar 功能完全相同,是 hadoop jar 的一个别名。 |
yarn jar my-mr-job.jar com.example.MyDriver /input/path /output/path |
hadoop jar 命令详解:
hadoop jar <jar-file> <main-class> <args>
<jar-file>: 你的应用程序打包成的 JAR 文件路径。<main-class>: JAR 包中包含main方法的 Java 类,这是作业的驱动程序。<args>: 传递给主类的参数,通常是输入路径和输出路径。
示例流程:
- 准备数据:
hadoop fs -put /local/input /data/input - 运行作业:
hadoop jar hadoop-mapreduce-examples-2.x.x.jar wordcount /data/input /data/output - 查看结果:
hadoop fs -cat /data/output/part-r-00000
Hadoop 生态系统常用命令
Hadoop 2.x 生态系统中其他组件也提供了自己的命令行工具。

Hive 命令
通过 hive 脚本进入交互式 shell,或通过 hive -e 执行脚本。
| 命令 | 描述 | 示例 |
|---|---|---|
hive |
启动 Hive 交互式命令行界面。 | hive |
hive -e |
执行一条或多条 HiveQL 语句。 | hive -e "SELECT COUNT(*) FROM my_table;" |
hive -f |
执行一个包含 HiveQL 脚本的文件。 | hive -f my_script.hql |
HBase 命令
通过 hbase shell 进入交互式 shell。
| 命令 | 描述 | 示例 |
|---|---|---|
hbase shell |
启动 HBase 交互式命令行界面。 | hbase shell |
create 'table_name', 'column_family' |
创建一个 HBase 表。 | create 'users', 'info', 'data' |
list |
列出所有 HBase 表。 | list |
put 'table_name', 'row_key', 'column_family:qualifier', 'value' |
向表中插入数据。 | put 'users', 'user1', 'info:name', 'Alice' |
get 'table_name', 'row_key' |
获取指定行键的数据。 | get 'users', 'user1' |
scan 'table_name' |
扫描表中的所有数据。 | scan 'users' |
disable 'table_name' |
禁用表。 | disable 'users' |
drop 'table_name' |
删除表(必须先禁用)。 | drop 'users' |
Spark 命令
Spark 运行在 YARN 之上,使用 spark-submit 命令提交作业。
| 命令 | 描述 | 示例 |
|---|---|---|
spark-submit |
核心命令,用于提交 Spark 应用程序。 | spark-submit --class com.example.MySparkApp --master yarn my-spark-app.jar /input /output |
spark-submit 常用选项:
--class: 应用程序的入口类。--master: 指定集群管理器,如yarn,spark://...。--deploy-mode: 部署模式,client或cluster。--driver-memory: Driver 进程的内存。--executor-memory: 每个 Executor 的内存。--executor-cores: 每个 Executor 的 CPU 核心数。
通用与管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
hadoop version |
查看 Hadoop 版本信息。 | hadoop version |
hadoop classpath |
打印 Hadoop 的类路径信息,用于调试和开发。 | hadoop classpath |
hadoop daemonstatus |
检查 Hadoop 守护进程的状态。 | hadoop-daemon.sh status namenode |
hadoop start/stop |
启动或停止 Hadoop 守护进程。 | hadoop-daemon.sh start namenode |
总结与提示
- 统一入口:
hadoop fs是 HDFS 文件操作的统一入口。yarn是 YARN 资源和作业管理的统一入口。 - 查看帮助: 任何命令都可以通过
-help参数查看详细用法。hadoop fs -ls -helpyarn application -helphadoop jar -help
- 日志查看: YARN 作业的日志会集中存储在历史服务器上,作业运行时,也可以通过
yarn logs -applicationId <app_id>命令临时查看日志。 - 权限: 执行 HDFS 命令需要有相应的文件系统权限,执行 YARN 命令需要有提交作业到队列的权限。
- Hadoop 3.x: Hadoop 3.x 在 Hadoop 2.x 的基础上增加了如纠删码等新特性,但核心命令基本保持兼容,上述命令在 Hadoop 3.x 中同样适用。
