登录阿里云 E-MapReduce 控制台作业列表。
单击该页右上角的[backcolor=transparent]创建作业,进入创建作业页面。
填写作业名称。
选择 Hadoop 作业类型。表示创建的作业是一个 Hadoop Mapreduce 作业。这种类型的作业,其后台实际上是通过以下的方式提交的 Hadoop 作业。[backcolor=transparent]hadoop jar xxx[backcolor=transparent].[backcolor=transparent]jar [backcolor=transparent][[backcolor=transparent]MainClass[backcolor=transparent]][backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]Dxxx[backcolor=transparent] [backcolor=transparent]....
在[backcolor=transparent]应用参数中填写提交该 job 需要提供的命令行参数。这里需要说明的是,这个选项框中需要填写的内容从 hadoop jar 后面的第一个参数开始填写。也就是说,选项框中第一个要填写的是运行该作业需要提供的 jar 包所在地址,然后后面紧跟 [MainClass] 以及其他用户可以自行提供的命令行参数。
举个例子,假设用户想要提交一个 Hadoop 的 sleep job,该 jo b不读写任何数据,只是提交一些 mapper 和 reducer task 到集群中,每个 task sleep 一段时间,然后 job 成功。在 Hadoop 中(hadoop-2.6.0 为例)以,该 job 被打包在 Hadoop 发行版的 hadoop-mapreduce-client-jobclient-2.6.0-tests.jar 中。那么,若是在命令行中提交该 job,则命令如下:
- [backcolor=transparent]hadoop jar [backcolor=transparent]/[backcolor=transparent]path[backcolor=transparent]/[backcolor=transparent]to[backcolor=transparent]/[backcolor=transparent]hadoop[backcolor=transparent]-[backcolor=transparent]mapreduce[backcolor=transparent]-[backcolor=transparent]client[backcolor=transparent]-[backcolor=transparent]jobclient[backcolor=transparent]-[backcolor=transparent]2.6[backcolor=transparent].[backcolor=transparent]0[backcolor=transparent]-[backcolor=transparent]tests[backcolor=transparent].[backcolor=transparent]jar sleep [backcolor=transparent]-[backcolor=transparent]m [backcolor=transparent]3[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]r [backcolor=transparent]3[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]mt [backcolor=transparent]100[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]rt [backcolor=transparent]100
要在 E-MapReduce 中配置这个作业,那么作业配置页面的“应用参数”选项框中,需要填写的内容即为:
- [backcolor=transparent]/path/[backcolor=transparent]to[backcolor=transparent]/[backcolor=transparent]hadoop[backcolor=transparent]-[backcolor=transparent]mapreduce[backcolor=transparent]-[backcolor=transparent]client[backcolor=transparent]-[backcolor=transparent]jobclient[backcolor=transparent]-[backcolor=transparent]2.6[backcolor=transparent].[backcolor=transparent]0[backcolor=transparent]-[backcolor=transparent]tests[backcolor=transparent].[backcolor=transparent]jar sleep [backcolor=transparent]-[backcolor=transparent]m [backcolor=transparent]3[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]r [backcolor=transparent]3[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]mt [backcolor=transparent]100[backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]rt [backcolor=transparent]100
需要注意的是,这里用的 jar 包路径是 E-MapReduce 宿主机上的一个绝对路径,这种方式有一个问题,就是用户可能会将这些 jar 包放置在任何位置,而且随着集群的创建和释放,这些 jar 包也会跟着释放而变得不可用。所以,请使用以下方法:
用户将自己的 jar 包上传到 OSS 的 bucket 中进行存储,当配置 Hadoop 的参数时,单击[backcolor=transparent]选择 OSS 路径,从 OSS 目录中进行选择要执行的 jar 包。系统会为用户自动补齐 jar 包所在的 OSS 地址。请务必将代码的 jar 的前缀切换为 ossref (单击[backcolor=transparent]切换资源类型),以保证这个 jar 包会被 E-MapReduce 正确下载。
单击[backcolor=transparent]确定,该 jar 包所在的 OSS 路径地址就会自动填充到“应用参数”选项框中。作业提交的时候,系统能够根据这个路径地址自动从 OSS 找到相应的 jar 包。
在该 OSS 的 jar 包路径后面,即可进一步填写作业运行的其他命令行参数。
选择执行失败后策略。
单击[backcolor=transparent]确认,作业配置即定义完成。
上面的例子中,sleep job 并没有数据的输入输出,如果作业要读取数据,并输出处理结果(比如 wordcount),则需要指定数据的 input 路径和 output 路径。用户可以读写 E-MapReduce 集群 HDFS 上的数据,同样也可以读写 OSS 上的数据。如果需要读写 OSS 上的数据,只需要在填写 input 路径和 output 路径时,数据路径写成 OSS 上的路径地址即可,例如:
- [backcolor=transparent]jar ossref[backcolor=transparent]:[backcolor=transparent]//emr/checklist/jars/chengtao/hadoop/hadoop-mapreduce-examples-2.6.0.jar randomtextwriter -D mapreduce.randomtextwriter.totalbytes=320000 oss://emr/checklist/data/chengtao/hadoop/Wordcount/Input