Hadoop MapReduce

MapReduce分为两个阶段,分为Map阶段和Reduce阶段,可以自定义map函数reduce函数
在这里插入图片描述

map函数的输入是行在文件的字节偏移量,value是文件的一行数据

reduce函数的输入是key和对应key的value组,然后reduce函数可以对这一组数据进行处理

再来看mapreduce是如何实现的,因为可以知道reduce阶段value是一组的,包括mapreduce还发生了文件读取写入文件的操作,包括一些序列化

有一个文件时,文件在底层操作系统是很多个数据块

map是以数据切片逻辑进行处理的,所以当读取文件数据时,会对物理文件进行逻辑切片,然后一个切片就对应一个MapTask尽量保证切片大小等于数据块大小,让一个MapTask直接本地处理加快处理速度

Map阶段处理逻辑,map读入文件的每行数据,然后以key-value的方式处理输出到一个分区,输出到哪个分区取决于默认的还是自定义分区处理了,默认是根据键的哈希值确定分区

分区其实是先保存到一个环形缓存区,当环形缓存区达到一定阈值的时候,就会把缓冲区数据落盘落盘前会对分区内数据进行快速排序,如果有多个小文件,会对多个小文件进行归并排序,合成一个大文件,然后分区和reduceTask的数量一样

reduce阶段,reduce可会读取所有mapTask对应分区的所有文件,如果有多个文件,也会进行归并排序,这样就保证了Reduce函数的输入里的value,是一个相同Key的value集合。然后经过reduceTask函数进行数据处理,最终输出,输出文件数也跟reduceTask的个数相关,reduceTask的数目不能大于分区数目

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】SSH协议应用

SSH协议 SSH简介实现OpenSSH ssh中的四个文件~/.ssh文件路径实验解析 SSH 简介 SSH(secure shell)只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件&#xf…

面试题:RabbitMQ 消息队列中间件

1. 确保消息不丢失 生产者确认机制 确保生产者的消息能到达队列,如果报错可以先记录到日志中,再去修复数据持久化功能 确保消息未消费前在队列中不会丢失,其中的交换机、队列、和消息都要做持久化消费者确认机制 由spring确认消息处理成功后…

字符分类函数

字符分类函数 C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使用都需要包含⼀个头文件是 ctype.h 这些函数的使用方法非常类似,我们就讲解⼀个函数的事情,其他的非常类似: int i…

蓝桥杯速成5-AD/DA模数转换

一、原理图 上图可知该芯片使用的是iic时序,而不是51单片机的xpt2046时序,iic我们都很熟悉了吧 并且大赛还提供了我们iic底层驱动代码 左上角有AIN0-4四个转换输入通道,和AOUT一个输出通道,由控制字节选择 地址字节:0x…

Linux性能分析工具-perf并生成火焰图

1 简介 perf 是一个非常实用且深入的性能分析工具,适用于从底层硬件交互到上层应用程序逻辑的全方位性能剖析。 perf 工具的设计目的是为了帮助开发者和系统管理员分析应用程序以及内核本身的性能,寻找潜在的性能瓶颈,并据此进行针对性的优…

向上转型与向下转型

首先,一个对象在new的时候创建是哪个类型的对象,它从头至尾都不会变。即这个对象的运行时类型,本质的类型用于不会变。但是,把这个对象赋值给不同类型的变量时,这些变量的编译时类型却不同。 7.6.1 为什么要类型转换 …

实景三维技术在推进城市全域数字化转型的作用

4月2日,国家数据局发布《深化智慧城市发展推进城市全域数字化转型的指导意见(征求意见稿)》(下称:《指导意见》),向社会公开征求意见。 《指导意见》作为推进城市数字化转型的重要文件&#xf…

蓝桥杯刷题day09——霓虹【算法赛】

一、问题描述 晚上,小蓝正无聊的走在大路上,小蓝所在的街区是—个带有赛博朋克风格的街区。 他抬头—看,看到了很多霓虹灯牌。在其中的某一个店铺前,挂着一排的数字灯牌,每一个数字的显示都依靠7段LED管,亮着的灯管组成数字,具体来说如下图所示: 小蓝刚学过数字电路,他…

