大数据 - 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.hqwc.cn/news/448360.html

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

相关文章

算法学习——华为机考题库1(HJ1 - HJ10)

算法学习——华为机考题库1&#xff08;HJ1 - HJ10&#xff09; HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度&#xff0c;单词以空格隔开&#xff0c;字符串长度小于5000。&#xff08;注&#xff1a;字符串末尾不以空格为结尾&#xff09; 输入描述&…

Android搭建python环境

通过wifi连接adb&#xff1a; 首先下载无线abd工具&#xff1a; https://www.downkuai.com/android/170494.html 运行效果图&#xff1a; 然后开启后根据自身ip即可连接&#xff1a; adb connect ip:5555 安装busybox: 首先执行如下命令查看手机架构&#xff1a; adb sh…

1.27CNN(输入层,特征提取(卷积,最大池化),输出),损失函数(KL散度,交叉熵推导),熵(物理、信息熵推导),点积矩阵运算(CPU,GPU,NPU)

CNN 损失函数 KL散度&#xff0c;交叉熵 B部分是训练集的真实实际值&#xff0c;是常数&#xff0c;C部分是训练结果&#xff0c;目的是要让这个损失最小化&#xff0c;与模型参数紧密相关&#xff0c;取出C&#xff08;带负号&#xff09;&#xff0c;C非负 就是更精简的损失…

0202-2-存储器管理

第四章:存储器管理 存储器的层次结构 多层结构的存储系统 存储器的多层结构 CPU寄存器主存辅存 可执行存储器 寄存器和主存的总称访问速度快&#xff0c;进程可以在很少的时钟周期内用一条load或store指令完成存取。 主存储器与寄存器 高速缓存和磁盘缓存 程序的装入和链…

Python爬虫学习之scrapy库

一、scrapy库安装 pip install scrapy -i https://pypi.douban.com/simple 二、scrapy项目的创建 1、创建爬虫项目 打开cmd 输入scrapy startproject 项目的名字 注意:项目的名字不允许使用数字开头 也不能包含中文 2、创建爬虫文件 要在spiders文件…

【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑

如何用Java构建安全认证框架的稳固基石 SAML协议简介SAML作用和效果为什么要使用SAML SAML角色组成SAML是怎么工作核心协议详解RelayState标志RelayState在防范CSRF攻击中的具体操作 SAMLRequest请求体元素解释 用户重定向IDP数据信息登录成功之后 注意&#xff1a;特此声明&am…

Android组件化中的Arouter学习

假设现在有两个业务组件登录和问答模块之间需要进行通信&#xff0c;可能会想到用反射的方式&#xff0c;是可以但是会影响性能&#xff0c;而写的代码比较多类名这些要记清楚。 路由可以看做表&#xff0c;每个map对应一张表 我们可以试着这么写&#xff0c;完成MainActivity跳…

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式 2024/2/2 14:15 rootrootrootroot-X99-Turbo:~/whisper.cpp$ ./main -l zh -osrt -m models/ggml-medium.bin chs.wav 在纯CPU模式下&#xff0c;使用medium中等模型&#xff0c;7分钟的中文视频需要851829.69 ms&#xf…

实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)

实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 &#xff08;1&#xff09;管理员登录 &#xff08;2&#xff09;实训方向管理 &#xff08;3&#xff09;公告信息管理 &#xff08;4&#xff0…

Python程序设计 函数基础

简单函数 函数&#xff1a;就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。 函数的使用包含两个步骤&#xff1a; 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用&#xff0c;在开发程序时&#xff0c;使用…

交强险投保日期查询接口返回字段说明

API接口是现代互联网应用中重要的组成部分&#xff0c;通过接口的调用可以实现不同系统之间的数据交互和共享。在汽车保险行业中&#xff0c;交强险投保日期查询接口是非常关键的一个接口&#xff0c;本文将详细介绍该接口的返回字段和使用方法。 接口名称&#xff1a;交强险投…

ARP 解析 | 工作原理 | 安全风险及应对策略

介绍 ARP&#xff08;地址解析协议&#xff09;是一种网络协议&#xff0c;用于将IP地址映射到相应的物理硬件地址&#xff0c;如MAC地址。ARP的主要目的是在局域网&#xff08;LAN&#xff09;上解决IP地址和硬件地址之间的映射关系&#xff0c;以便实现数据包的正确传递。 A…