MapTask工作机制

news2025/7/18 20:44:30

目录

(1)Read阶段

(2)Map阶段

(3)Collect收集阶段

(4)Spill阶段

(5)Merge阶段

1)Read阶段

MapTask通过InputFormat获得的RecordReader,从输入InputSplit中解析出一个个key/value

 

(2Map阶段

该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value

      

 

3Collect收集阶段

在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。

      

 

4Spill阶段

溢写,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。

       溢写阶段详情:

       步骤1:利用快速排序算法对缓存区内的数据进行排序,排序方式是,先按照分区编号Partition进行排序,然后按照key进行排序。这样,经过排序后,数据以分区为单位聚集在一起,且同一分区内所有数据按照key有序。

       步骤2:按照分区编号由小到大依次将每个分区中的数据写入任务工作目录下的临时文件output/spillN.outN表示当前溢写次数)中。如果用户设置了Combiner,则写入文件之前,对每个分区中的数据进行一次聚集操作。

       步骤3:将分区数据的元信息写到内存索引数据结构SpillRecord中,其中每个分区的元信息包括在临时文件中的偏移量、压缩前数据大小和压缩后数据大小。如果当前内存索引大小超过1MB,则将内存索引写到文件output/spillN.out.index中。

 

(5Merge阶段

当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

       当所有数据处理完后,MapTask会将所有临时文件合并成一个大文件,并保存到文件output/file.out中,同时生成相应的索引文件output/file.out.index

       在进行文件合并过程中,MapTask以分区为单位进行合并。对于某个分区,它将采用多轮递归合并的方式。每轮合并mapreduce.task.io.sort.factor(默认10)个文件,并将产生的文件重新加入待合并列表中,对文件排序后,重复以上过程,直到最终得到一个大文件。

 

       让每个MapTask最终只生成一个数据文件,可避免同时打开大量文件和同时读取大量小文件产生的随机读取带来的开销

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

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

相关文章

单协议 2.4GHz CC2651R31T0RGZR/CC2651R31T0RKPR无线MCU 802.15.4,蓝牙5.2

CC2651R31T0RGZR描述:具有 352KB 闪存的 SimpleLink 32 位 Arm Cortex-M4 单协议 2.4GHz 无线 MCU 48-VQFN -40C ~ 105C48QFN(明佳达电子)【介绍】CC2651R3器件是一款单协议 2.4 GHz 无线微控制器 (MCU),支持以下协议:…

35- tensorboard的使用 (PyTorch系列) (深度学习)

知识要点 FashionMNIST数据集: 十种产品的分类. # T-shirt/top, Trouser, Pullover, Dress, Coat,Sandal, Shirt, Sneaker, Bag, Ankle Boot.writer SummaryWriter(run/fashion_mnist_experiment_1) # 网站显示一 tensorboard的使用 在网站显示pytorch的架构:1.1 …

常规非常规的卷及操作

最近看论文看到深度卷积的内容,然后就想着学习一下,发现论文中说的深度卷积并不是真正的深度卷积,感觉是分组卷积的一种,但是对于论文中得使用方式又有点不理解,就留下了一个问题放在了博客的最后,这里记录…

【蓝桥杯刷题】坑爹的负进制转换

【蓝桥杯刷题】——坑爹的负进制转换😎😎😎 目录 💡前言🌞: 💛坑爹的负进制转换题目💛 💪 解题思路的分享💪 😊题目源码的分享&#x1f6…

Windows环境下Elasticsearch的下载与安装

一、elasticsearch下载地址1、官网:https://www.elastic.co/cn/即刻体验Elasticsearch2、直接解压3、进入bin目录双击.bat文件直接启动4、报错:error downloading geoip database [GeoLite2-City.mmdb],elasticsearch.yml中增加:i…

FTP建议使用教程——以Xftp7为例

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和…

Jmeter+Ant+Jenkins接口自动化测试平台搭建

平台简介一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。Jmeter支持接口的测试,Ant支持自动构建,而Jenkins支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动化测…

九.虚拟内存VM

1.寻址2.虚拟页VM将虚拟内存分割为称为虚拟页的大小固定的块1247是缓存的、36是未缓存的、05是未分配的下图为缺页及处理后页表将虚拟页映射到物理页页表是一个页表条目(PTE)的数组多个虚拟页面可以映射到同一个物理共享页面内存映射:将一组连续的虚拟页映射到一个文…

蓝牙耳机哪个品牌好一点?佩戴最舒服的蓝牙耳机排行

近年来,蓝牙耳机市场呈爆发式增长,越来越优秀的产品出现在大众视野。那么蓝牙耳机哪个品牌好一点?下面,我来给大家推荐几款佩戴最舒服的蓝牙耳机,一起来看看吧。 一、南卡小音舱蓝牙耳机 参考价:246 蓝牙…

一文带你彻底探究webgis坐标系知识(地理坐标系投影坐标系)

首先讲讲经纬度坐标系的起源与发展。其实目的很简单就是为了用数字化的方式来表示我们的地球和世界。 真正意义上与webgis相关的坐标系我们还得先来说说wgs84坐标系。这是老美1984年提出的一套坐标系。故命名为84坐标系。84坐标系是目前应用范围比较广的坐标系,但他并不是最早…

Elasticsearch:理解 Master,Elections,Quorum 及 脑裂

集群中的每个节点都可以分配多个角色:master、data、ingest、ml(机器学习)等。 我们在当前讨论中感兴趣的角色之一是 master 角色。 在 Elasticsearch 的配置中,我们可以配置一个节点为 master 节点。master 角色的分配表明该节点…

人机协同“全能秘书”丨 AI+金融“降本增效”全靠它!

近年来,我国金融科技蓬勃发展,以人工智能为主要代表的创新技术,为各大金融企业提供了更智能化的金融服务模式,科技与金融业务的深度融合,为金融行业注入新的发展动力。相比较传统人工客服,智能客服以算法为…

函数模板(template关键字的应用)

注释:本文主要介绍了函数模板的由来以及用法,还有关键字template。 我们感到时间的延续像一条我们无法逆行的小溪。 ——柏格森 文章目录一、语言的定式二、函数模板2.1 函数模板格式2.2 模板函数的实例化2.2.1隐式实例化/显式实例化2.3 模板参数的匹配…

SQL注入——floor报错注入

目录 一,涉及到的函数 rand() floor() concat_ws() as别名,group by分组 count() 报错原理 一,涉及到的函数 rand()函数:随机返回0~1间的小数 floor()函数:小数向…

C/C++开发,无可避免的多线程(篇六).线程池封装类

一、线程池概念 线程池是一种多线程处理方式,它包含一个线程工作队列和一个任务队列。当有任务需要处理时,线程池会从线程工作队列中取出一个空闲线程来处理任务,如果线程工作队列中没有空闲线程,则任务会被放入任务队列中等待处理…

M1、M2芯片Mac安装虚拟机

目录前言一、安装二、网络设置三、连接SSH客户端前言 一直想着给M1 Mac上安装虚拟机,奈何PD收费,找的破解也不稳定,安装上镜像就起不来。 注:挂长久的分享莫名其妙被封,需要安装包请私信我。 一、安装 虚拟机选择&a…

一次惨痛教训让我写了个Windows定期备份文件脚本

目录前言正文前言 说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事 我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学习生涯以及职业生涯阶段,我用过四款笔记应用——Onenote、语雀、印象笔记、Typora 其中我个…

Nacos配置中心,分组配置参考,以及python、go、bash客户端连接获取

Nacos使用说明 nacos官方网站 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html 1、基本配置说明 nacosIP地址:http://xxxxx:8848/nacos/ 服务管理端登录账号:nacos XXX Java最小配置,其他客户端可参考,配置可对应到第三章…

【动态规划】

动态规划1引言题目509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯小结53. 最大子数组和结语引言 蓝桥杯快开始了啊&#xff0c;自从报名后还没认真学过算法有(>﹏<)′&#xff0c;临时抱一下佛脚&#xff0c;一起学学算法。 题目 509. 斐波那契数 斐波那契数 &am…

你来看看这几行代码到底创建了几个字符串?

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…