广告
返回顶部
首页 > 资讯 > 数据库 >MapReduce工作流程
  • 731
分享到

MapReduce工作流程

MapReduce工作流程 2014-07-24 00:07:06 731人浏览 才女
摘要

mapReduce工作流程图 流程详解(重点) MapTask 待处理的文本通过submit()方法,获取待处理的数据信息,然后根据InputFORMat切片方法机制,生成切片方法文件。把切片方法文件和资源配置文件全部提交在资源路径。提

MapReduce工作流程

mapReduce工作流程图

流程详解(重点)

MapTask

  1. 待处理的文本通过submit()方法,获取待处理的数据信息,然后根据InputFORMat切片方法机制,生成切片方法文件。把切片方法文件和资源配置文件全部提交在资源路径。提交的信息有:Job.split、wc.jar、Job.xml
  2. 把资源提交路径下的信息文件提交给YARN集群或者本地内存中,之后YARN集群根据提交的信息启动Mr appmaster主机
  3. Mr appmaster根据提交的切片规划机制计算出MapTask的数量,生成对应的MapTask任务。
  4. MapTask任务根据Mr appmaster分配的数据量,去原始文件当中读取相应切片的数据。读取数据需要借助InputFormat中定义的 RecordReader(如果没有定义,则会默认使用TextInputFormat)进行切片
  5. 如果使用默认切片方法,则每读取一行,在Mapper类中进行逻辑运算,即通过获取到的key-value值确定文件传到Reduce类中的key-value值
  6. 逻辑运算完成后,通过Context.write(k,v)方法进行数据传输。此时先将结果(数据)写入到一个环形缓冲区,在这个环形缓冲区中一分为二,从右侧的缓冲区开始写入数据(键值对),从左侧开始写入数据的索引
  7. 在往环形缓冲区写入数据的过程中,不仅要写入数据的索引,还需要写出数据所在分区(MapReduce中分区默认有一个,也可以指定多个分区)。在声明了所在的分区之后,要对键值对进行排序。排序不是每时每刻进行的,是在数据写入完成,或者数据往磁盘溢写的时候,要进行一次排序
  8. 当内存已存入80%时,将环形缓冲区中的数据溢写到磁盘中,并将缓冲区中的数据清空,之后在反向写入数据和索引(顺时针改为逆时针/逆时针改为顺时针)。如果数据过多,会进行多次溢写,溢写时根据分区溢写,并且每个分区内的数据是有序的
  9. 对溢写文件通过Merge进行归并排序,之后通过Combiner对数据进行合并

ReduceTask

  1. MapTask数据处理完成之后,将数据写入缓冲区分区或者磁盘中去,磁盘中存储的文件信息与缓冲区存储的文件信息相同,都有键值对及其分区和索引。
  2. 在所有的MapTask任务完成后,Mr appmaster做出响应。Mr appmaster根据MapTask输入的分区数确定ReduceTask的数量
  3. 之后Mr appmaster启动相应数量的ReduceTask,并告知ReduceTask处理数据的范围(数据分区),一个分区需要有一个ReduceTask处理数据。ReduceTask1处理partition 1的数据,ReduceTask2处理partition2的数据……
  4. ReduceTask将MapTask中相应分区中的数据下载到ReduceTask本地磁盘中,并将文件进行合并,之后再对文件中的数据进行归并排序
  5. 通过GroupinGComparator(k,knext)方法对文件进行分组,之后将key值相同的数据调用Reduce(k,v)方法,一次读取一组
  6. 通过OutPutFormat将数据输入到结果文件中(默认调用TextOutPutFormat)。如果有多个ReduceTask,则写入到多个输出文件中

Shuffle

  1. maptask收集我们的map()方法输出的kv对,放到内存缓冲区中
  2. 从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件
  3. 多个溢出文件会被合并成大的溢出文件
  4. 在溢出过程中及合并的过程中,都要调用partitioner进行分区和针对key进行排序
  5. reducetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据
  6. reducetask会取到同一个分区的来自不同maptask的结果文件,reducetask会将这些文件再进行合并(归并排序)
  7. 合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法)

总结

  • MR流程总共分为四个阶段:
  1. submit阶段:切片job.split和配置项信息job.xml形成文件提交到一个资源路径,然后通过YARN启动运行
  2. MapTask任务处理阶段:读取切片数据、处理切片数据
  3. Shuffle阶段(MapTask任务执行结束到ReduceTask任务执行之前):MapTask写出数据到环形缓冲区、分区、排序、溢写文件……
  4. ReduceTask任务处理阶段:读取环形缓冲区数据、读取溢写文件数据、reduce运算逻辑、输出结果到输出文件
  • 注意:

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

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

您可能感兴趣的文档:

--结束END--

本文标题: MapReduce工作流程

