大数据 - Hadoop系列《三》- MapReduce(分布式计算引擎)概述

上一篇文章:

大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述-CSDN博客

目录

12.1 针对MapReduce的设计构思

1. 如何对付大数据处理场景

2. 构建抽象编程模型

3. 统一架构、隐藏底层细节

12.2 分布式计算概念

12.3 MapReduce定义

12.4 MR的优点:

1)🥙MapReduce易于编程

2)🥙良好的扩展性

3)🥙高容错性

4)🥙适合海量数据计算(TB/PB)

12.5 MR的缺点

1) 🥙不擅长实时计算

2) 🥙不擅长流式计算

3)🥙不擅长DAG(有向无环图)计算


12.1 针对MapReduce的设计构思

1. 如何对付大数据处理场景
  • 对相互间不具有计算依赖关系的大数据计算任务,实现并行最自然的办法就是采取MapReduce分而治之的策略。

  • 首先Map阶段进行拆分,把大数据拆分成若干份小数据,多个程序同时并行计算产生中间结果;然后是Reduce聚合阶段,通过程序对并行的杰哥进行最终的汇总计算,得出最终的结果。

  • 不可拆分的计算任务或相互间有依赖关系的数据无法进行并行计算。

2. 构建抽象编程模型
  • MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。

    • map:对一组数据元素进行某种重复式的处理。

    • reduce:对Map的中间结果进行某种进一步的结果整理。

  • MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:

    • map:(k1;v1)->(k2,v2)

    • reduce:(k2;[v2])->(k3,v3)

通过以上两个编程接口,大家可以看出MapReduce处理的数据类型是<key,value>键值对

3. 统一架构、隐藏底层细节
  • 如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。

  • MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供了一个抽象和高层的编程接口和框架。

  • 程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的业务程序代码。

  • 至于如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理;从分布代码的执行,到大到数千小到单个节点集群的自动调度使用。

12.2 分布式计算概念

分布式计算是一种计算方法,和集中式计算是相对的。

随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。

分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

12.3 MapReduce定义

MapReduce是一个分布式运算程序的编程框架,是用户开发”基于Hadoop的数据分析应用“的核心框架。

MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。

12.4 MR的优点:

1)🥙MapReduce易于编程

它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。

2)🥙良好的扩展性

可以动态增加服务器,解决计算资源不够问题

3)🥙高容错性

任何一台机器挂掉,可以将任务转移到其他节点。

4)🥙适合海量数据计算(TB/PB)

可以实现上千台服务器集群并行工作,提供数据处理能力。

12.5 MR的缺点

1) 🥙不擅长实时计算

MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。

2) 🥙不擅长流式计算

流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。

后续会学到sparkstreaming、flink,这两个框架都是擅长流式计算的

3)🥙不擅长DAG(有向无环图)计算

多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

Spark擅长DAG(有向无环图)计算

‘ 

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

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

相关文章

如何通过CVE漏洞编码找到对应的CVE漏洞详情及源码修改地址

背景&#xff1a; 最近正在使用docker进行一些cve漏洞的复现&#xff0c;有时候就要通过CVE的漏洞编码&#xff0c;找到对应的漏洞详情&#xff0c;以及漏洞的源码修改 以我上一篇文章的CVE-2020-17518编码为例 Apache Flink文件上Apache Flink文件上 方法&#xff1a; 通…

为什么golang不支持可重入锁呢?

为什么golang不需要可重入锁&#xff1f; 在工程中使用锁的原因在于为了保护不变量&#xff0c;也可以用于保护内、外部的不变量。 基于此&#xff0c;Go 在互斥锁设计上会遵守这几个原则。如下&#xff1a; 在调用 mutex.Lock 方法时&#xff0c;要保证这些变量的不变性保持…

手写分布式存储系统v0.2版本

引言 上回说到 手写分布式存储系统v0.1版本 &#xff0c;已经实现了通过监听TCP端口并将数据写到本地磁盘的功能&#xff0c;今天咱们就继续往上面添砖加瓦 v0.2版本大致做以下功能 实现滚动写文件 代码优化 一、滚动写文件实现 由于咱们写文件是用的mmap进行文件写入&am…

索引的设计原则(MySQL)

文章目录 文章目录 前言 一、搜索的索引列 二、使用唯一索引 三、使用短索引 四、最左前缀原则 五、不要过度使用 六、尽量使用主键索引 ​​​​​ 前言 索引的设计需要遵循一些原则&#xff0c;创建索引时遵循这些原则&#xff0c;有利于提升查询效率。 一、搜索的索引列 创建…

解决ModuleNotFoundError: No module named ‘pysqlite2‘

目录 一、问题描述 二、问题分析 三、解决方法 四、参考文章 一、问题描述&#xff1a; 新建conda编译环境。安装Jupyter后打不开&#xff0c;报错&#xff1a; 二、问题分析&#xff1a; 缺少sqlite3动态链接库 三、解决方法&#xff1a; SQLite Download Page 下载…

组播目的地址