Makefile:调用shell脚本和嵌套调用多项目编译(九)

1、Makefile中调用shell脚本 Makefile中可以通过使用$(shell 指令)的方式调用shell脚本a指令:输出当前文件夹下的所有文件b指令:输出当前路径c指令:如果当前目录下不存在abc文件那么创建一个abc的文件 a$(shell ls ./) b$(shell pwd) filen…

神经网络与深度学习(二)

一、深度学习平台 张量(Tensor) 是一个物理量,对高维(维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量 计算图 用“结点”…

Transformer模型-用jupyter演示逐步计算attention

学习transformer模型-用jupyter演示如何计算attention,不含multi-head attention,但包括权重矩阵W。 input embedding:文本嵌入 每个字符用长度为5的向量表示: 注意力公式: 1,准备Q K V: 先 生…

官宣!一文掌握2024百度CreateAI开发者大会最新议程

4月16日上午9:00,以“创造未来”为主题的2024百度Create AI开发者大会将在深圳国际会展中心(宝安)开幕。此次大会将是近十年来,粤港澳大湾区规格最高的AI大会,将聚焦炙手可热的AI话题,在大会主论坛、分论坛…

【JVM】如何定位、解决内存泄漏和溢出

目录 1.概述 2.堆溢出、内存泄定位及解决办法 2.1.示例代码 2.2.抓堆快照 2.3.分析堆快照 1.概述 常见的几种JVM内存溢出的场景如下: Java堆溢出: 错误信息: java.lang.OutOfMemoryError: Java heap space 原因:Java对象实例在运行时持…

Python快速入门系列-10(Python进阶与扩展)

第十章:Python进阶与扩展 10.1 Python与其他语言的整合10.1.1 使用Python的C API示例:使用C API创建一个简单的Python扩展10.1.2 使用Cython加速Python代码示例:使用Cython编写一个快速的矩阵乘法函数10.1.3 使用SWIG创建接口示例:使用SWIG为C++类生成Python接口10.2 Pytho…

【项目实战经验】DataKit迁移MySQL到openGauss(上)

前言 本文将分享DataKit迁移MySQL到openGauss的项目实战,供广大openGauss爱好者参考。 1. 下载操作系统 https://www.openeuler.org/zh/download https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956 https://support.huawei.com/enterprise…

深入浅出 PyTorch

深入浅出Pytorch 目录: 为什么要学习pyTorch学哪类知识如何学习和掌握PyTorchPyTorch学习路径注意事项 PyTorch 优点 上手快:掌握Numpy和基本深度学习概念即可上手代码简洁灵活:用nn.module封装使网络搭建更方便;基于动态图机…

芒果YOLOv8旋转检测改进《旋转检测必看》提升篇149:从零开始训练 YOLOv8旋转检测教程说明,芒果改进推荐教程

芒果YOLOv8旋转检测改进《旋转检测必看》提升篇149:从零开始训练 YOLOv8旋转检测教程说明,芒果改进推荐教程 本文适用Windows/Linux/Mac:从零开始使用Windows/Linux/Mac训练 YOLOv8 算法项目 - 《旋转检测任务》 专栏完整目录链接&#xf…

编译 amd gpu 核心态驱动 rocm kmd linux kernel

AMD 开源了专门的 ROCm 的kmd Linux Kernel, 1,下载源代码 git clone --recursive https://github.com/ROCm/ROCK-Kernel-Driver.gitcd ROCK-Kernel-Driver/git checkout rocm-6.0.22,配置kernel cp -v /boot/config-$(uname -r) .config make menuconfig Graph…

Smart-Config SpringBoot动态变更配置 单机版apollo

Smart-Config(单机Apollo) 智能配置:单体应用下的动态配置。主要用来解决在单体应用没有配置中心时,想要实现动态变更配置,程序自动处理配置变更,给字段赋值的痛点。可以理解为单机版的Apollo。Apollo是携…

GROBID库文献解析

1. 起因 由于某些原因需要在大量的文献中查找相关内容,手动实在是太慢了,所以选择了GROBID库进行文献批量解析 2. GROBID介绍 GROBID是一个机器学习库,用于将PDF等原始文档提取、解析和re-structuring为结构化的XML/TEI编码文档&#xff0…