【MapReduce】03.MapReduce框架原理

news2024/11/16 19:36:01

目录

1.InputFormat数据输入

1.1.切片与MapTask并行度决定机制

1.2.Job提交流程源码和切片源码

1.3.FileInputFormat切片机制

1.4.TextInputFormat

1.5.CombineTextInputFormat切片机制

1.6.CombineTextInputFormat


1.InputFormat数据输入

1.1.切片与MapTask并行度决定机制

        MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度。

MapTask并行度决定机制

        数据块:Block是HDFS物理上的数据分割,数据块是HDFS存储数据单位

        数据切片:数据切片是MapReduce程序计算输入数据的单位,一个切片会对应一个MapTask(逻辑切分,并非物理切分)

        1.一个Job的Map阶段并行度由客户端在提交Job时的切片数决定

        2.每一个Split切片分配一个MapTask并行实例处理

        3.默认情况下,切片大小=BlockSize

        4.切片时不考虑数据集整体,而是逐个针对每个文件单独切片

1.2.Job提交流程源码和切片源码

1)Job提交流程源码

2)FileInputFormat切片源码

        1.程序先找到数据存储的目录

        2.开始遍历处理(规划切片)目录下的每一个文件

        3.遍历第一个文件

                3.1.获取文件大小fs.sizeOf(txt)

                3.2.计算切片大小computeSplitSize(Math.max(minSize.Math.min(maxSize.blocksize)))=blocksize=128M

                3.3.默认情况下,切片大小=blocksize

                3.4.开始切片,(0-128M)(128-256M)(256-300M)每次切片时,都要判断切完剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片

                3.5.将切片信息写到一个切片规划文件中

                3.6.InputSplit只记录切片的元数据信息,比如起始位置、长度以及所在节点列表

        4.提交切片规划文件到Yarn上,Yarn上的MrAppMaster就可以根据切片规划文件计算开启MapTask个数

1.3.FileInputFormat切片机制

1)切片机制

        1.简单的按照文件的长度进行切片

        2.切片大小,默认等于bolck大小

        3.切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

2)FileInputFormat切片大小的参数配置

        源码中计算切片大小的公式

        Math.max(minSize,Math.min(maxSize,blockSize))

        mapreduce.input.fileinputformat.split.minsize=1(默认值为1)

        mapreduce.input.fileinputformat.split.maxsize=Long.MAXValue(默认值Long.MAXValue)

        因此,默认情况下, 切片大小=blockSize

        切片大小设置

        maxsize(切片最大值):参数如果调的比blockSize小,则会让切片变小,而且等于配置的这个参数的值

        minSize(切片最小值):参数调的比blockSize大,则可以让切片变得比blockSize大

        获取切片信息API

        

//获取切片的文件名称
String name = inputSplit.getPath().getName();
//根据文件类型获取切片信息
FileSplit inputSplit = (FileSplit)context.getInputSplit();
1.4.TextInputFormat
1.5.CombineTextInputFormat切片机制

1)应用场景

        用于小文件过多的场景,可以将多个小文件从逻辑上规划到一个切片中,这样多个小文件就可以交给一个MapTask处理

2)虚拟存储切片最大值设置

        CombineTextInputFormat.setMaxInputSplitSize(job,4194304);//4M

3)切片机制

        生成切片过程包括:虚拟存储过程和切片过程两部分

1.6.CombineTextInputFormat

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

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

相关文章

小白跟做江科大51单片机之AD/DA

1.看原理图找接口 2.看时序图编写读取数据代码 XPT2046.c代码 #include <REGX52.H> //引脚定义 sbit XPY2046_DINP3^4; sbit XPY2046_CSP3^5; sbit XPY2046_DCLKP3^6; sbit XPY2046_DOUTP3^7; unsigned int XPT2046_ReadAD(unsigned char Command) { unsigned char …

基于SSM的党务政务服务热线平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的党务政务服务热线平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX

Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化&#xff1b;提供完整的远程 Windows 可用性&#xff1b;以类似本地的性能远程工作&#xff1b;安全地保护系统和知识产权&#xff08;IP&#xff09;&am…

landsat遥感卫星地表温度LST计算教程

地表温度反演算法主要有以下三种&#xff1a;大气校正法&#xff08;也称为辐射传输方程&#xff1a;Radiative Transfer Equation——RTE&#xff09;、单通道算法和分裂窗算法。 大气校正法基本原理&#xff1a;首先估计大气对地表热辐射的影响, 然后把这部分大气影响从卫星传…

MySQL实战:SQL优化及问题排查

有更合适的索引不走&#xff0c;怎么办&#xff1f; MySQL在选取索引时&#xff0c;会参考索引的基数&#xff0c;基数是MySQL估算的&#xff0c;反映这个字段有多少种取值&#xff0c;估算的策略为选取几个页算出取值的平均值&#xff0c;再乘以页数&#xff0c;即为基数 查…

