betway必威官网MaxCompute MapReduce

By admin in 技术中心 on 2019年2月12日

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

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

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

其他限制

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

任务的是在MaxComput(ODPS)上运行的,客户端通过jar命令发起请求。

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

Map阶段

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

生产及周期调度

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

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

betway必威官网 1

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

作者:隐林

betway必威官网 2

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

    map();

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

betway必威官网,对比前面的快速开始,可以看到除去数据准备阶段,和MR相关的,有资源的上传(add
jar步骤)和jar命令启动MR作业两步。

责任编辑:

JobConfig

解决方案:

MapReduce

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

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

list resources;//查看资源

add jar /JarPath/mapreduce-examples.jar -f;

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

}

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

无法访问外部数据源(不能当爬虫,不能读RDS等)

功能介绍

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的数据传输的工作量。

在odpscmd里执行add jar命令:

Reduce阶段:Reducer拿前面已经排序好的输入,相同的单词的所有输入进入同一个Redue循环,在循环里,做个数的累加。

其他

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

Map/Reduce

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

Q:如何实现M->R->M->R这种逻辑呢

setOutputKeySortOrder(JobConf.SortOrder[] order)设置 Key
排序列的顺序。

-f和-e一样,只是把命令写到文件里,然后用odpscmd -f
xxx.sql引用这个文件,那这个文件里的多个指令都会被执行。

资源表/文件

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

步骤为

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

最后通过JobClient.runJob(job);客户端往服务器发起了这个MapReduce作业。

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

产品限制

    …

输入数据

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

线上运行

工欲善其事,必先利其器。MR的开发提供了基于IDEA和Eclipse的插件。其中比较推荐用IDEA的插件,因为IDEA我们还在持续做迭代,而Eclipse已经停止做更新了。而且IDEA的功能也比较丰富。

以WordCount为例,文档可以参考这里

读表

根据com.aliyun.odps.mapred.open.example.WordCount,找到main方法所在类的路径和名字

setCombinerOptimizeEnable(boolean
isCombineOpt)设置是否对Combiner进行优化。

快速开始

如果Reduce后面还需要做进一步的Reduce计算,可以用拓展MapReduce模型(简称MRR)。MRR其实就是Reduce阶段结束后,不直接输出结果,而是再次经过Shuffle后接另外一个Reduce。

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

在JAVA代码里直接调用MapReduce作业,可以通过设置SessionState.setLocalRun(false); 实现,具体可以参考这里

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

Shuffle-分配Reduce

Map阶段:每个Mapper针对每条数据,解析里面的字符串,用空格切开字符串,得到一组单词。针对其中每个单词,写一条记录

前言

安全沙箱

定时调度

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 betway必威官网 版权所有