菜鸟科技网

Hadoop2命令有哪些常用操作?

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

Hadoop2命令有哪些常用操作?-图1
(图片来源网络,侵删)
  1. HDFS (Hadoop Distributed File System) 命令:用于管理分布式文件系统。
  2. 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 命令,用于提交你的计算任务。

Hadoop2命令有哪些常用操作?-图2
(图片来源网络,侵删)
命令 描述 示例
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>: 传递给主类的参数,通常是输入路径和输出路径。

示例流程:

  1. 准备数据: hadoop fs -put /local/input /data/input
  2. 运行作业: hadoop jar hadoop-mapreduce-examples-2.x.x.jar wordcount /data/input /data/output
  3. 查看结果: hadoop fs -cat /data/output/part-r-00000

Hadoop 生态系统常用命令

Hadoop 2.x 生态系统中其他组件也提供了自己的命令行工具。

Hadoop2命令有哪些常用操作?-图3
(图片来源网络,侵删)

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: 部署模式,clientcluster
  • --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

总结与提示

  1. 统一入口: hadoop fs 是 HDFS 文件操作的统一入口。yarn 是 YARN 资源和作业管理的统一入口。
  2. 查看帮助: 任何命令都可以通过 -help 参数查看详细用法。
    • hadoop fs -ls -help
    • yarn application -help
    • hadoop jar -help
  3. 日志查看: YARN 作业的日志会集中存储在历史服务器上,作业运行时,也可以通过 yarn logs -applicationId <app_id> 命令临时查看日志。
  4. 权限: 执行 HDFS 命令需要有相应的文件系统权限,执行 YARN 命令需要有提交作业到队列的权限。
  5. Hadoop 3.x: Hadoop 3.x 在 Hadoop 2.x 的基础上增加了如纠删码等新特性,但核心命令基本保持兼容,上述命令在 Hadoop 3.x 中同样适用。
分享:
扫描分享到社交APP
上一篇
下一篇