本文链接: https://www.lsjlt.com/news/8640.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MapReduce工作流程
    MapReduce工作流程图 流程详解(重点) MapTask 待处理的文本通过submit()方法,获取待处理的数据信息,然后根据InputFormat切片方法机制,生成切片方法文件。把切片方法文件和资源配置文件全部提交在资源路径。提...
    99+
    2014-07-24
    MapReduce工作流程
  • MapReduce工作机制是什么
    这篇文章主要介绍了MapReduce工作机制是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MapReduce工作机制是什么文章都会有所收获,下面我们一起来看看吧。MapReduce,本质就是一种编程模型,...
    99+
    2023-06-27
  • MapReduce的工作原理是什么
    本篇文章为大家展示了MapReduce的工作原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive...
    99+
    2023-06-03
  • SpringMVC工作流程
    SpringMVC工作流程 一、SpringMVC简介SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,...
    99+
    2014-08-02
    java教程 SpringMVC 工作流程
  • MapReduce切片机制及执行流程
    MapReduce的切片机制 在Map阶段会将读取进来的数据进行逻辑切片进行处理。此切片与HDFS的切块不同,HDFS的切块是将文件按照block块的形式保存起来,mr则是将文件按照切片数进行计算默认切片大小等于块大小,也就是128m切一...
    99+
    2017-01-02
    MapReduce切片机制及执行流程
  • openstack组件工作流程
    OpenStack组件的工作流程大致可以分为以下几个步骤:1. 用户使用OpenStack的命令行工具或Web界面发起请求。2. 请...
    99+
    2023-10-11
    openstack
  • 【Flowable】Flowable工作流教程
    开始 Flowable是什么? Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定...
    99+
    2023-09-05
    java 开发语言 数据库
  • 云服务器工作流程
    云服务器是一种虚拟化资源,将计算资源分配给不同的用户,并提供按需访问和使用资源的平台。以下是云服务器的一些基本工作流程: 注册和配置:用户在云服务器提供商的网站上注册,填写其用户信息和计算资源的配置信息。这些信息通常会在服务条款中详细说...
    99+
    2023-10-26
    工作流程 服务器
  • 详解Redux的工作流程
    目录Redux理解redux是什么什么情况下需要使用redux?redux工作流程图actionreducerstore求和案例——纯react版求和案例&m...
    99+
    2022-11-13
  • 浅谈Springrefresh的工作流程
    目录功能分类具体步骤1. prepareRefresh2. obtainFreshBeanFactory3. prepareBeanFactory4. postProcessBean...
    99+
    2023-05-17
    Spring refresh refresh工作流程
  • SpringBootShiroauto-configure工作流程详解
    目录01-Shiro 自动配置原理02-自动配置类03-Filter 相关的配置类04-总结01-Shiro 自动配置原理 Shiro 与 Spring Boot 集成可以通过 sh...
    99+
    2023-02-10
    Spring Boot Shiro auto-configure Spring Boot Shiro工作流程
  • 3ds Max 和 Away3D工作流程
    作者:Jens Chr Brynildsen       随着Away3d 4.0的发布,我们准备了一系列关于工作流程的教程。这个教程将会演示如何从3ds Max中导出带骨骼动画的模型,并且在Away3d中加入互动元素。使用方向键,E键,S...
    99+
    2023-01-31
    工作流程 ds Max
  • Golang编程并发工具库MapReduce使用实践
    目录环境项目需求mapReduce使用说明需求实现业务逻辑创建任务队列运行结果结论引申阅读环境 go version go1.16.4 windows/amd64 Intel(R) ...
    99+
    2022-11-13
  • springboot+camunda实现工作流的流程分析
    1.在camunda modeler工具里面写流程,任务执行指明Java类 2.保存文件放在resources目录下,并建立一个processes.xml的空文件 3.依赖配置 ...
    99+
    2022-11-12
  • 数据库相关工作流程与工具
          分享下,工作过程中数据库相关工作的流程:  接到产品需求,根据需求进行领域模型设计   主要识别有哪些实体及关系、相关方及角色。例如:A既是服务提供方也可以是业务提供方甚至同时是接入方。他们在模型上是要考虑的。 在navic...
    99+
    2017-12-30
    数据库相关工作流程与工具
  • Git的工作流程是什么
    本文小编为大家详细介绍“Git的工作流程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Git的工作流程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Git 工作流程一般工作流程如下:克隆 Git 资...
    99+
    2023-06-17
  • springmvc的工作流程是什么
    Spring MVC的工作流程如下:1. 客户端发送HTTP请求到DispatcherServlet。2. DispatcherSe...
    99+
    2023-08-18
    springmvc
  • mvc的工作流程是什么
    MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(Vi...
    99+
    2023-10-26
    mvc
  • Sentinel的工作流程是什么
    本篇内容主要讲解“Sentinel的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sentinel的工作流程是什么”吧!Sentinel统计QPS...
    99+
    2022-10-19
  • CSS的工作流程是什么
    本篇内容主要讲解“CSS的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS的工作流程是什么”吧! 从上面的页面渲染流程可以知道浏览器在解析了...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作