菜鸟科技网

Hadoop2常用命令有哪些?

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

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

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参数覆盖已存在文件。

    Hadoop2常用命令有哪些?-图2
    (图片来源网络,侵删)
  • 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递归修改。

    Hadoop2常用命令有哪些?-图3
    (图片来源网络,侵删)
  • 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 -puthdfs 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"

分享:
扫描分享到社交APP
上一篇
下一篇