大数据运维---MapReduce学习
2023-09-14 08:59:28 时间
一、应用场景
MapReduce支持下列场景:
- 搜索:网页爬取、倒排索引、PageRank。
- Web访问日志分析:
- 分析和挖掘用户在Web上的访问、购物行为特征,实现个性化推荐。
- 分析用户访问行为。
- 文本统计分析:
- 热门小说的字数统计(WordCount)、词频TFIDF分析。
- 学术论文、专利文献的引用分析和统计。
- 维基百科数据分析。
- 海量数据挖掘:非结构化数据、时空数据和图像数据挖掘。
- 机器学习:监督学习、无监督学习和分类算法(例如决策树、SVM)。
- 自然语言处理:
- 基于大数据的训练和预测。
- 基于语料库构建单词同现矩阵,频繁项集数据挖掘、重复文档检测等。
- 广告推荐:用户单击(CTR)和购买行为(CVR)预测。
二、MapReduce流程说明
MapReduce处理数据过程主要分成Map和Reduce两个阶段。首先执行Map阶段,再执行Reduce阶段。Map和Reduce的处理逻辑由用户自定义实现,但要符合MapReduce框架的约定。MapReuce处理数据的完整流程如下:
- 输入数据:对文本进行分片,将每片内的数据作为单个Map Worker的输入。分片完毕后,多个Map Worker便可以同时工作。
在正式执行Map前,需要将输入数据进行分片。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理,以便于多个Map Worker同时工作。
- Map阶段:每个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框架协议不同,在MaxCompute中,Combiner的输入、输出的参数必须与Reduce保持一致,这部分的处理通常也叫做洗牌(Shuffle)。
- Reduce阶段:进入Reduce阶段,相同Key的数据会传送至同一个Reduce Worker。同一个Reduce Worker会接收来自多个Map Worker的数据。每个Reduce Worker会对Key相同的多个数据进行Reduce操作。最后,一个Key的多条数据经过Reduce的作用后,将变成一个值。
- 输出结果数据。
下文将以WordCount为例,为您介绍MaxCompute MapReduce各个阶段的概念。
假设存在一个文本a.txt,文本内每行是一个数字,您要统计每个数字出现的次数。文本内的数字称为Word,数字出现的次数称为Count。如果MaxCompute MapReduce完成这一功能,需要经历以下流程,图示如下。
![](https://img2020.cnblogs.com/blog/1205182/202011/1205182-20201120113305160-597038456.png)
操作步骤
- 输入数据:对文本进行分片,将每片内的数据作为单个Map Worker的输入。
- Map阶段:Map处理输入,每获取一个数字,将数字的Count设置为1,并将此<Word, Count>对输出,此时以Word作为输出数据的Key。
- Shuffle>合并排序:在Shuffle阶段前期,首先对每个Map Worker的输出,按照Key值(即Word值)进行排序。排序后进行Combiner操作,即将Key值(Word值)相同的Count累加,构成一个新的<Word, Count>对。此过程被称为合并排序。
- Shuffle>分配Reduce:在Shuffle阶段后期,数据被发送到Reduce端。Reduce Worker收到数据后依赖Key值再次对数据排序。
- Reduce阶段:每个Reduce Worker对数据进行处理时,采用与Combiner相同的逻辑,将Key值(Word值)相同的Count累加,得到输出结果。
- 输出结果数据。
三、设计构思
1、拓扑图
相关文章
- SpringMVC学习系列(6) 之 数据验证
- HEVC学习之琐事(三):TEncCu::compressCU
- 大数据运维---HDFS学习
- 机器学习数学系列(1):机器学习与数学基础知识
- 学习mysql的binlog配置
- 大数据学习之BigData常用算法和数据结构
- 机器学习笔记 - 在IdenProf数据集上训练深度残差网络ResNet50
- 一个免费调用的OData服务,无需用户名密码,适用于SAP UI5的学习
- SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据
- 深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑
- DS:机器学习之数据科学方向最强学习路线之数据分析、数据挖掘、机器学习工程化团队之详细攻略(更新中)
- 人工智能和机器学习的基本实现过程总结
- 机器学习案例(五):Covid-19 死亡人数预测
- 数学建模学习(4):数据统计与分析之假设检验
- 6. oracle学习入门系列之六 模式
- Java学习路线-26:字节流与字符流OutputStream/InputStream/Writer/Reader
- 《Swift程序设计语言》中国翻译和学习笔记page23
- 学习ARM开发(15)
- 智能车学习(十二)——智能车原理
- pandas dataframe 做机器学习训练数据=》直接使用iloc或者as_matrix即可
- 【MYSQL初级篇】入门学习【增删改查-库表数据】
- 画【Python折线图】的一百个学习报告(三、自动生成单一数据折线图)
- 西瓜书学习笔记第4章(决策树)
- 学习经验分享之五:YOLOv5数据集划分以及YOLO格式转换