Mapreduce工作机制

MapReduce是一种并行编程模型,包含Map和Reduce两个阶段。Map阶段将数据分块并进行处理,Reduce阶段则对Map阶段的输出进行合并处理。文件切片由InputSplit决定,RecordReader按行读取数据。Shuffle阶段包括分区、排序和Combiner,Reduce阶段则根据分区号从各个Map任务获取数据并执行业务处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mapreduce工作机制

在这里插入图片描述

一、MapReduce简介

MapReduce是一种并行编程模型,将计算阶段分为两个阶段:Map阶段和Reduce阶段。首先把输入数据源分块,交给多个Map任务去执行,Map任务执行Map函数,根据某种规则对数据分类,写入本地硬盘。然后进入Reduce阶段,该阶段由Reduce函数把Map阶段具有相同key值的中间结果收集到相同Reduce结点进行合并处理,并将结果写入本地磁盘。最终结果通过合并Reduce任务的输出得到。

二、文件切片

InputFormat 的主要功能就是确定每一个 map 任务需要读取哪些数据以及如何读取数据的问题,每一个 map 读取哪些数据由 InputSplit(数据切片)决定,如何读取数据由 RecordReader 来决定。InputFormat 中就有获取 InputSplit 和RecordReader 的方法。
默认输入格式为TextInputFormat,是FileInputFormat的实现类

  1. FileInputFormat继承InputFormat,getSplites()方法
    先验证输入的文件路径是否存在,存在返回可工作的Datanode集合
    将数据分成一个个Block块,系统默认物理分块大小为128M,实际分割时回进行判断是不是以回车符结尾,即判断最后的单词是否完整,不完整会读完这句话即到最近的一个回车符再进行分块,形成逻辑分块,逻辑分块最小是128M,会对剩余的文件大小进行判断,是否小于1.1倍的128M,如果在这范围之内,则不再进行切分,直接归为一个block块即一个切片。
    同时,对数据进行切割时记录起始文件,以及结束位置,目的是在后期调用数据时保证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值