MaxCompute MapReduce

By admin in 科技中心 on 2019年3月31日

原标题:通过简单瘦身,解决Dataworks 10M文件限制问题

前言

add jar C:\test_mr\test_mr.jar -f;//添加资源

`jar -resources mapreduce-examples.jar -classpath
mapreduce-examples.jar

责任编辑:

具体的插件的安装方法步骤可以参考文档,本文不在赘言。

​本文为云栖社区原创内容,未经允许不得转载。返回搜狐,查看更多

不支持反射/自定义类加载器(所以不支持一些第三方包)

澳门金沙30064在线网站 1

将代码拷贝到IDE里,编译打包成mapreduce-examples.jar

用户在DataWorks上执行MapReduce作业的时候,文件大于10M的JAR和资源文件不能上传到Dataworks,导致无法使用调度去定期执行MapReduce作业。

无法起多线程/多进程

摘要:
用户在DataWorks上执行MapReduce作业的时候,文件大于10M的JAR和资源文件不能上传到Dataworks,导致无法使用调度去定期执行MapReduce作业。
解决方案: jar -resources test_mr.

com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out`

客户端下载地址:https://help.aliyun.com/document\_detail/27971.html

setMemoryForJVM(int mem)设置 JVM虚拟机的内存资源,单位:MB,默认值 1024.

第一步:大于10M的resources通过MaxCompute CLI客户端上传,

点此查看原文:http://click.aliyun.com/m/41384/

客户端配置AK、EndPoint:https://help.aliyun.com/document\_detail/27804.html

读表

第三步:瘦身Jar,因为Dataworks执行MR作业的时候,一定要本地执行,所以保留个main就可以;

其他限制

list resources;//查看资源

拓展MapReduce

作者:隐林

定时调度

通过上述方法,我们可以在Dataworks上跑大于10M的MR作业。

安全沙箱

解决方案:

功能介绍

第二步:目前通过MaxCompute
CLI上传的资源,在Dataworks左侧资源列表是找不到的,只能通过list
resources查看确认资源;

大数据开发套件可以配置Shell作业。可以在Shell作业里参考上面的方法用odpscmd
-e/-f来调度MapReduce作业。

任务提交

说起MapReduce就少不了WordCount,我特别喜欢文档里的这个图片。

这个命令发起作业。MapReduce的任务是运行在MaxCompute集群上的,客户端需要通过这个命令把任务运行相关的信息告诉集群。

大数据开发套件的定时任务/工作流可以配置调度周期和任务依赖,配合前面提到的方法里的MapReduce作业/Shell作业,实现任务的调度。

setReducerClass(Class theClass)设置Reducer使用的Java类。

快速开始

在odpscmd里执行

A:在Reduce代码里直接嵌套上Map的逻辑就可以了,把第二个M的工作在前一个R里完成,而不是作为计算引擎调度层面上的一个单独步骤,比如

odpscmd
-e/-f:odpscmd的-e命令可以在shell脚本里直接运行一个odpscmd里的命令,所以可以在shell脚本里运行odpscmd
-e ‘jar -resources
xxxxxx’这样的命令,在shell脚本里调用MapReduce作业。一个完整的例子是

任务提交

Shuffle阶段-合并排序:也是发生在Mapper上。会先对数据进行排序。比如WordCount的例子,会根据单词进行排序。排序后的合并,又称Combiner阶段,因为前面已经根据单词排序过了,相同的单词都是连在一起的。那可以把2个相邻的合并成1个。Combiner可以减少在后续Reduce端的计算量,也可以减少Mapper往Reducer的数据传输的工作量。

运行环境

做数据准备,包括创建表和使用Tunnel命令行工具导入数据

jar -resources mapreduce-examples.jar -classpath mapreduce-examples.jar
com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out

功能解读

输入阶段:根据工作量,生成几个Mapper,把这些表的数据分配给这些Mapper。每个Mapper分配到表里的一部分记录。

JobConfig

大数据开发套件可以配置MapReduce作业。

setSplitSize(long size)通过调整分片大小来调整Mapper个数,单位
MB,默认256。Mapper个数不通过void setNumMapTasks(int n)设置。

如果在odpscmd的配置文件里已经配置好了,那只需要写-e的部分。

比如有一张很大的表。表里有个String字段记录的是用空格分割开单词。最后需要统计所有记录中,每个单词出现的次数是多少。那整体的计算流程是

}

setNumReduceTasks(int n)设置 Reducer 任务数,默认为 Mapper 任务数的
1/4。如果是Map
only的任务,需要设置成0。可以参考这里

输出阶段:输出Reduce的计算结果,写入到表里或者返回给客户端。

    map();

资源表和文件可以让一些小表/小文件可以方便被读取。鉴于读取数据的限制需要小于64次,一般是在setup里读取后缓存起来,具体的例子可以参考这里

setOutputKeySortColumns(String[] cols)设置 Mapper 输出到 Reducer 的
Key 排序列。

资源表/文件

不允许读本地文件(比如JSON里就用到了,就需要改用GSON)

澳门金沙30064在线网站,wc_in wc_out是传给main方法的参数,通过解析main方法传入参数String[]
args获得这个参数

void setResources(String
resourceNames)有和jar命令的-resources一样的功能,但是优先级高于-resources(也就是说代码里的设置优先级比较高)

另外后续还需要用到客户端,可以参考文档安装。

等待作业执行成功后,可以在SQL通过查询wc_out表的数据,看到执行的结果

MapReduce

reduce(){

这里的/JarPath/mapreduce-examples.jar的路径要替换成本地实际的文件路径。这个命令能把本地的jar包传到服务器上,-f是如果已经有同名的jar包就覆盖,实际使用中对于是报错还是覆盖需要谨慎考虑。

setMapperClass(Class theClass)设置Mapper使用的Java类。

摘要:大数据计算服务(MaxCompute)的功能详解和使用心得

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 澳门金沙30064在线网站 版权所有