运行MapReduce作业
MapReduce是大数据处理领域的经典计算模型,它将复杂的数据处理任务拆解为 “映射(Map)” 和 “规约(Reduce)” 两个阶段。在Map阶段,大量数据被分割成小块并行处理,每个节点独立执行用户自定义的映射函数,输出中间键值对;随后Reduce阶段汇总相同键的数据,通过规约函数完成聚合计算,最终输出结果。这种分布式计算框架不仅能高效处理 PB 级数据,还通过容错机制和自动任务调度,解决了传统单机处理的性能瓶颈,广泛应用于搜索引擎索引构建、日志分析、数据统计等场景 。
用户将自己开发的程序提交到MRS中,执行程序并获取结果,本章节指导您如何在MRS集群中提交一个MapReduce作业。
用户可以在MRS管理控制台在线创建一个作业并提交运行,也可以通过MRS集群客户端来以命令行形式提交作业。
前提条件
- 用户已经将作业所需的程序包和数据文件上传至OBS或HDFS文件系统中。
- 如果作业程序需要读取以及分析OBS文件系统中的数据,需要先配置MRS集群的存算分离,请参考配置MRS集群存算分离。
约束与限制
- 当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时,或者反之从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时,由于集群节点的SSSD(System Security Services Daemon)缓存刷新需要时间,因此用户同步完成后,请等待5分钟,待新策略生效之后,再到MRS管理控制台在线提交作业,否则会出现提交作业失败的情况。
- 当前IAM用户名中存在空格时(例如admin 01),不支持通过MRS管理控制台添加作业。
操作视频
本视频以在MRS集群的管理控制台上提交并查看MapReduce作业为例进行说明。
因不同版本操作界面可能存在差异,相关视频供参考,具体以实际环境为准。
提交作业
用户可通过管理控制台在线创建并运行作业,也可以通过集群客户端命令方式手动提交。
- 准备应用程序及数据。
在本章节中,以提交一个Hadoop单词统计应用为例进行介绍,该样例程序可以从MRS集群客户端中获取(“客户端安装目录/HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-XXX.jar”),然后上传至HDFS或者OBS的指定目录中,请参考上传应用数据至MRS集群。
该应用运行时,需要的输入参数如下:
- 登录MRS管理控制台。
- 选择“现有集群”,选中一个运行中的集群并单击集群名称,进入集群概览信息页面。
- 在“概览”页签中,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
集群开启Kerberos认证时需执行该步骤,若集群未开启Kerberos认证,无需执行本步骤。
IAM用户同步完成后,请等待5分钟,再进行提交作业,更多IAM用户同步说明请参考IAM用户同步MRS集群说明。
- 单击“作业管理”,在作业列表界面单击“添加”。
- “作业类型”选择“MapReduce”,并配置其他作业信息。
图1 添加MapReduce作业
表1 作业配置信息 参数
描述
示例
作业名称
作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~128个字符。
mapreduce_job
执行程序路径
待执行程序包地址,可直接手动输入地址路径,也可单击“HDFS”或者“OBS”后选择文件。
- 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
- OBS程序路径地址以“obs://”开头,HDFS程序路径地址以“hdfs://hacluster”开头,例如“hdfs://hacluster/user/XXX.jar”。
- MapReduce作业执行程序必须以“.jar”结尾。
obs://mrs-demotest/program/hadoop-mapreduce-examples-XXX.jar
执行程序参数
可选参数,程序执行的关键参数,多个参数间使用空格隔开。
本章节示例程序的配置格式:程序类名 数据输入路径 数据输出路径
- 程序类名:由用户程序内的函数指定,MRS只负责参数的传入。
- 数据输入路径:通过单击“HDFS”或者“OBS”选择或者直接手动输入正确路径。
- 数据输出路径:数据处理结果输出路径,需输入一个不存在的目录。最多为150000字符,不能包含;|&><'$特殊字符,可为空。
注意:
用户输入带有敏感信息(如登录密码)的参数时,可通过在参数名前添加“@”的方式为该参数值加密,以防止敏感信息被明文形式持久化。
在MRS管理控制台查看作业信息时,敏感信息会显示为“*”。
例如:username=testuser @password=用户密码
wordcount obs://mrs-demotest/input/data1.txt obs://mrs-demotest/output/demo1
服务配置参数
可选参数,用于为本次执行的作业修改服务配置参数。
该参数的修改仅适用于本次执行的作业,如需对集群永久生效,请参考修改MRS集群组件配置参数进行集群组件配置参数的修改。
例如在MRS集群未配置存算分离的场景下,作业需要通过AK/SK方式访问OBS,可增加以下服务配置参数:
- fs.obs.access.key:访问OBS的密钥ID。
- fs.obs.secret.key:访问OBS与密钥ID对应的密钥。
-
命令参考
用于展示提交作业时提交到后台执行的命令。
N/A
- 确认作业配置信息,单击“确定”,完成作业的新增。
- 作业提交成功中,可在作业列表中查看作业运行状态及执行结果,等待作业状态变为“已完成”,可查看相关程序分析结果。
本示例程序中,在指定的OBS输出目录下,可查看到对应的数据统计结果。
图2 查看作业执行结果作业执行过程中,可选择“查看日志”或者“更多 > 查看详情”,查看程序的详细执行情况,如果作业执行异常或者失败,可根据报错信息进一步定位原因。
作业添加成功后,不支持进行编辑修改,如果需要再次执行作业,可选择“克隆”快速复制一个已创建的作业并进行参数调整。
- 准备应用程序及数据。
在本章节中,以提交一个Hadoop单词统计应用为例进行介绍,该样例程序可以从MRS集群客户端中获取(“客户端安装目录/HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-XXX.jar”),然后上传至HDFS或者OBS的指定目录中,请参考上传应用数据至MRS集群。
该应用运行时,需要的输入参数如下:
- 如果当前集群已开启Kerberos认证,需提前在Manager界面中创建一个具有对应作业提交权限的业务用户,请参考创建MRS集群用户。
本示例中,创建一个人机用户testuser,关联用户组“supergroup”及角色“System_administrator”。
- 安装MRS集群客户端。
具体操作可参考安装MRS集群客户端。
MRS集群中默认安装了一个客户端用于作业提交,也可直接使用该客户端。MRS 3.x及之后版本客户端默认安装路径为Master节点上的“/opt/Bigdata/client”,MRS 3.x之前版本为Master节点上的“/opt/client”。
- 使用MRS集群客户端安装用户登录客户端所在的节点。
具体操作可参考登录MRS集群节点。
- 执行以下命令进入客户端安装目录。
cd /opt/Bigdata/client
加载环境变量:
source bigdata_env
如果当前集群已开启Kerberos认证,执行以下命令进行用户认证,如果当前集群未开启Kerberos认证,则无需执行kinit操作。
kinit testuser
- 执行命令提交wordcount作业。
通常可以使用yarn命令或者hadoop jar命令提交MapReduce作业。
yarn命令是一个通用的资源管理和作业调度命令,它更侧重于对YARN集群资源的管理和作业生命周期的控制,可以用于提交MapReduce、Spark等作业,并且能够对作业进行查询、监控等操作。
hadoop jar命令主要用于提交基于Java的MapReduce作业,它会自动处理MapReduce作业的启动和执行,将JAR文件中的主类作为作业的入口点,并将输入输出路径等参数传递给作业。
使用hadoop jar命令提交样例程序作业,命令格式如下:
hadoop jar 应用程序 wordcount 输入文件的路径 输出文件的路径
例如使用样例程序统计HDFS中“/tmp/data/data1.txt”文件中的单词数并输出到HDFS的“/tmp/output/demo”目录中:
hadoop jar HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /tmp/data/data1.txt /tmp/output/demo
在MRS集群未配置存算分离的场景下,作业如果需要通过AK/SK方式访问OBS,可参考以下命令:
hadoop jar HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount -Dfs.obs.access.key=访问OBS的密钥ID信息 -Dfs.obs.secret.key=访问OBS与密钥ID对应的密钥信息 "obs://mrs-demotest/input/data1.txt" "obs://mrs-demotest/output/demo"
- 命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
- AK/SK可登录OBS服务管理控制台,在页面右上角的用户名下拉框中选择“我的凭证 > 访问密钥”获取。
- 作业提交并运行成功后,在指定的HDFS输出目录下,可查看到对应的数据统计结果。
hdfs dfs -ls /tmp/output
图3 查看作业执行结果 - 使用testuser用户登录集群Manager页面,选择“集群 > 服务 > Yarn”,单击“ResourceManager Web UI”右侧的超链接进入Yarn WebUI页面,单击对应作业的Application ID,即可查看作业运行信息及相关日志。
图4 查看MapReduce作业详情
相关文档
- 通过管理控制台提交作业后,每一条作业都支持查看日志,具体操作请参见查看MRS作业详情和日志。
- 开启Kerberos认证的集群在提交作业时,未进行IAM用户同步报错处理方法请参见提交作业时系统提示当前用户在Manager不存在如何处理?。
- 作业提交后,查看指定Yarn任务日志的具体操作请参见如何查看指定Yarn任务的日志?。
- 更多MRS应用开发样例程序,请参见MRS应用开发指南。