千家信息网

MapReduce是怎么执行的

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这期内容当中小编将会给大家带来有关MapReduce是怎么执行的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1mr原理Mapreduce是一个分布式运算程序的编程
千家信息网最后更新 2025年02月04日MapReduce是怎么执行的

这期内容当中小编将会给大家带来有关MapReduce是怎么执行的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1mr原理


Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架;

Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上;

2 为什么要用mapreduce


  • 海量数据在单机上处理因为硬件资源限制,无法胜任

  • 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度

  • 引入mapreduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理


3 mapreduce结构及核心运行机制


1结构






一个完整的mapreduce程序在分布式运行时有三类实例进程:

  • MRAppMaster:负责整个程序的过程调度及状态协调

  • mapTask:负责map阶段的整个数据处理流程

  • ReduceTask:负责reduce阶段的整个数据处理流程

思想:分而治之,先分后合



2整体流程图




其中,maptask的数量是不能设置的,reducetask可以自己设置job.setNumReduceTasks(5);


3流程解析


1.一个mr程序启动的时候,最先启动的是MRAppMaster,MRAppMaster启动后根据本次job的描述信息,计算出需要的maptask实例数量,然后向集群申请机器启动相应数量的maptask进程

2.maptask进程启动之后,根据给定的数据切片范围进行数据处理,主体流程为:

  • 利用客户指定的inputformat来获取RecordReader读取数据,形成输入KV对

  • 将输入KV对传递给客户定义的map()方法,做逻辑运算,并将map()方法输出的KV对收集到缓存

  • 将缓存中的KV对按照K分区排序后不断溢写到磁盘文件


3.MRAppMaster监控到所有maptask进程任务完成之后,会根据客户指定的参数启动相应数量的reducetask进程,并告知reducetask进程要处理的数据范围(数据分区)

4.Reducetask进程启动之后,根据MRAppMaster告知的待处理数据所在位置,从若干台maptask运行所在机器上获取到若干个maptask输出结果文件,并在本地进行重新归并排序,然后按照相同key的KV为一个组,调用客户定义的reduce()方法进行逻辑运算,并收集运算输出的结果KV,然后调用客户指定的outputformat将结果数据输出到外部存储


4 shuffle机制


1概述

  1. mapreduce中,map阶段处理的数据如何传递reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle;

  2. shuffle: 洗牌、发牌--(核心机制:数据分区,排序,缓存);

  3. 具体来说:就是将maptask输出的处理结果数据,分发给reducetask,并在分发的过程中,对数据按key进行了分区和排序


2主要流程






shuffle是MR处理流程中的一个过程,它的每一个处理步骤是分散在各个map task和reduce task节点上完成的,整体来看,分为3个操作:

  • 分区partition

  • Sort根据key排序

  • Combiner进行局部value的合并


具体来说就是将maptask输出的处理结果数据,分发给reducetask,并在分发的过程中,对数据按key进行了分区和排序;




3详细流程



  1. maptask收集我们的map()方法输出的kv对,先进入分区方法,把数据标记好分区,然后把数据发送到内存缓冲区(默认100M)中

  2. 当环形缓冲区达到80%时,进行溢写,从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件 (溢写前对数据进行快速排序,排序按照key的索引进行字典顺序排序)

  3. 多个溢出文件会被合并成大的溢出文件(归并排序算法),对溢写的文件也可以进行combiner操作,前提是汇总操作,求平均值不行。

  4. 在溢出过程中,及合并的过程中,都要调用partitoner进行分组和针对key进行排序

  5. reducetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据,拉取的数据先存储在内存中,内存不够了,再存储到磁盘。

  6. reducetask会取到同一个分区的来自不同maptask的结果文件,reducetask会将这些文件再进行合并(归并排序)

  7. 合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法)

Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快

缓冲区的大小可以通过参数调整, 参数:io.sort.mb 默认100M

上述就是小编为大家分享的MapReduce是怎么执行的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

数据 处理 排序 文件 流程 程序 过程 结果 进程 输出 方法 缓冲区 缓冲 运算 分布式 客户 框架 逻辑 运行 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数云软件开发公司 华为服务器开关指示灯闪烁 永擎服务器主板卡在系统初始化 软件开发和数据开发的区别 计算机网络安全主观题库 点津宁波网络技术有限公司 163的收信服务器在哪里 移动互联网与科技进步的论文 phpmy数据库设置密码 4g摄像机如何连接视频服务器 数据库名称和表空间是什么 软件开发程序员月收入多少 梦幻西游转服务器多久刷一次 软件开发成功祝贺语 新吴区软件开发生产过程 电路仿真软件和软件开发语言 科技互联网那点事 阿城软件开发 网络安全认证的意义 6个服务器多少瓦 科技创新互联网创意书写作格式 冬季网络安全教育主题班会图片 服务器的可靠性的指标计算 云服务器搭建安全 计算机网络技术包含哪两种技术 数据库主建怎么写 心动网络技术支撑部 咪莫服务器攻略视频 岳西软件开发有限公司 学校网络安全演练方案通知
0