MapReduce(分布式计算框架)了解

article/2025/10/20 3:47:47

Hadoop组成

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统,对海量数据的存储。
Hadoop MapReduce:一个分布式的资源调度和离线并行计算框架。
Hadoop Yarn:基于HDFS,用于作业调度和集群资源管理的框架。

本篇将学习分布式并行计算框架MapReduce

什么是计算框架?

计算框架是指实现某项任务或某项工作从开始到结束的计算过程或流的结构。用于去解决或者处理某个复杂的计算问题。(如图)
在这里插入图片描述

什么是并行计算框架?

是指为更快的计算某项任务或某项工作,将计算程序分发到多台服务器上,使每个服务器计算总任务的一部分,多台服务器同时计算的框架。

在这里插入图片描述

什么是分布式计算?

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

在这里插入图片描述

Hadoop为什么比传统技术方案快?

核心原因一:使用分布式存储。
核心原因二:使用分布式并行计算框架。

理解MapReduce思想

需求:有一个五层的图书馆,需要获取图书馆中一共有多少本书。
只有一个人时,是能一本一本的数!工作量巨大,耗时较长。

分配五个人由你支配。此时你怎么支配?
五个人,每个人数一层的书量,最终将五个人的量汇总求和,就是图书馆中最终书的数量。

MapReduce的思想核心是“分而治之,先分后合”。即将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并。适用于大量复杂的、时效性不高的任务处理场景(大规模离线数据处理场景)。即使是发布过论文实现分布式计算的谷歌也只是实现了这种思想,而不是自己原创。
MapReduce由两部分组成,分别是Map 和Reduce两部分。
Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。例如前面例子中的分配每个人数一层楼。
Reduce负责“合”,即对map阶段的结果进行全局汇总。例如前面例子中将五个人的结果汇总。
这两个阶段合起来正是MapReduce思想的体现。

MapReduce并行计算

HDFS存储数据时对大于128M的数据会进行数据切分,每128M一个数据块,数据块会分散、分布存储到HDFS。
MapReduce在进行计算前会复制计算程序,每个数据块会分配一个独立的计算程序副本(MapTack)。计算时多个数据块几乎同时被读取并计算,但是计算程序完全相同。最终将各个计算程序计算的结果进行汇总(Reduce来汇总)
在这里插入图片描述

Hadoop -MapReduce设计构思

MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。
既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output)。
Hadoop MapReduce构思体现在如下的三个方面:
如何应对大数据处理:分而治之
对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略。并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对划分的子任务或数据块同时进行计算。不可分拆的计算任务或相互间有依赖关系的数据无法进行并行计算!
构建抽象模型:Map和Reduce
MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。
Map: 对一组数据元素进行某种重复式的处理;
Reduce: 对Map的中间结果进行某种进一步的结果整理。
MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:
map: [k1,v1] → [(k2,v2)]
reduce: [k2, {v2,…}] → [k3, v3]
在这里插入图片描述
WordCount体现每个KeyValue
在这里插入图片描述
Map和Reduce为程序员提供了一个清晰的操作接口抽象描述。通过以上两个编程接口,大家可以看出MapReduce处理的数据类型是<key,value>键值对。

统一构架,隐藏系统层细节
如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。
MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供一个抽象和高层的编程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码。如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的执行,到大到数千小到单个节点集群的自动调度使用。


http://chatgpt.dhexx.cn/article/fuOe4eYS.shtml

相关文章

深入浅出:HADOOP分布式计算框架

hadoop分布式计算框架详解 1.1 分布式计算框架 1.1.1 编程模型 1. inputformat 在MapReduce 程序的开发过程中&#xff0c;往往需要用到FileInputFormat与TextInputFormat&#xff0c; 我们会发现TextInputFormat 这个类继承自FileInputFormat &#xff0c; FileInputFormat 这…

Hadoop学习之MapReduce分布式计算框架

目录 一、本地模式 1.新建一个本地maven项目 2.修改prom依赖&#xff08;maven&#xff09; 3.新建一个包mapreduce&#xff0c;在该包中新建三个包 4.写mapper组件 5.写Reducer组件 6.写Driver组件 7.运行结果 二、集群模式词频统计 1.准备用于单词计数的文件夹和文…

MapReduce(分布式计算框架)

什么是MapReduce MapReduce是分布式计算框架&#xff0c;它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务&#xff0c;适用于大规模数据处理场景&#xff0c;每个job包含Map和Reduce两部分 MapReduce的设计思想 分而治之&#xff1a;简化并行计算的编程模型 …

140.深度学习分布式计算框架-3

140.1 Horovod Horovod是 Uber 开源的又一个深度学习工具&#xff0c;它的发展吸取了 Facebook「一小时训练 ImageNet 论文」与百度 Ring Allreduce 的优点&#xff0c;可为用户实现分布式训练提供帮助。Horovod 支持通过用于高性能并行计算的低层次接口 – 消息传递接口 (MPI…

【MapReduce】分布式计算框架MapReduce

分布式计算框架MapReduce 什么是MapReduce? MapReduce起源是2004年10月Google发表了MapReduce论文,之后由Mike Cafarella在Nutch(爬虫项目)中实现了MapReduce的功能。它的设计初衷是解决搜索引擎中大规模网页数据的并行处理问题,之后成为Apache Hadoop的核心子项目。 它…

【Hadoop】MapReduce——分布式计算框架

