菜鸟科技网

如何执行Hadoop命令?

执行Hadoop命令是大数据处理工作中非常基础且重要的技能,Hadoop作为分布式存储和计算框架,其命令行工具(Hadoop Shell)提供了丰富的操作接口,用户可以通过命令对HDFS文件系统进行管理、运行MapReduce作业、管理YARN资源等,以下将从Hadoop命令的基础结构、常用操作场景、高级功能及注意事项等方面进行详细说明。

如何执行Hadoop命令?-图1
(图片来源网络,侵删)

Hadoop命令的基本结构为hadoop [generic options] [command] [command options],其中generic options是所有命令共通的全局参数,如-conf指定配置文件路径、-D设置属性值、-fs指定默认文件系统URI等;command则是具体的操作命令,如fs(文件系统操作)、jar(运行Jar包)、distcp(分布式复制)等;command options为特定命令的参数,通过hadoop fs -ls /可以查看HDFS根目录下的文件列表,其中fs是文件系统操作命令,-ls是其选项。

HDFS文件系统操作

HDFS文件系统操作是Hadoop命令中最常用的部分,类似于Linux的文件命令,但针对分布式环境进行了优化,常用命令包括:

  1. 基本文件操作

    • ls:列出目录内容,如hadoop fs -ls /user显示/user下的所有文件和目录;使用-R选项可递归列出子目录,类似ls -R
    • mkdir:创建目录,如hadoop fs -mkdir /data/input创建输入目录;-p选项可创建多级目录(如mkdir -p /data/input/2023)。
    • putcopyFromLocal:将本地文件上传至HDFS,前者支持从标准输入读取,后者仅支持本地文件路径,例如hadoop fs -put local.txt /data/input/hadoop fs -copyFromLocal local.txt /data/input/
    • getcopyToLocal:从HDFS下载文件到本地,如hadoop fs -get /data/output/result.txt .将文件下载到当前目录。
    • rm:删除文件或目录,-r选项用于递归删除目录(如rm -r /data/temp)。
    • mv:移动或重命名文件,如hadoop fs -mv /data/input/file1.txt /data/input/backup.txt
  2. 高级文件操作

    如何执行Hadoop命令?-图2
    (图片来源网络,侵删)
    • du:查看文件或目录大小,-h选项以人类可读格式显示(如du -h /data/output),-s仅汇总总大小。
    • df:查看HDFS整体使用情况,如hadoop fs -df -h /显示根目录的容量、已用空间等。
    • cat:查看文件内容,适用于小文件,如hadoop fs -cat /data/input/log.txt
    • chmodchown:修改文件权限和所有者,如hadoop fs -chmod 755 /data/script.sh设置权限,chown hadoop:hadoop /data/input修改所有者。

MapReduce与YARN操作

Hadoop除了文件系统管理,还支持通过命令运行MapReduce作业和管理YARN集群资源。

  1. 运行MapReduce作业
    使用hadoop jar命令提交Jar包形式的MapReduce程序,基本语法为hadoop jar <jar-file> <main-class> <args>,运行Hadoop自带的WordCount示例:

    hadoop jar hadoop-mapreduce-examples-*.jar wordcount /data/input /data/output

    其中wordcount为主类名,/data/input为输入路径,/data/output为输出路径(需确保输出目录不存在)。

  2. YARN资源管理命令

    • yarn jar:与hadoop jar类似,但更侧重YARN资源调度,可指定队列、内存等参数,如yarn jar -Dmapreduce.job.queuename=queue1 myjob.jar MyJob input output
    • yarn application:管理YARN应用,如yarn application -list列出所有应用,-kill <app-id>终止指定应用,-status <app-id>查看应用状态。

Hadoop集群管理命令

Hadoop还提供了集群管理工具,用于监控和维护集群状态。

  1. HDFS平衡与检查

    • hadoop balancer:平衡HDFS集群中各DataNode的存储使用率,默认阈值为10%,可通过-threshold调整(如hadoop balancer -threshold 5)。
    • hadoop fsck:检查HDFS文件完整性,如hadoop fsck /data -files -blocks显示文件块分布情况。
  2. Hadoop守护进程管理
    虽然通常通过start-dfs.sh/stop-dfs.sh等脚本管理,但也可直接调用hadoop-daemon.sh启动单个守护进程,如hadoop-daemon.sh start namenode

注意事项与最佳实践

  1. 权限与安全:HDFS文件权限基于Linux用户/组,操作时需确保当前用户对目标路径有足够权限;启用Kerberos认证的集群需提前获取票据。
  2. 性能优化:上传大文件时使用-chunksize参数调整块大小(默认128MB);避免在HDFS上存储大量小文件,可通过HAR归档或SequenceFile格式优化。
  3. 错误排查:命令失败时,可通过-Dhadoop.debug=true开启调试模式,或查看YARN的Web UI(默认地址http://<ResourceManager>:8088)获取应用日志。

相关问答FAQs

Q1: 执行Hadoop命令时提示“Permission denied”,如何解决?
A: 此错误通常是由于当前用户对HDFS目标路径缺少操作权限,可通过hadoop fs -chown修改文件所有者,或使用hadoop fs -chmod调整权限,若用户hadoop需对/data/input有读写权限,执行hadoop fs -chmod 755 /data/input,确保HDFS集群未启用Kerberos认证,或已通过kinit获取有效票据。

Q2: 如何查看Hadoop MapReduce作业的执行日志?
A: MapReduce作业的日志可通过YARN的Web UI查看:访问ResourceManager的Web界面(默认端口8088),在“Applications”列表中找到目标作业,点击“Logs”链接即可查看详细日志,也可通过命令行获取,如yarn logs -applicationId <app-id>下载指定作业的日志包,或hadoop job -history <output-dir>查看历史作业的摘要信息(需确保作业历史服务器已启动)。

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