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

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

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

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

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
4月前
|
存储 人工智能 大数据
云栖2025|阿里云开源大数据发布新一代“湖流一体”数智平台及全栈技术升级
阿里云在云栖大会发布“湖流一体”数智平台,推出DLF-3.0全模态湖仓、实时计算Flink版升级及EMR系列新品,融合实时化、多模态、智能化技术,打造AI时代高效开放的数据底座,赋能企业数字化转型。
1024 0
|
6月前
|
数据采集 人工智能 分布式计算
ODPS在AI时代的发展战略与技术演进分析报告
ODPS(现MaxCompute)历经十五年发展,从分布式计算平台演进为AI时代的数据基础设施,以超大规模处理、多模态融合与Data+AI协同为核心竞争力,支撑大模型训练与实时分析等前沿场景,助力企业实现数据驱动与智能化转型。
476 4
|
4月前
|
Kubernetes Cloud Native 云计算
云计算与云原生技术探索
🌟蒋星熠Jaxonic,云原生探索者!以代码为舟,遨游技术星河。专注容器化、微服务、K8s与DevOps,践行GitOps理念,拥抱多云未来。用架构编织星辰,让创新照亮极客征途!
云计算与云原生技术探索
|
4月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
6月前
|
存储 分布式计算 调度
云计算核心技术
云计算作为IT领域的热门技术,融合网格计算与虚拟化,通过资源池和分布式存储提供高效计算与存储服务。其架构涵盖物理资源、资源池、管理中间件及SOA构建层,关键技术包括虚拟化、海量数据处理、资源调度、服务管理及云平台,旨在实现低成本、高可靠、可扩展的服务交付。
611 0
云计算核心技术
|
6月前
|
SQL 分布式计算 大数据
我与ODPS的十年技术共生之路
ODPS十年相伴,从初识的分布式计算到共生进化,突破架构边界,推动数据价值深挖。其湖仓一体、隐私计算与Serverless能力,助力企业降本增效,赋能政务与商业场景,成为数字化转型的“数字神经系统”。
|
6月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
6月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据在智能物流运输车辆智能调度与路径优化中的技术实现(218)
本文深入探讨了Java大数据技术在智能物流运输中车辆调度与路径优化的应用。通过遗传算法实现车辆资源的智能调度,结合实时路况数据和强化学习算法进行动态路径优化,有效提升了物流效率与客户满意度。以京东物流和顺丰速运的实际案例为支撑,展示了Java大数据在解决行业痛点问题中的强大能力,为物流行业的智能化转型提供了切实可行的技术方案。
|
11月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
579 79
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
650 6