运行MapReduce作业
用户可将自己开发的程序提交到MRS中,执行程序并获取结果。本章节指导您在MRS集群页面如何提交一个新的MapReduce作业。MapReduce作业用于提交jar程序快速并行处理大量数据,是一种分布式数据处理模式和执行环境。
若在集群详情页面不支持“作业管理”和“文件管理”功能,请通过后台功能来提交作业。
前提条件
用户已经将运行作业所需的程序包和数据文件上传至OBS系统或HDFS中。
如果用户将程序包和数据文件上传至OBS中,需要先创建OBS委托并与MRS集群绑定,具体请参考配置存算分离集群(委托方式)。
通过界面提交作业
- 登录MRS管理控制台。
- 选择“集群列表 > 现有集群”,选中一个运行中的集群并单击集群名称,进入集群信息页面。
- 若集群开启Kerberos认证时执行该步骤,若集群未开启Kerberos认证,请无需执行该步骤。
在“概览”页签的基本信息区域,单击“IAM用户同步”右侧的“同步”进行IAM用户同步,具体介绍请参考IAM用户同步MRS说明。
- 当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时,由于集群节点的SSSD(System Security Services Daemon)缓存刷新需要时间,因此同步完成后,请等待5分钟,等待新修改策略生效之后,再进行提交作业。否则,会出现提交作业失败的情况。
- 当IAM用户的用户组的所属策略从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时,由于集群节点的SSSD缓存刷新需要时间,因此同步完成后,请等待5分钟,新修改策略才能生效。
- 单击 ,进入 页签。
- 单击“添加”,进入“添加作业”页面。
IAM用户名存在空格时(如admin 01),不支持添加作业。
- “作业类型”选择“MapReduce”,并配置其他作业信息。
表1 作业配置信息 参数
参数说明
作业名称
作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。
说明:建议不同的作业设置不同的名称。
执行程序路径
待执行程序包地址,需要满足如下要求:
- 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
- 执行程序路径可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
- OBS:以“obs://”开头。示例:obs://wordcount/program/xxx.jar。
- HDFS:以“/user”开头。数据导入HDFS请参考导入数据。
- SparkScript和HiveScript需要以“.sql”结尾,MapReduce需要以“.jar”结尾,Flink和SparkSubmit需要以“.jar”或“.py”结尾。sql、jar、py不区分大小写。
执行程序参数
可选参数,程序执行的关键参数。多个参数间使用空格隔开。
配置方法:程序类名 数据输入路径 数据输出路径
服务配置参数
可选参数,用于为本次执行的作业修改服务配置参数。该参数的修改仅适用于本次执行的作业,如需对集群永久生效,请参考配置服务参数页面进行修改。
如需添加多个参数,请单击右侧增加,如需删除参数,请单击右侧“删除”。
常用服务配置参数如表2。
命令参考
用于展示提交作业时提交到后台执行的命令。
表3 作业配置信息 参数
参数说明
作业名称
作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。
说明:建议不同的作业设置不同的名称。
执行程序路径
待执行程序包地址,需要满足如下要求:
- 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
- 执行程序路径可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
- OBS:以“s3a://”开头。示例:s3a://wordcount/program/xxx.jar
- HDFS:以“/user”开头。数据导入HDFS请参考导入数据。
- SparkScript需要以“.sql”结尾,MapReduce和Spark需要以“.jar”结尾。sql、jar不区分大小写。
执行程序参数
程序执行的关键参数,该参数由用户程序内的函数指定,MRS只负责参数的传入。多个参数间使用空格隔开。
配置方法:包名.类名。
最多为150000字符,不能包含;|&><'$特殊字符,可为空。
说明:用户输入带有敏感信息(如登录密码)的参数时,可通过在参数名前添加“@”的方式,为该参数值加密,以防止敏感信息被明文形式持久化。在MRS管理控制台查看作业信息时,敏感信息显示为“*”。
例如:username=admin @password=admin_123
数据输入路径
数据输入地址。
数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。- OBS:以“s3a://”开头。
- HDFS:以“/user”开头。数据导入HDFS请参考导入数据。
最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。
输出路径
数据输出地址。
说明:- 配置此参数时,单击“OBS”或“HDFS”,并选择文件目录,或者手动输入文件目录,然后单击“确定”。
- 若添加hadoop-mapreduce-examples-x.x.x.jar样例程序或和hadoop-mapreduce-examples-x.x.x.jar类似的程序,请手动输入一个不存在的目录。
数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。- OBS:以“s3a://”开头。(仅MRS 1.8.10及之前版本支持。)
- HDFS:以“/user”开头。
最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。
日志路径
作业日志存储地址,该日志信息记录作业运行状态。
数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。- OBS:以“s3a://”开头。
- HDFS:以“/user”开头。
最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。
- 确认作业配置信息,单击“确定”,完成作业的新增。
作业新增完成后,可对作业进行管理。
通过后台提交作业
MRS 3.x及之后版本客户端默认安装路径为“/opt/Bigdata/client”,MRS 3.x之前版本为“/opt/client”。具体以实际为准。
- 登录任意一个Master节点,具体请参考登录集群节点。
- 执行如下命令初始化环境变量。
source /opt/Bigdata/client/bigdata_env
- 如果当前集群已开启Kerberos认证,执行以下命令认证当前用户。如果当前集群未开启Kerberos认证,则无需执行该步骤。
kinit MRS集群用户
例如, kinit admin
- 执行如下命令拷贝OBS文件系统中的程序到集群的Master节点。
hadoop fs -Dfs.obs.access.key=AK -Dfs.obs.secret.key=SK -copyToLocal source_path.jar target_path.jar
例如:hadoop fs -Dfs.obs.access.key=XXXX -Dfs.obs.secret.key=XXXX -copyToLocal "obs://mrs-word/program/hadoop-mapreduce-examples-XXX.jar" "/home/omm/hadoop-mapreduce-examples-XXX.jar"
AK/SK可登录OBS控制台,请在集群控制台页面右上角的用户名下拉框中选择“我的凭证 > 访问密钥”页面获取。
- 执行如下命令提交wordcount作业,如需从OBS读取或向OBS输出数据,需要增加AK/SK参数。
source /opt/Bigdata/client/bigdata_env;hadoop jar execute_jar wordcount input_path output_path
例如:source /opt/Bigdata/client/bigdata_env;hadoop jar /home/omm/hadoop-mapreduce-examples-XXX.jar wordcount -Dfs.obs.access.key=XXXX -Dfs.obs.secret.key=XXXX "obs://mrs-word/input/*" "obs://mrs-word/output/"
input_path为OBS上存放作业输入文件的路径。output_path为OBS上存放作业输出文件地址,请设置为一个不存在的目录。