【云计算与大数据技术】Hadoop MapReduce的讲解(图文解释,超详细必看)

news2024/11/27 22:42:14

一、Hadoop MapReduce架构

MapReduce 是一种分布式计算框架,能够处理大量数据 ,并提供容错 、可靠等功能 , 运行部署在大规模计算集群中,MapReduce计算框架采用主从架构,由 Client、JobTracker、TaskTracker组成

Client的作用

用户编写 MapReduce程序,通过Client提交到JobTracker

JobTracker的作用

JobTracker负责管理运行的 TaskTracker节点;负责Job的调度与分发

TaskTracker的作用

JobTracker发送具体的任务给 TaskTracker节点执行

在 MapReduce框架中,所有的程序执行最后都转换成task来执行

下图显示了 HDFS 作为 MapReduce 任务的数据输入源 ,每个 HDFS 文件切分成多个 ,Block 将其作为 MapReduce任务的数据输入源,执行计算任务

 二、Hadoop MapReduce 与高效能计算、 网格计算的区别

高性能计算的思想是将计算作业分散到集群机器上,集群计算节点访问存 储区域网络SAN 系统构成的共享文件系统获取数据,这种设计比较适合计算密集型作业,当需要访问像PB级别的数据的时候,由于存储设备网络带宽的显示,很多集群计算节点只能空闲等待数据

由于 Hadoop使用专门为分布 式计算设计的文件系统 HDFS,在计算的时候只需要将计算代码推送到存储节点上即可在存储节点上完成数据的本地化计算,Hadoop中的集群存储节点也是计算节点

在分布式编程方面,MPI属于比较底层的开发库,它赋予了程序员极大的控制能力;Hadoop的MapReduce却是一个高度抽象的并行编程模型,它将分布式并行编程抽象为两个原语操作,即Map操作和Reduce操作 

网格计算通常是指通过现有的互联网,利用大量来自不同地域,资源异构的计算机空闲的CPU和磁盘来进行分布式存储和计算

三、MapReduce工作机制 

MapReduce计算模式的工作原理是把计算任务拆解成Map和Reduce两个过程来执行

在数据被分割后通过Map函数的程序将数据映射成不同的区块,分配给计算机集群处理达到分布式运算的效果,再通过Reduce函数的程序将结果汇整,最后输出运行计算结果

1:Map 

Map - MapReduce会根据输入文件计算输入分片(inputsplit),每个输入分片针对一个Map任务,输入分片存储的并非数据本身,而是一个分片长度和一个记录数据位置的数组,输入分片往往和HDFS的block块的关系很密切

接着执行Map函数,操作一般由用户指定,Map 函数产生输出结果时并不是直接写入到磁盘,而是采用缓冲方式写入到内存中,并对数据按关键字进行预排序

2:Reduce

执行用户指定的 Reduce函数,输出计算结果到 HDFS集群上。Reduce执行数据的归并,数据是以key,list(value1,value2... ) 的方式存储  

3:Combine

Comine-Combine 是在本地进行的一个在Map端做的Reduce的过程,其目的是提高Hadoop的效率

4:Shuffle

Shuffle描述数据从 Map Task输出到Reduce Task输入的这段过程

Reducer真正运行之前,所有的时间都是在拉取数据,做merge,且不断重复地做,下面描述Reduce端的Shuffle细节

copy 过 程  -  其 用 于 简 单 地 拉 取 数 据 。Reduce 进 程 启 动 一 些 数 据 copy 线 程(Fetcher),通过HTTP请求文件数据

merge 阶段 - 这里的 merge 如 Map 端的 merge 动作  

Reducer 的输入文件 - 不 断 地 merge,最后会生成一个“最 终 文 件 

5:Speculative Task

存在这样的计算任务,它的运行时间远远长于其他任务的计算任务,减少该任务的运行时间就可以提高整体作业的运行速度,这种任务也称为“拖后腿”任务

导致任务执行缓慢的原因有很多种,包括软件和硬件原因

