一、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在实时处理性能方面比较薄弱,不适合处理事务或者单一处理请求

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

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

  1. 解决方案和项目的区别_沃尔玛用大数据提高销售额,云计算和大数据技术之间的区别汇总...

    自从<纽约时报>发表有关沃尔玛如何利用大数据分析来最大化其销售额的文章以来,人们就对大数据充满了狂热.零售商发现飓风期间流行的糖果品牌Pop-Tarts的销量激增,并利用此知识增加了利润. ...

  2. 浅谈云计算和大数据技术

    浅谈云计算和大数据技术 背景: 随着计算机技术的发展,数据量日益增长,现有技术也很难满足业务的发展需求,在代码的层层迭代和优化之后,还是很难满足数据的增长需求,迫切需要一项新的技术来从事数据计算,因为 ...

  3. 大数据技术之MapReduce

    大数据技术之MapReduce 目录 大数据技术之MapReduce 第 1 章 MapReduce 概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1.2.1 优点 1. ...

  4. 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  5. 云计算和大数据技术---学习笔记

    云计算和大数据技术 Part 1 云计算基础 思维导图: 练习题: Part 1 云计算基础 思维导图: 练习题: 云计算技术是硬件技术和网络技术发展到一定阶段而出现的一种新的技术模型,通常技术人员在 ...

  6. 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  7. 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  8. 云计算与大数据技术应用前四章知识点整理

    第一章云计算概论 1.1什么是云计算 1.1.1云计算的定义: 定义:指按需使用IT资源和应用程序,通过互联网.按使用量付费. 像水电煤(资源性产品)一样利用你的IT资源,计算存储网络资源. 有三个关 ...

  9. 云计算与大数据技术 李春燕

    第一章  云计算概述 云计算:指按需使用IT资源和应用程序,通过互联网按使用量付费. 四种云 公有云:提供公共的IT资源 缺点:保密性较低 私有云:提供给政府.学校等地 优点:保密性高 社区云:研究人 ...

  10. 云计算与大数据技术应用 第一章

    云计算概述 什么是云计算 云计算的定义 云计算的特点 经典的云计算基础架构 云计算主要服务模式 云计算主要部署模式 经典的云计算产品 云计算技术的新发展 我国的云计算产业现状 云计算前景 云计算的概念 ...

最新文章

  1. linux存储--虚拟内存详解MMU、页表(十)
  2. 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )
  3. jsp:include和%@include%的区别
  4. boost::coroutine模块实现layout的测试程序
  5. 本地日志数据实时接入到hadoop集群的数据接入方案
  6. 线上环境 Linux 系统调用追踪
  7. android的视图动画,Android 视图动画(视图动画代码实现)
  8. go中的make和new的区别
  9. JavaSE进阶582-589 IO流(二)File类/目录拷贝
  10. leet234.回文链表
  11. iOS动画专题·UIView二维形变动画与CAAnimation核心动画
  12. MATLAB学习系列--绘制函数曲线
  13. DM36x 接入 AR0130 sensor
  14. 伽罗华域(Galois Field)理解、基于伽罗华域的四则运算(附详细python代码)
  15. LiDAR点云处理软件
  16. VC 显示 隐藏 工具栏 状态栏
  17. Python-FiPy有限体积安装
  18. Linux任督二脉之内存管理(三) PPT
  19. 怎么用PS制作手绘黑白水墨插画效果
  20. html做人脸识别 博客,一个人脸识别+特效的小例子

热门文章

  1. 【企业架构设计实战】技术架构设计指南
  2. 百度搜索URL中的参数都是什么
  3. JAVA微信登陆详解
  4. 计算机弹奏怎么录视频教程,怎么录制视频教程?简单、快捷的方法尝试
  5. 使用pip安装pytorch失败,报错如下Could not find a version that satisfies the requirement torch
  6. 通信工程系的工程师选择好的平台有多重要?你看看华为中兴的电子工程师就知道差距了
  7. Android进阶——Small源码分析之启动流程详解
  8. 面试总结:我是如何通过阿里面试的?电话面+视频面+boss面+交叉面+HR面
  9. spark kafka directstream java.io.EOFException: Received -1 when reading from channel, socket has lik
  10. Android开发之播放音频