更新时间:2024-09-04 GMT+08:00

运行MapReduce作业

用户可将自己开发的程序提交到MRS中,执行程序并获取结果,本章节指导您如何在MRS集群中提交一个MapReduce作业。

MapReduce作业用于提交Hadoop jar程序快速并行处理大量数据,是一种分布式数据处理模式。

用户可以在MRS管理控制台在线创建一个作业并提交运行,也可以通过MRS集群客户端来以命令行形式提交作业。

前提条件

  • 用户已经将作业所需的程序包和数据文件上传至OBS或HDFS文件系统中。
  • 如果作业程序需要读取以及分析OBS文件系统中的数据,需要先配置MRS集群的存算分离,请参考配置MRS集群存算分离

通过管理控制台提交作业

  1. 登录MRS管理控制台。
  2. 选择“现有集群”,选中一个运行中的集群并单击集群名称,进入集群信息页面。
  3. “概览”页签的基本信息区域,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。

    集群开启Kerberos认证时需执行该步骤,若集群未开启Kerberos认证,无需执行本步骤。

    • IAM用户同步完成后,请等待5分钟,再进行提交作业,更多IAM用户同步说明请参考IAM用户同步MRS集群说明
    • 当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时,或者反之从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时,由于集群节点的SSSD(System Security Services Daemon)缓存刷新需要时间,因此用户同步完成后,请等待5分钟,待新策略生效之后,再进行提交作业,否则会出现提交作业失败的情况。
    • 当前IAM用户名中存在空格时(例如admin 01),不支持添加作业。

  4. 单击“作业管理”,在作业列表界面单击“添加”。
  5. “作业类型”选择“MapReduce”,并配置其他作业信息。

    图1 添加MapReduce作业
    表1 作业配置信息

    参数

    描述

    示例

    作业名称

    作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。

    mapreduce_job

    执行程序路径

    待执行程序包地址,可直接手动输入地址路径,也可单击“HDFS”或者“OBS”选择文件。

    • 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
    • OBS程序路径地址以“obs://”开头,例如“obs://wordcount/program/XXX.jar”。HDFS程序路径地址以“hdfs://”开头,例如“hdfs://hacluster/user/XXX.jar”。
    • MapReduce作业执行程序必须以“.jar”结尾。

    obs://wordcount/program/test.jar

    执行程序参数

    可选参数,程序执行的关键参数,多个参数间使用空格隔开。

    配置格式:程序类名 数据输入路径 数据输出路径

    • 程序类名:由用户程序内的函数指定,MRS只负责参数的传入。
    • 数据输入路径:通过单击“HDFS”或者“OBS”选择或者直接手动输入正确路径。
    • 数据输出路径:数据处理结果输出路径,需输入一个不存在的目录。最多为150000字符,不能包含;|&><'$特殊字符,可为空。
      注意:

      用户输入带有敏感信息(如登录密码)的参数时,可通过在参数名前添加“@”的方式为该参数值加密,以防止敏感信息被明文形式持久化。

      在MRS管理控制台查看作业信息时,敏感信息会显示为“*”。

      例如:username=testuser @password=用户密码

    -

    服务配置参数

    可选参数,用于为本次执行的作业修改服务配置参数。

    该参数的修改仅适用于本次执行的作业,如需对集群永久生效,请参考修改MRS集群组件配置参数进行集群组件配置参数的修改。

    如需添加多个参数,请单击右侧增加。

    例如作业需要通过AK/SK方式访问OBS,增加以下服务配置参数:

    • fs.obs.access.key:访问OBS的密钥ID。
    • fs.obs.secret.key:访问OBS与密钥ID对应的密钥。

    -

    命令参考

    用于展示提交作业时提交到后台执行的命令。

    yarn jar hdfs://hacluster/user/test.jar

  6. 确认作业配置信息,单击“确定”,完成作业的新增。
  7. 作业提交成功中,可在作业列表中查看作业运行状态及执行结果,等待作业状态变为“已完成”,可查看相关程序分析结果。

通过集群客户端提交作业

  1. 安装MRS集群客户端,具体操作可参考安装MRS集群客户端

    MRS集群中默认安装了一个客户端用于作业提交,也可直接使用该客户端。MRS 3.x及之后版本客户端默认安装路径为Master节点上的“/opt/Bigdata/client”,MRS 3.x之前版本为Master节点上的“/opt/client”。

  2. 使用MRS集群客户端安装用户登录客户端所在的节点。
  3. 执行以下命令初始化环境变量。

    cd /opt/Bigdata/client

    source bigdata_env

  4. 如果当前集群已开启Kerberos认证,执行以下命令进行认证。

    如果当前集群未开启Kerberos认证,则无需执行本步骤。

    kinit MRS集群业务用户

    MRS集群业务用户需在Manager界面中创建一个具有对应作业提交权限的业务用户,请参考创建MRS集群用户

    例如:

    kinit testuser

  5. 执行以下命令复制OBS文件系统中的程序到集群的客户端所在节点。

    hadoop fs -Dfs.obs.access.key=访问OBS的AK信息 -Dfs.obs.secret.key=访问OBS的SK信息 -copyToLocal 应用程序源路径 应用程序目的路径

    例如:

    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"

    • 命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
    • AK/SK可登录OBS服务管理控制台,在页面右上角的用户名下拉框中选择“我的凭证 > 访问密钥”获取。

  6. 执行以下命令提交wordcount作业,如需从OBS读取或向OBS输出数据,需要增加AK/SK参数。

    hadoop jar 应用程序 wordcount 输入文件的路径 输出文件的路径

    例如:

    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/"

    • 输入文件的路径”为OBS上存放作业输入文件的路径。
    • 输出文件的路径”为OBS上存放作业输出文件地址,请设置为一个不存在的目录。