编译并运行MapReduce应用
在程序代码完成开发后,可以在Linux环境中运行应用。
MapReduce应用程序只支持在Linux环境下运行,不支持在Windows环境下运行。
操作步骤
- 生成MapReduce应用可执行包。
执行mvn package生成jar包,在工程目录target目录下获取,比如“mapreduce-examples-1.0.jar”。
- 上传生成的应用包“mapreduce-examples-1.0.jar”到Linux客户端上。例如“/opt”目录。
- 如果集群开启Kerberos,参考5.2.2-准备开发用户获得的“user.keytab”、“krb5.conf”文件需要在Linux环境上创建文件夹保存这些配置文件,例如“/opt/conf”。并在linux环境上,在客户端路径下(/opt/client/HDFS/hadoop/etc/hadoop/)获得core-site.xml、hdfs-site.xml文件放入上述文件夹里。
- 样例程序如果指定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>
- 在Linux环境下运行样例工程。
- 对于MapReduce统计样例程序,执行如下命令。
此命令包含了设置参数和提交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访问多组件样例程序,操作步骤如下。
- 获取“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。
- 对于安全模式集群,在新建的文件夹中创建文件“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认证集群略过此步骤。
- 在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包请根据集群中对应路径下的实际版本修改。
- 提交MapReduce任务,执行如下命令,运行样例工程。运行样例工程前需要根据实际环境修改认证信息。
yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.MultiComponentExample
- 获取“hbase-site.xml”、“hiveclient.properties”、“hive-site.xml”和“mapred-site.xml”文件,如果是安全模式集群,还需要同时获取“user.keytab”、“krb5.conf”,并在Linux环境上创建文件夹保存这些配置文件,例如“/opt/conf”。