更新时间:2024-08-03 GMT+08:00

编译并运行MapReduce应用

在程序代码完成开发后,可以在Linux环境中运行应用。

MapReduce应用程序只支持在Linux环境下运行,不支持在Windows环境下运行。

操作步骤

  1. 生成MapReduce应用可执行包。

    执行mvn package生成jar包,在工程目录target目录下获取,比如“mapreduce-examples-1.0.jar”。

  2. 上传生成的应用包“mapreduce-examples-1.0.jar”到Linux客户端上。例如“/opt”目录。
  3. 如果集群开启Kerberos,参考5.2.2-准备开发用户获得的“user.keytab”、“krb5.conf”文件需要在Linux环境上创建文件夹保存这些配置文件,例如“/opt/conf”。并在linux环境上,在客户端路径下(/opt/client/HDFS/hadoop/etc/hadoop/)获得core-site.xml、hdfs-site.xml文件放入上述文件夹里。
  4. 样例程序如果指定OBS为输入输出的目标文件系统(如obs://<BucketName>/input/),需要进行以下配置。

    在$YARN_CONF_DIR/core-site.xml中添加AK配置项“fs.obs.access.key”和SK配置项“fs.obs.secret.key”,AK/SK可登录“OBS控制台”,进入“我的凭证”页面获取。

    <property>
    <name>fs.obs.access.key</name>
    <value>xxxxxxxxxxxxxxxx</value>
    </property>
    <property>
    <name>fs.obs.secret.key</name>
    <value>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</value>
    </property>

  5. 在Linux环境下运行样例工程。

    • 对于MapReduce统计样例程序,执行如下命令。
      1. 如果集群开启kerberos,在Linux环境中添加样例工程运行所需的classpath,例如

        export YARN_USER_CLASSPATH=/opt/conf/

      2. 执行如下命令:
        cd /opt
        yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>

    此命令包含了设置参数和提交job的操作,其中<inputPath>指HDFS文件系统中input的路径,<outputPath>指HDFS文件系统中output的路径。

    • 在执行yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>命令之前,需要把log1.txt和log2.txt这两个文件上传到HDFS的<inputPath>目录下。
    • 在执行yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>命令之前,<outputPath>目录必须不存在,否则会报错。
    • mapreduce-examples-1.0.jar适用于MRS 1.x版本。
    • 在MapReduce任务运行过程中禁止重启HDFS服务,否则可能会导致任务失败。
    • 运行样例工程前需要根据实际环境修改认证信息。
    • 针对开启Kerberos认证的安全集群,代码中的“principal”请根据实际环境修改。例如test@FAA12CC3_0996_432F_9D6F_E18F6F9D7F43.COM。
    • 对于MapReduce访问多组件样例程序,操作步骤如下。
      1. 获取“hbase-site.xml”、“hiveclient.properties”、“hive-site.xml”和“mapred-site.xml”文件,如果是安全模式集群,还需要同时获取“user.keytab”、“krb5.conf”,并在Linux环境上创建文件夹保存这些配置文件,例如“/opt/conf”。

        请联系管理员获取相应账号对应权限的“user.keytab”和“krb5.conf”文件,“hbase-site.xml”从HBase客户端获取,例如:/opt/client/HBase/hbase/conf,“hiveclient.properties”和“hive-site.xml”从Hive客户端获取,例如:/opt/client/Hive/config,“mapred-site.xml”文件从Yarn客户端获取,例如:/opt/client/Yarn/config。

      2. 对于安全模式集群,在新建的文件夹中创建文件“jaas_mr.conf”,文件内容如下。
        Client {
        com.sun.security.auth.module.Krb5LoginModule required
        useKeyTab=true
        keyTab="user.keytab"
        principal="test@FAA12CC3_0996_432F_9D6F_E18F6F9D7F43.COM"
        useTicketCache=false
        storeKey=true
        debug=true;
        }; 
        • 文件内容中的test@HADOOP.COM为示例,实际操作时请做相应修改。
        • “jaas_mr.conf”文件和代码中的“principal”请根据实际环境修改。例如test@FAA12CC3_0996_432F_9D6F_E18F6F9D7F43.COM。
        • 未开启Kerberos认证集群略过此步骤。
      3. 在Linux环境中添加样例工程运行所需的classpath,例如(以客户端安装路径为/opt/conf为例)

        export YARN_USER_CLASSPATH=/opt/conf/:/opt/client/HBase/hbase/lib/*:/opt/client/Hive/Beeline/lib/*

        • 针对MRS 1.9.x版本集群,需要在执行上述命令前或者执行上述命令后执行mv /opt/client/Hive/Beeline/lib/derby-10.10.2.0.jar derby-10.10.2.0.jar.bak命令。
        • 命令中使用的jar包请根据集群中对应路径下的实际版本修改。
      4. 提交MapReduce任务,执行如下命令,运行样例工程。运行样例工程前需要根据实际环境修改认证信息。

        yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.MultiComponentExample