【Python机器学习】MapReduce(分布式计算的框架)

MapReduce的优缺点:

优点:可在短时间内完成大量工作;

缺点:算法必须经过重写,需要对系统工程有一定的理解;

适用数据类型:数值型和标称型数据。

MapReduce是一个软件框架,可以将单个计算作业分配给多台计算机执行。它假定这些作业在单机上需要很长的运行时间,因此使用多台机器缩短运行时间。常见的例子是日常统计数字的汇总,该任务单机上执行时间将超过一天。

MapReduce的名字是由函数式编程中常用的map和reduce两个单词组成的。

MapReduce在大量节点组成的集群上运行,它的工作流程是:单个作业被分成很多小份,输入数据也被切片分发到各个节点,各个节点只在本地数据上做运算,对应的运算代码称为mapper,这个过程被称为map阶段,每个mapper的输出通过某种方式组合(一般还会做排序)。排序后的结果再被分成小份分发给各个节点进行下一步处理工作。第二步的处理阶段被称为reduce阶段,对应的运行代码被称为reducer。reducer的输出就是程序的最终执行结果。

MapReduce的优势在于它使得程序以并行的方式执行。如果集群由10个节点组成,而原先的作业需要10个小时来完成,那么应用MapReduce该作业只需要一个多小时就可以得到同样的结果。

举例:入给出过去100年某国每个城市每天的正确气温数据,我们想知道近100年该国最高气温。这里的数据格式为<city><date><temp>。为了统计该时段内的最高温度,可以先将这些数据根据节点数分成很多份,每个节点各自寻找本机数据集上的最高温度,这样每个mapper将产生一个温度,形如<"max"><temp>,也就是所有的mapper都会产生相同的key:"max"字符串。最后一需要一个reducer来比较所有mapper的输出,就能得到全局的最高温度值。

不同类型的作业可能需要不同数目的reducer。比如上面的例子,虽然这次使用的数据集相同,但不同的事这要找出每年的最高温度。这样的话,mapper应该先找到每年的最大温度并输出,所以中间数据的格式将形如<year><temp>。此外,还需要保证所有同一年的数据传递给同一个reducer,这由map和reduce阶段中间的sort阶段来完成。该例子中也给出了MapReduce中值得注意的一点,即数据会以key/value对的形式传递。这里,年代(year)是key,温度(temp)是value。因此sort阶段将按照年代把数据分类,之后合并,最终每个reducer就会收到相同的key值。

从上面的例子可以看出,reducer的数量并不是固定的,此外,在MapReduce的框架中还有其他一些灵活的配置选项。MapReduce的整个编配工作由主节点控制。这些主节点控制整个MapReduce作业编配,包括每份数据存放的节点位置,以及map、sort和reduce等阶段的时序控制等。此外,主节点还要包括容错机制。一般的,每份mapper的输入数据会同时分发到多个节点形成多份副本,用于事务的失效处理。一个MapReduce集群的示意图如下:

上图中每台机器都有两个处理器,可以同时处理两个map或者reduce任务。如果机器0在map阶段宕机,主节点将会发现这一点。主节点在发现该问题之后,会将机器0移出集群,并在剩余的节点上继续执行作业。子啊一些MapReduce的实现中,在多个机器上都保存有数据的多个备份,例如在机器0上存放的输入数据可能还存放在机器1上,以防机器0出现问题。同时,每个节点都必须与主节点通信,表明自己工作正常。如果某节点失效或工作异常,主节点将重启该节点或者将该节点移出可用机器池。

总结部分:

1、主节点控制MapReduce的作业流程;

2、MapReduce的作业可以分为map任务和reduce任务;

3、map任务之间不做数据交流,reduce任务也一样

4、在map和reduce阶段中间,有一个sort或combine阶段;

5、数据被重复存放在不同的机器上,以防某个机器失效

6、mapper和reducer传输的数据形式为key/value对。

相关推荐
Mem0rin1 分钟前
前缀和:一维与二维
数据结构·算法
似璟如你3 分钟前
Java 开发者的 Go 语法基础:从 0 开始快速上手 Go
java·开发语言·后端·golang·go·编程语言
小趴蔡ha5 分钟前
12 K-Means 聚类入门:没有标签如何发现数据分组
算法·kmeans·聚类
ACP广源盛139246256738 分钟前
Ling‑3.0‑flash 昇腾 0‑Day 适配落地@ACP#IX9104 在国产高密度算力矩阵中的机遇与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
-dzk-12 分钟前
【二叉树】LC 101.对称二叉树
算法·二叉树
LccKyI17 分钟前
C#学习day05(开发福彩双色球系统附思维导图)
开发语言·学习·c#
zzz_236819 分钟前
TencentDB-Agent-Memory 深度解析:让多个 Agent 共享项目经验的记忆中枢
java·开发语言·jvm·人工智能·agent·memory·tencent db
DeepVisionary22 分钟前
再观察小星火:当大厂分成“冰封“,国产轻模式创作者平台如何跑出加速度
python·自动化
gb421528725 分钟前
python中unstructured库和langchain-unstructured库在解析pdf文件的时候的区别?
python·langchain·pdf
白狐_79828 分钟前
408数据结构第6章:图——核心考点、算法对比与AOE网真题
数据结构·算法