789
阿里云
MapReduce__概要__大数据计算服务-阿里云
MaxCompute提供了三个版本的MapReduce编程接口,包括:
- MaxCompute MapReduce:MaxCompute的原生接口,执行速度更快。开发更便捷,不暴露文件系统。
- MR2(扩展MapReduce):对MaxCompute MapReduce的扩展,支持更复杂的作业调度逻辑。Map/Reduce的实现方式与MaxCompute原生接口一致。
- 以及Hadoop兼容版本:高度兼容Hadoop MapReduce ,与MaxCompute原生MapReduce,MR2不兼容。
三个版本的在基本概念,作业提交, 输入输出,资源使用等方面基本一致,不同的是Java SDK彼此各异。本小节只会对MapReduce的基本原理做简单介绍,更多原理介绍可参考Hadoop MapReduce 教程。
备注:
- 目前MapReduce功能仍处于免费公测中。MaxCompute 2.0版本提供的兼容Hadoop 版本已经上线。
- 用户还不能够通过MapReduce读写OSS中的数据。
应用场景
MapReduce最早是由Google提出的分布式数据处理模型,随后受到了业内的广泛关注,并被大量应用到各种商业场景中。比如:
- 搜索:网页爬取、倒排索引、PageRank。
- Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐;分析用户访问行为。
- 文本统计分析:比如莫言小说的WordCount、词频TFIDF分析;学术论文、专利文献的引用分析和统计;维基百科数据分析等。
- 海量数据挖掘:非结构化数据、时空数据、图像数据的挖掘。
- 机器学习:监督学习、无监督学习、分类算法如决策树、SVM等。
- 自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项集数据挖掘、重复文档检测等。
- 广告推荐:用户点击(CTR)和购买行为(CVR)预测。
处理流程
MapReduce处理数据过程主要分成2个阶段:Map阶段和Reduce阶段。首先执行Map阶段,再执行Reduce阶段。Map和Reduce的处理逻辑由用户自定义实现,但要符合MapReduce框架的约定。
- 在正式执行Map前,需要将输入数据进行”分片”。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理,以便于多个Map Worker同时工作。
- 分片完毕后,多个Map Worker就可以同时工作了。每个Map Worker在读入各自的数据后,进行计算处理,最终输出给Reduce。Map Worker在输出数据时,需要为每一条输出数据指定一个Key。这个Key值决定了这条数据将会被发送给哪一个Reduce Worker。Key值和Reduce Worker是多对一的关系,具有相同Key的数据会被发送给同一个Reduce Worker,单个Reduce Worker有可能会接收到多个Key值的数据。
- 在进入Reduce阶段之前,MapReduce框架会对数据按照Key值排序,使得具有相同Key的数据彼此相邻。如果用户指定了”合并操作”(Combiner),框架会调用Combiner,将具有相同Key的数据进行聚合。Combiner的逻辑可以由用户自定义实现。与经典的MapReduce框架协议不同,在ODPS中,Combiner的输入、输出的参数必须与Reduce保持一致。这部分的处理通常也叫做”洗牌”(Shuffle)。
- 接下来进入Reduce阶段。相同的Key的数据会到达同一个Reduce Worker。同一个Reduce Worker会接收来自多个Map Worker的数据。每个Reduce Worker会对Key相同的多个数据进行Reduce操作。最后,一个Key的多条数据经过Reduce的作用后,将变成了一个值。
备注:
- 上文仅是对MapReduce框架做简单介绍,更多相关信息请查阅其他资料。
下面将以WordCount为例,解释ODPS MapReduce各个阶段的概念。 假设存在一个文本a.txt,文本内每行是一个数字,我们要统计每个数字出现的次数。文本内的数字称为Word,数字出现的次数称为Count。如果ODPS Mapreduce完成这一功能,需要经历下图描述的几个步骤:
首先对文本进行分片,将每片内的数据作为单个Map Worker的输入;
- Map处理输入,每获取一个数字,将数字的Count设置为1,并将此<Word, Count>对输出,此时以Word作为输出数据的Key;
- 在Shuffle阶段前期,首先对每个Map Worker的输出,按照Key值,即Word值排序。排序后进行Combine操作,即将Key值(Word值)相同的Count累加,构成一个新的<Word, Count>对。此过程被称为合并排序;
- 在Shuffle阶段后期,数据被发送到Reduce端。Reduce Worker收到数据后依赖Key值再次对数据排序;
- 每个Reduce Worker对数据进行处理时,采用与Combiner相同的逻辑,将Key值(Word值)相同的Count累加,得到输出结果;
备注:
- 由于 MaxCompute 的所有数据都被存放在表中,因此MaxCompute MapReduce的输入、输出只能是表,不允许用户自定义输出格式,不提供类似文件系统的接口。
最后更新:2016-10-18 11:46:39
上一篇:
保留字__附录_SQL_大数据计算服务-阿里云
下一篇:
扩展MapReduce__概要_MapReduce_大数据计算服务-阿里云
企业邮箱 Windows Live Mail 的 POP3/IMAP 协议设置方法__客户端使用_邮箱常见问题_企业邮箱-阿里云
删除授权__资源授权接口_Open API_消息队列 MQ-阿里云
恶意代码扫描接口__恶意代码扫描API_API手册_移动安全-阿里云
PasswordPolicy__数据类型_RAM API文档_访问控制-阿里云
续费实例__实例相关接口_API 参考_云服务器 ECS-阿里云
删除专有网络__专有网络相关接口_API 参考_云服务器 ECS-阿里云
创建定时任务__API快速入门_快速入门_弹性伸缩-阿里云
资源访问控制__授权管理_用户指南_访问控制-阿里云
查询实例规格族列表__其他接口_API 参考_云服务器 ECS-阿里云
云服务器 ECS 可用区
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云