大数据-hadoop-MapReduce原理详解

news2024/11/14 3:38:21

MapReduce[1]是Google提出的一个软件架构,用于大规模数据集的并行运算。概念“Map(映射)”和“Reduce(归约)”,及他们的主要思想,都是从函数式编程语言借鉴的,还有从矢量编程语言借来的特性。[注 1]

当前的软件实现是指定一个“Map”(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的“Reduce”(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

映射和归约

简单来说,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如,有人发现所有学生的成绩都被高估了一分,他可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。

而归约操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?他可以定义一个归约函数,通过让列表中的奇数(odd)或偶数(even)元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分)。虽然他不如映射函数那么并行,但是因为归约总是有一个简单的答案,大规模的运算相对独立,所以归约函数在高度并行环境下也很有用。

分布和可靠性

MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google档案系统中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的不可分割操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。

归约操作工作方式很类似,但是由于归约操作在并行能力较差,主节点会尽量把归约操作调度在一个节点上,或者离需要操作的数据尽可能近的节点上了;这个特性可以满足Google的需求,因为他们有足够的带宽,他们的内部网络没有那么多的机器。

Map:以一条记录为单位做映射

reduce:以一组为单位做计算

为什么叫Map Reduce?

▪Map:

–映射、变换、过滤

–1进N出

▪Reduce:

–分解、缩小、归纳

–一组进N出

▪(KEY,VAL):

–键值对的键划分数据分组

Map Reduce框架

MR:

数据已一条记录为单位经过map方法映射成KV,相同的key为一组,这一组数据调用一次reduce方法,在方法内迭代计算着一组数据。

参考:java 设计模式 --迭代器模式

经验:数据集一般是用迭代计算的方式

block > split

1:1

N:1

1:N

split > map

1:1

map > reduce

N:1

N:N

1:1

1:N

group(key)>partition

1:1

N:1

N:N

1:N

迭代器模式批量计算中非常优美的实现形式~!

hello1,0 1是个数,0代表分区

统计相同词频的个数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【基于crul库编写源码实现上传文件到http服务器】

基于crul库编写源码实现上传文件到http服务器编译crul库(可以去我下载资源里面找)用postman生成代码postman生成的代码对应的http服务器的设置_msnap_send_to_httpserver函数有http通过json发送jpeg文件、以及上传ftp服务器、发邮件的实例编译crul库(可以去我下载资源里面找) …

MySQL数据库及数据表相关操作

一,前言1.典型数据库数据库圈子中典型代表:MySQLOracleSQL Server(一般在学校学习的时候用到的是这个数据库)Oracle是世界上公认的最好的数据库,但是我们现在所学习以及以后上班中大部分时候用到的数据库是MySQL,因为MySQL是开源免费的(任何人都可以阅读…

86.编码器-解码器架构以及代码实现

1. 重新考察CNN 2. 重新考察RNN 3. 编码器-解码器架构 4. 总结 使用编码器-解码器架构的模型,编码器负责表示输入,解码器负责输出 5. 代码实现 5.1 编码器 在编码器接口中,我们只指定长度可变的序列作为编码器的输入X。 任何继承这个Enco…

数据结构 - 学习笔记 - 红黑树前传——234树

数据结构 - 学习笔记 - 红黑树前传——234树简介结点类型与红黑树对应关系插入逻辑插入步骤演示2结点插入3结点插入(红黑树旋转)共对应6种红黑树情形有4种情形需要再平衡4结点插入(红黑树变色)234树转红黑树触发分裂有4种情形需要…

234. 回文链表

1、题目描述 额外要求:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 2、题解 2.1 解题思路1 使用额外的栈空间,先将链表中所有的元素依次压入栈中,得到链表的逆序,然后将栈中的元素依次弹出和链表中的元素从…

C++关于初始化列表的细节(必须/不能使用初始化列表的情况、初始化列表的效率分析)

必须使用初始化列表初始化的变量 const修饰的成员变量。 class A { public:A() { a 1; }int a; };构造函数内使用a 1初始化变量a,但这本质上是一种赋值,而我们都知道,const类型的变量是不允许赋值的。 没有默认构造函数的成员变量 所有变量…

百度安全在线查询提示风险原因分析与解决思路

很多站长看到自己的网站被百度提示:“百度网址安全中心提醒您:该页面可能存在违法信息”,这样的提示,都会惊讶自己网站昨天还好好的,怎么今天就提示这样的信息呢?在弄清楚这个问题之前,我们要知…

实时频谱仪的外部I、Q输出端口的同步扫描介绍

实时频谱分析仪与外部GPIO,I、Q输出端口等集成在一起。外部GPIO由外部触发功能组成,通过使用外部硬件和/或多个RTSA设备,可以实现同步扫描设置,以自动进行频谱扫描和捕获。同时,I、Q输出端口有助于与外部高速数字化仪集…

联合证券|日元疯狂跳水30000点!神秘无人机现身韩国萨德基地!

刚刚,又有大事发生! 日本央行意外宣告保持收益率曲线忍受区间不变。日元忽然大暴跌,日元兑美元狂泻超三万点。韩国也有大音讯,据韩联社报导,1月17日,一架无人机挨近韩国“萨德”基地时被美军用搅扰枪击落&a…

2023跳槽最新面试题整理——JVM系列

今天是农历2022年腊月二十七了,和往常的春节假期、五一假期和十一假期一样都是团队中坚持到最后的一个。没几天也要快过年了,我先提前向大家拜个早年——祝大家兔年大吉,新春快乐,财源滚滚,万事如意。 今年从十一…

如何使用 Selenium 实现自动化操作?

目录 前言 一、关于Selenium 1.1、为什么选择它作为web自动化的测试工具? 1.2、Selenium操作浏览器的原理 二、实现一个简单的自动化 2.1、使用自动化操作浏览器 2.2、Selenium常用的API 2.2.1、查找页面元素 小结 前言 本篇咱们来谈谈Selenium自动化脚本是…

pfx证书转pem、crt、key

今天测试端的服务器突然不能下载苹果APP了,经查看,发现原来是测试环境的https证书过期了,需要更换证书,于是赶紧从阿里云更新我们的最新证书 我们程序部署在tomcat上,于是下载tomcat版本,下载完成后如下 我…

【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)

开始前,请先完成启动/欢迎/首屏广告页的开发,详见 【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等) https://blog.csdn…