路由器收到目的地址为224.0.0.5和239.0.0.5的组播报文如何处理? 224.0.0.5为永久组地址,是IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议,目前被分配于OSPF协议使用,运行了OSPF协议的网络设备默认都会加入该组播组。 当路由器…

数字地球开放平台农作物长势监测解决方案

利用遥感技术进行产量预测是一种高效而准确的方法&#xff0c;通过监测植被的生长状况、土地利用、气象等因素&#xff0c;可以为农业决策提供有力支持。数字地球开放平台拥有200颗卫星&#xff0c;为您提供一站式卫星遥感服务。 数字地球开放平台将为您介绍一般遥感技术在农作…

游戏开发丨基于Panda3D的迷宫小球游戏

文章目录 写在前面Panda3D程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于panda3d的迷宫中的小球游戏 所需环境 pythonpycharm或anacondapanda3d 下载地址 https://download.csdn.net/download/m0_68111267/88792121 Panda3D Panda3D是一种开放源代码…

如何选择最适合的服务器

许多朋友想做一些网站&#xff0c;应用&#xff0c;游戏&#xff0c;小程序等等&#xff0c;都需要接触一个基础&#xff0c;就是服务器。服务器相当于一台24小时不关机的联网电脑&#xff0c;浏览网页或者应用相当于用户在访问这台电脑里的文件。那么如何选择最适合自己的服务…

在微服务项目中,实现无停机更新有哪些方法和策略?

在微服务项目中&#xff0c;确保线上更新不停掉服务是非常关键的&#xff0c;以保障系统的可用性。以下是一些方法和策略&#xff0c;可以帮助实现无停机更新&#xff1a; 蓝绿部署&#xff08;Blue-Green Deployment&#xff09;&#xff1a; 在蓝绿部署中&#xff0c;维护两个…

【Java高级】通过CompletableFuture类异步、并行获取数据库数据

1. CompletableFuture类简介 CompletableFuture 类是 Java 中用于异步编程和处理异步任务的工具类。它是 Java 8 引入的一部分&#xff0c;提供了一种方便的方式来处理异步操作&#xff0c;例如并行执行多个任务、等待多个任务完成等。 CompletableFuture 可以通过 runAsync …

【Java 数据结构】对象的比较

Java中对象的比较 1. PriorityQueue中插入对象2. 元素的比较2.1 基本类型的比较2.2 对象比较的问题 3. 对象的比较3.1 覆写基类的equals3.2 基于Comparble接口类的比较3.3 基于比较器比较3.4 三种方式对比 4. 集合框架中PriorityQueue的比较方式5. 使用PriorityQueue创建大小堆…

【AI_Design】Midjourney学习笔记

目录 后缀解析Promot合格使用prompt关键词描述 关键词化合作用关键词网站推荐 联合Chatgpt使用总结 后缀解析 –ar&#xff1a;宽高比设置–c&#xff1a;多样性设置&#xff08;数值0-100&#xff0c;默认值0&#xff09;–s&#xff1a;风格化设置&#xff08;数值0-1000&am…

Java面试——计网篇

一、基础篇 1、 TCP/IP 网络模型 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通信&#xff0c;而设备是多样性的&#xff0c;所以要兼容多…

结构体--共用体--枚举 之难点——链表 奋力学习嵌入式的第十六天

结构体 注意&#xff1a; 1.结构体类型 可以定义在 函数里里面 但是此时作用域就被限定在该函数中 2.结构体定义形式 //形式一 限定一类型 后定义变量 struct stu { ... }; struct stu s; //形式二 定义类型的同时 定义变量 struct stu { ... }s1,s2,*s3,s4[10]; struc…

【说明】Nginx配置反向代理但是不包含某个地址

【说明】Nginx配置反向代理但是不包含某个地址 配置 反向代理 /api 这个路径 但是不包含 /api/wechat/service 这个请求 www.weixin.com/api/wechat/service www.weixin.com/api/getUser OK location ^~ /api(?!/wechat/service) { // OK }

影院购票|电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

电影院订票选座小程序目录 目录 基于微信小程序的电影院购票系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能实现 2、管理员功能实现 &#xff08;1&#xff09;影院信息管理 &#xff08;2&#xff09;电影信息管理 &#xff08;3&#xff09;已…

STM32F1 - 存储器映射

Memory mapping 1> 外设内存地址映射2> GPIO寄存器映射3> 存储器访问 1> 外设内存地址映射 1> STM32F103ZET6的地址线位宽为32位&#xff0c;所以寻址空间为4GB &#xff08;2 ^ 32 4GB&#xff09;&#xff1b; 2> STM32将&#xff0c;Flash&#xff0c;SR…

PageHelper.startPage(pageNum, pageSize);分页总数不正确,避坑!

今天在调用一个查询列表的接口时&#xff0c;分页总数老是查的不正确&#xff1a; 当pageSize选择10时&#xff0c;总数只有10条 当pageSize选择20时&#xff0c;总数只有15条 实际上总数为15条实在正确的&#xff0c;然后取看代码&#xff1a; Overridepublic AjaxResult pro…

中科大计网学习记录笔记(四):Internet 和 ISP | 分组延时、丢失和吞吐量

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…