MapReduce编程模型
MR基础
最大优点是充分利用了闲置资源,多任务并行,快速得到答案。
拆分-处理-合并
MR框架介绍
MR处理流程
MapReduce(最早由Google提出)是一种分布式数据处理模型;核心过程主要分成2个阶段:Map阶段和Reduce阶段;首先执行Map阶段,再执行Reduce阶段。Map和Reduce阶段的处理逻辑由用户自定义实现,即实现分布式计算。
MR模型的适用场景
搜索:网页爬取、倒排索引,PageRank
Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐;分析用户访问行为。
文本统计分析:例如小说的WordCount,词频TFIDF分析;学术论文、专利文献的饮用分析和统计;*数据分析等。
海量数据挖掘:非结构数据、时空数据、图像数据的挖掘。
机器学习:监督学习、无监督学习、分类算法如决策树、SVM等。
自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项数据挖掘、重复文档检测等。
广告推荐:用户点击(CTR)和购买行为(CVR)预测
MR框架
用户视角看原理
用户视角谈实现
扩展MR
MR开发使用流程
1、阿里云官网下载插件、配置开发环境
2、新建java项目,完成MR开发
增加mapper
增加Reducer
增加MR Driver
添加处理逻辑
3、本地测试
准备本地测试数据
本地测试
本地测试结果检查
4、导出成jar包,并作为资源上传到ODPS的项目空间
add jar wcMR.jar -f;
MR打包成jar包
5、使用jar命令调用MR(命令示例如下)
jar -resources wcMR.jar -classpath wcMR.jar -classpath wcMR.jar example.wcDriver wc_in wc_out;
6、检查运行结果
7、开发发布完成。
发布
例子:WordCount
MR的开发说明:
1、支持MaxCompute内置类型的bigint,double,string,datetime及Boolean类型,不支持自定义类型。
2、接受多表输入,且输入表的schema可以不同。在map函数中,可以获取当前record对应的table信息。
3、输入可以为空,不支持视图(View)作为输入。
4、Reduce接受多路输出,可以输出到不同表,或者同一张表的不同分区。不同输出的schema可以不同。不同输出间通过label进行区分,默认输出不必加lable,目前不接受没有输出的情况。
MR编程模型-SDK核心接口
MaxCompute MR执行流程
核心接口
MapperBase:映射操作
JobConf:MR任务配置信息
MR使用注意事项
Graph编程模型
Graph概述
Graph的数据结构
Graph的处理流程
Graph的处理伪代码
Graph SDK介绍
Graph的Aggregator机制
Graph的作业运行
Graph开发使用流程
Dijkstra算法
配置java—+eclapse等跟mapreduce步骤都类似
JAVA沙箱限制