输入设备应用

1.输入设备其实就是能够产生输入事件的设备就称为输入设备, 常见的输入设备包括鼠标、键盘、触摸屏、按钮等等,它们都能够产生输入事件,产生输入数据给计算机系统。2.对于输入设备的应用编程其主要是获取输入设备上报的数据、 输入设备当前状…

驱动程序那点事儿

是什么 驱动程序是一个软件组件,(添加到操作系统中的一小块代码),是操作系统和设备通信的桥梁。应用程序需要从设备中读取某些数据,操作系统会调用由驱动程序实现的函数。驱动程序了解如何与设备硬件通信以获取数据。当…

菜鸟程序员如何快速进阶成为编程老司机?

菜鸟程序员如何摆脱稚嫩,快速成长为一名资深码农? 以下这些事情,帮你快速打好基础。 如果你想成为更好的开发者,你应该尤其注意第10点和第14点。 1.积极大胆地谷歌。你得知道如何有效地组织搜索关键字,查阅别人写的…

高并发系统设计 --热点key问题解决

热点Key问题,这是一个老生常谈的问题了,今天我们来仔细的去剖析这个问题。 热点key带来的问题 流量集中。达到服务器处理上限(CPU,网络IO等)会影响在同一个Redis实例上其他key的读写请求操作热key请求落到同一个Redi…

【魅力开源】第7集:开源ERP系统Odoo发展史(Odoo中文社区野史2019版)

文章目录前言历程后记前言 开源 ERP 系统 Odoo 的发展史。 历程 2002 年比利时13 岁开 始学习编程序的 Fabien Pinckaers 所创建创办了Tiny Sprl 公司。Tiny Sprl 公司的第一个产品就是开发 Tiny ERP,即后来的 OpenERP,现在改名为Odoo。 2007 年 Ope…

Sklearn标准化和归一化方法汇总(3):范数归一化

Sklearn中与特征缩放有关的五个函数和类,全部位于sklearn.preprocessing包内。作为一个系列文章,我们将逐一讲解Sklearn中提供的标准化和归一化方法,以下是本系列已发布的文章列表: Sklearn标准化和归一化方法汇总(1)&#xff1a…

博云荣获证券基金信创联盟年度优秀成员

1月12日,证券基金行业信息技术应用创新联盟(以下简称“联盟”)2022年度峰会在上海顺利举行。会上,联盟为2022年积极参与联盟工作的成员单位进行了颁奖,博云获评信创联盟年度优秀成员奖。 联盟是在中国证券监督管理委员…