24V 36V 48V 60V 72V 转3.3V 5V动态响应好 惠海H62410A模块供电解决方案

H62410A是一种内置100V耐压MOS&#xff0c;支持输入高达90V的高压降压开关控制器&#xff0c;可以向负载提供1A的连续电流。H62410A支持输出恒定电压&#xff0c;可以通过调节VFB采样电阻来设置输出电压&#xff0c;同时支持最大电流限制&#xff0c;可以通过修改CS采样电阻来设…

线下活动线上同步直播?媒体同步直播的好处

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 线下活动线上同步直播&#xff0c;即利用互联网技术将线下活动的实时内容传输到线上平台&#xff0c;供无法到场的观众在线观看。这种直播方式的好处主要体现在以下几个方面&#xff1a;…

自动驾驶技术解析与关键步骤

目录 前言1 自动驾驶主要技术流程1.1 车辆周围环境感知1.2 车辆和行人检测分析1.3 运动轨迹规划 2 关键技术概述2.1 车辆探测与图片输入2.2 行人检测2.3 运动规划2.4 电子地图2.5 轨迹预测2.6 交通灯分析2.7 故障检测 结语 前言 自动驾驶汽车作为未来交通领域的重要发展方向&a…

13:大数据与Hadoop|分布式文件系统|分布式Hadoop集群

大数据与Hadoop&#xff5c;分布式文件系统&#xff5c;分布式Hadoop集群 Hadoop部署Hadoop HDFS分布式文件系统HDFS部署步骤一&#xff1a;环境准备HDFS配置文件 查官方手册配置Hadoop集群 日志与排错 mapreduce 分布式离线计算框架YARN集群资源管理系统步骤一&#xff1a;安装…

【吊打面试官系列】Java虚拟机JVM篇 - 关于类加载器的JVM面试题

大家好&#xff0c;我是锋哥。今天分享关于类加载器的JVM面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是类加载器&#xff1f; 类加载器是一个用来加载类文件的类。Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多能互补灵活性和用户低碳意愿的区域综合能源系统鲁棒优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

git - 笔记

为什么要学习Git 为什么要学习Git软件 为什么学习 因为在主流开发中&#xff0c;基于互联网软件开发的项目都会使用Git软件来进行项目开发过程中的资源管理 比如人力资源 代码资源 比如前端资源 .html .java等代码资源 文档资源 像项目开发中涉及到的需求文档等 这种项目中管理…

微服务超大Excel文件导出方案优化

1、在导出Excel时经常会碰到文件过大&#xff0c;导出特别慢 2、微服务限制了请求超时时间&#xff0c;文件过大情况必然超时 优化思路&#xff1a; 1、文件过大时通过文件拆分、打包压缩zip&#xff0c;然后上传到oss,并设置有效期&#xff08;30天过期&#xff09; 2、把…

kafka(三)springboot集成kafka(1)介绍

基于kafka新版本 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency> </dependencies> 一、kafkaProducer 1、介绍…

Python工具小技巧

Python工具小技巧 将.py后缀文件转化为.exe后缀文件安装PyinstallerPyinstaller参数大全 将.py后缀文件转化为.exe后缀文件 目前比较常见的打包exe方法都是通过Pyinstaller来实现的&#xff0c;本文也将使用这种常规方法。 安装Pyinstaller 首先我们要先安装Pyinstaller&…

Sora的新商业视角:从生态构建到未来产业协同

在科技飞速发展的当下&#xff0c;人工智能与机器学习不仅重塑了我们的生活方式&#xff0c;还深刻地改变了商业模式的构建方式。Sora&#xff0c;作为一款前沿的AI视频生成工具&#xff0c;其盈利路径和未来产业协同的可能性值得深入探讨。 Sora学习资料&#xff1a;使用方式…

前端javascript的DOM对象操作技巧,全场景解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;前端泛海 景天的主页&#xff1a;景天科技苑 文章目录 1.js的DOM介绍2.节点元素层级关系3.通过js修改&#xff0c;清空节点…

新零售SaaS架构:订单履约系统架构设计(万字图文总结)

什么是订单履约系统&#xff1f; 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。 它连接了上游交易&#xff08;客户在销售平台下单环&#xff09;和下游仓储配送&#xff08;如库存管理、物流配送&#xff09;&#xff0c;确保信息流顺畅、操作协同&…

基于单片机的商品RFID射频安全防盗报警系统设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 3 1.1 总体设计要求 3 1.2 总体设计方案选择 3 1.3 总体控制方案选择 4 1.4 系统总体设计 5 2 项目硬件设计 7 2.1 单片机控制设计 7 2.2 按键电路设计 10 2.3 蜂鸣器报警电路设计 10 2.4 液晶显示电路设计 11 2.5 射频识别…

计算数据集的总体标准差pstdev()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算数据集的总体标准差 pstdev() [太阳]选择题 pstdev() 的作用是&#xff08;&#xff09; import statistics a [0, 0, 8, 8] print("【显示】a ",a) print("【执行】st…