为了解决上述“拖 后 腿 ”任务导致的系统性能下降问题,Hadoop 为该task启动Speculative Task,与原始的 task同时运行,以最快运行结束的结果返回,加快Job的执行,当为一个task启动多个重复的task时,必然导致系统资源的消耗,因此采用Speculative Task的方式是一种以空间换时间的方式

四、任务容错

MapReduce是一种通用的计算框架,有着非常健壮的容错机制,容错粒度包括 JobTracker、TaskTracker、Job、Task、Record等级别

对于任务的容错机制,MapReduce 采用最简单的方法进行处理

 如果是一个 Map任务或 Reduce任务失败了,那么调度器会将这个失败的任务分配到其他节点重新执行

如果是一个节点死机了,那么在这台死机的节点上已经完成运行的 Map任务及正在运行中的 Map和 Reduce任务都将被调度重新执行,同时在其他机器上正在运行的 Reduce任务也将被重新执行

五、MapReduce的缺陷与不足

MapReduce 是一种离线处理框架,比较适合大规模的离线数据处理

MapReduce在实时处理性能方面比较薄弱,不适合处理事务或者单一处理请求

创作不易 觉得有帮助请点赞关注收藏~~~

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

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

相关文章

Debye-Wolf积分计算器

摘要 众所周知,Debye-Wolf积分可用于以半解析方式计算焦平面附近的矢量场。Debye-Wolf积分通常用作分析高数值孔径显微镜成像情况的基本工具。它是基于理想模型,因此不需要待求镜头精确规格的知识。该用例将解释如何在VirtualLab Fusion中使用Debye-Wolf…

Guitar Pro8更新了多达30项功能优化

很多人在听到Guitar Pro这个名词时,本能反应就是跟吉他有关的软件吧,但是具体是什么样子,有什么功能我们却不一定知道的那么详细,下面呢,我们就来详细的介绍下Guitar Pro这款软件。 Guitar Pro是初学作曲,特…

openlayers百万级和千万级数据量的矢量切片在渲染过程中的技术难点解析

目录1 前言2 数据介绍3 切片方案及技术难点3.1 大数据量图层矢量切片无法正确返回结果3.2 矢量切片标注过程中标注拥挤3.3 矢量切片每一块切片都进行了标注,形成了冗余3.4 矢量切片标注的随机性会造成时而在中央,时而在边界上3.5 特殊样式的制作3.6 图层…

Jmeter(九):jmeter_逻辑控制器_事务控制器HTTP Cookie管理器

Jmeter(19):jmeter_逻辑控制器_事务控制器 事务: 性能测试中,事务指的是从端到端,一个完整的操作过程,比如一次登录、一次 筛选条件查询,一次支付等;技术上讲:事务就是由1个或多个…

C# Spire.Xls将DataTable导出到Excel并加密

背景需求: 页面展示信息列表,需要将数据导出到Excel并加密sheet文件和工作簿结构。 代码思路:1.将数据转换为dataTable,2.将dataTable导出到Excel,3.处理加密。 文章目录引入必要的dll文件1.将数据转换为DataTable2.将…

Python英文词频统计(哈姆雷特)程序示例

今天继续给大家介绍Python相关知识,本文主要内容是Python英文词频统计程序示例,主要是对英文文本——《哈姆雷特》进行分词。 一、英文文本词频统计思路 想要对《哈姆雷特》进行英文单词词频统计,那么我们首先需要拿到《哈姆雷特》的原文&a…

“笨鸟”逆风飞:一场荣耀的高端越峰征程

2020年的11月17日,荣耀被迫“成年”。 “那一天都是在忙碌过程中度过的,有很多人要去沟通,有很多资产的分割……”,在12月12日央视网财经的访谈节目《云顶对话》中,荣耀CEO赵明首次向外袒露心迹,转身成为对…

C++11标准模板(STL)- 算法(std::max)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回各给定值中的较大者 …

构建供销一体化电商交易体系,数商云S2B2B系统实现锂电池企业全面转型升级

