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

上一篇文章:

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

目录

[12.1 针对MapReduce的设计构思](#12.1 针对MapReduce的设计构思)

[1. 如何对付大数据处理场景](#1. 如何对付大数据处理场景)

[2. 构建抽象编程模型](#2. 构建抽象编程模型)

[3. 统一架构、隐藏底层细节](#3. 统一架构、隐藏底层细节)

[12.2 分布式计算概念](#12.2 分布式计算概念)

[12.3 MapReduce定义](#12.3 MapReduce定义)

[12.4 MR的优点:](#12.4 MR的优点:)

1)🥙MapReduce易于编程

2)🥙良好的扩展性

3)🥙高容错性

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

[12.5 MR的缺点](#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(有向无环图)计算

'

相关推荐
fanstuck9 分钟前
亚马逊云科技免费套餐新政解析与实战:数据分析与可视化平台
大数据·科技·数据分析·数据可视化·aws
望获linux2 小时前
【实时Linux实战系列】基于实时Linux的音频实时监控系统
大数据·linux·服务器·网络·数据库·操作系统·嵌入式软件
iphone1083 小时前
视频创作者如何用高级数据分析功能精准优化视频策略
大数据·数据挖掘·数据分析·音视频·视频功能·视频创作者
武子康4 小时前
大数据-79 Kafka 监控从入门到实战:度量体系、JMX采集与可视化告警全流程 Prometheus、Kafka Eagle
大数据·后端·kafka
DDC楼宇自控与IBMS集成系统解读4 小时前
BA 楼宇自控系统 + AI:重构楼宇设备管理的 “智能决策” 体系
大数据·网络·数据库·人工智能·3d·重构
用户199701080185 小时前
小红书商品列表API开发指南
大数据·数据挖掘·数据分析
计算机毕设残哥5 小时前
大数据毕业设计选题:基于大数据的用户贷款行为数据分析系统Spark SQL核心技术
大数据·spark·课程设计
江瀚视野5 小时前
多地闭店上热搜,中产的白月光无印良品怎么了?
大数据·人工智能
暖苏5 小时前
python-多线程(笔记)(持续更新)
大数据·开发语言·python
IT观察5 小时前
Spark 节点 IDO 正式开启 —引领 PayFi 新时代
大数据·spark