文章目录 一、MapReduce设计理念二、MpaReduce计算流程1 原始数据File2 数据块Block3 切片Split4 MapTask5 环形数据缓冲区KvBuffer6 分区Partation7 排序Sort8 溢写Spill9 合并Merge10 组合器Combiner11 拉取Fetch12 合并 merge13 归并Reduce14 写出Output15 MapReduce过程图解…

python-17-并行计算和分布式计算框架dask

dask入门教程 并行计算库Dask官方教程&#xff08;中文翻译&#xff09; dask和numpy的计算对比 1 并行计算和分布式计算 1.1 并行计算parallel computing 并行计算&#xff1a;这是一台计算机的概念&#xff0c;即一台计算机中多个处理器被组织起来&#xff0c;大任务下达的…

大数据技术入门:MapReduce(分布式计算框架)

大家好&#xff0c;我是百思不得小赵。 创作时间&#xff1a;2022 年 7 月 7 日 博客主页&#xff1a; &#x1f50d;点此进入博客主页 —— 新时代的农民工 &#x1f64a; —— 换一种思维逻辑去看待这个世界 &#x1f440; 今天是加入CSDN的第1222天。觉得有帮助麻烦&#x1…

05-分布式计算框架

目录 一&#xff0c;MapReduce 1&#xff0c;简介 2&#xff0c;原理 2.1 基本概念 2.2 程序执行过程 2.3 作业运行模式 二&#xff0c;Spark 1&#xff0c;简介 1.1 背景 1.2 概念 1.3 特点 2&#xff0c;原理 2.1 编程模型 2.2 运行模式 2.3 运行过程 2.4 DA…

大数据之Hadoop分布式计算框架MapReduce

这里写目录标题 一、MapReduce概述二、MapReduce编程模型简述三、MapReduce词频统计案例mvn clean package 四、词频统计案例进阶之Combiner五、词频统计案例进阶之Partitioner六、案例二介绍 一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架&#xff0c;用于编写批处…

分布式系列之分布式计算框架Flink深度解析

Flink作为主流的分布式计算框架&#xff0c;满足批流一体、高吞吐低时延、大规模复杂计算、高可靠的容错和多平台部署能力。本文简要介绍了Flink中的数据流处理流程以及基本部署架构和概念&#xff0c;以加深对分布式计算平台的了解。 1、Flink概述 Apache Flink是一个框架和分…

分布式计算框架——MapReduce

一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架&#xff0c;用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。 MapReduce 作业通过将输入的数据集拆分为独立的块&#xff0c;这些块由 map 以并行的方式处理&#xff0c…

【学习笔记1】分布式计算技术及框架

一.定义及描述 分布式计算(Distributed Computing)&#xff0c;又称分散式计算&#xff0c;指通过分布式系统进行计算的方式。分布式系统中的每一个运算单元存在于不同的计算机/处理器上&#xff0c;通过调度算法进行信息传递、协作以实现一件大而繁的目标。 简单来说&#x…

C#之简易计算器的制作

在一些问题中有时会用到计算器,今天我们可以用C#做一个简易的计算器 用到的开发工具为Visual Studio 2019(我用的是2019,其他版本的也可以) 1.首先新建一个项目文件. 2.在Form1.cs文件(Winform框架基础文件)中添加所用到的控件. 3.添加TextBox和ComboBox以及Button控件 4.对But…

JS原生——编写简易计算器

一个非常适合新手练习的小案例&#xff01;&#xff01;&#xff01; 使用JS的ES5语法HTMLCSS及企业级代码规范&#xff0c;方便后续良好的代码习惯养成&#xff01;&#xff01;&#xff01; 先来看一下样式吧&#xff01;&#xff01;&#xff01;&#xff08;后附代码&…

Java 实现简易计算器

前言&#xff1a; 出此文章是因为楼主之前在面试中遇到一个笔试题&#xff0c;当时一时半会没想出来&#xff0c;所以后续研究出来了&#xff0c;发出来希望对大家能有所帮助~ 题目&#xff1a;设计一个计算器&#xff0c;可以接收用户输入两个数字与 - * / 的符号&#xff0c…

Matlab设计简易计算器

效果如如下&#xff1a; 整个工程还是挺简单的&#xff0c;之前一直都是用matlab做信号处理&#xff0c;由于要做课程设计&#xff0c;就学了一下matlab的GUI。下面总结几个关键的地方。 &#xff08;1&#xff09;控件拉到自己喜欢的位置&#xff0c;并将控件的Text和Tag改好…

简易计算器(有界面)

&#xff08;没有括号和优先级&#xff0c;简易计算器&#xff09;界面&#xff1a; package javaprogram;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import j…

Andriod设计简易计算器

1&#xff0e;设计任务及要求 &#xff08;1&#xff09;设计一款基于Android系统下的计算器&#xff0c;实现加减乘除算法&#xff0c;以及清零、撤销操作。界面设计应该就尽量简洁而美观&#xff0c;具有良好的交互性&#xff0c;程序应具有较好的稳健性&#xff1b; &a…

java实现简易计算器

Java简易计算器 用java语言写的一个简易计算器&#xff0c;实现了最基本的、-、*、/ 运算。 先来看下效果&#xff1a; 界面简述&#xff1a; 整个面板的由一个JTextFiled组件16个JButton组件构成&#xff0c;外加一个JPanel组件存放16个按钮&#xff0c;其布局为4x4的网格…