近年来&#xff0c;得益于新能源汽车和储能产业的快速发展&#xff0c;相关支撑技术和产业也得到空前关注&#xff0c;锂电池就是其中一员。我国动力电池装机量达到92GWH&#xff0c;同比增长169%&#xff0c;超过全球平均增速&#xff0c;占据着全球近一半的电池装机量。 新能…

Qt 蓝牙库基础

1.目的 使用QT自带的蓝牙功能库进行学习开发&#xff0c;了解蓝牙设备的工作原理和使用流程&#xff0c;目的搭建可以自由控制的蓝牙app&#xff0c;为以后的学习生活做基础。 2.本地设备 采用自己vivo Y53的手机作为实验对象。 使用到的QT蓝牙库的类名&#xff1a; QBlue…

PIC 16F18系列单片机开发 IO口配置与stm32的区别

目录 前言 PIC单片机配置字 电路需要IO口来发挥作用 寄存器和特殊功能寄存器 I/O口 I/O口和单片机内部寄存器之间的对应关系 前言 由于在之前学习嵌入式IDE时候都是直接接触到的是STM32 ARM内核的32位看偏激&#xff0c;现在开发使用的是美国微芯公司推出的PIC系列的单片…

【云原生】kubeadm部署k8s集群

内容预知 架构说明 1.环境准备 2.所有节点安装docker 3. 所有节点安装kubeadm&#xff0c;kubelet和kubectl 4. 部署 Dashboard 5. 安装 部署与k8s集群对接的Harbor仓库 内核参数优化方案 架构说明 前面的文章中&#xff0c;我们采用了二进制包搭建出的k8s集群&#xff…

[附源码]计算机毕业设计动漫电影网站Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

电子采购软件如何提高企业效率?

企业采购致力于提高生产力和效率&#xff0c;并实现更高的职能和跨职能支出的可见性。电子采购软件解决方案帮助企业实现其目标并做得更多&#xff0c;因此成为了具有前瞻性的采购领导人的明智选择。 以下是使用电子采购软件的四个主要优势&#xff1a;1、降低成本 降低成本是电…

python包管理pip常见操作

一、pip安装 暂略 二、pip常用命令 1、显示版本和路径 pip --version 2、获取帮助 pip --help 3.升级 pip pip install -U pip 4.安装资源包 pip install SomePackage # 最新版本 pip install SomePackage1.0.4 # 指定版本 pip install SomePackage&g…

微服务框架 SpringCloud微服务架构 分布式事务 38 动手实践 38.8 案例实现TCC 模式【实现】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式事务 文章目录微服务框架分布式事务38 动手实践38.8 案例实现TCC 模式【实现】38.8.1 声明TCC 接口38 动手实践 38.8 案例实现TCC 模…

第34篇 网络(四)FTP(二)

导语 前面讲述了一个最简单的FTP客户端程序的编写&#xff0c;这一节我们将这个程序进行扩展&#xff0c;使其可以浏览并能下载服务器上的所有文件。 环境&#xff1a;Windows Xp Qt 4.8.5QtCreator 2.8.0 目录 一、修改界面二、功能实现 正文 一、修改界面 我们删除了T…

当vivo领先后,该学着“快”起来了

文|智能相对论 作者|佘凯文 随着一个个大热球队的爆冷&#xff0c;今年世界杯赛事正在渐入高潮。就目前的形势来看&#xff0c;世界杯最大的悬念在于究竟是“老王”圆梦&#xff0c;还是“新王”登基&#xff0c;又或者是摩洛哥这只黑马一黑到底。 新老球星的更迭&#xff0…

Selenium浏览器自动化测试框架

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google C…

设计模式概述(一)

很多小伙伴&#xff0c;不知道设计模式是什么&#xff1f; 通常我们所说的设计模式是一种设计方案&#xff0c;是前人留下的经验及最佳实践。 想要学习设计模式&#xff0c;至少要把面向对象的基本结构全部了解。 设计模式&#xff0c;是建立在一定基础上的思维训练。 学习设…