MapReduce Partition 分区

news2024/11/26 22:21:33

MapReduce Partition 分区

MapReduce输出结果个数研究

  • 在默认情况下
    不管Map阶段有多少个并发执行的task,到Reduce阶段,所有结果都将有一个task来进行处理,并且最终结果将输出到一个文件中,part-r-0000。
    image-20221128143034996

  • 可以进行手动的设置reduceTask的个数
    JavaAPI中设置:

    job.setNumReduceTasks(int number);

    设置的个数为几,就会产生几个文件,默认情况下为1,可见输出结果文件的个数和reducetask的个数是一个对等的关系。

  • 数据分区
    当MapReduce中有多个reducetask执行时,此时MapTask的输出就面领着一个问题:
    究竟将自己的输出数据交给哪一个reducetask来进行处理?这就是所谓的数据分区问题(partition)

    image-20221128143843633

Partition概念

  • 默认情况下MapReduce是只有一个Reducetask进行数据的处理,这使得不管输出的数据量多大,最终的结果都是输出到一个文件中。

  • 当改变ReduceTask的个数的时候,作为maptask就会涉及到分区的问题,即:MapTask输出的结果如何分配给各个ReduceTask来处理。

image-20221128144836076

Partition默认规则

  • MapReduce默认分区规则是HashPartitioner
  • 分区结果和Map输出的key相关:
    image-20221128145052937

Partition注意事项

  • ReduceTask个数的改变导致了数据分区的产生,而不是有数据分区导致了ReduceTask个数的改变
  • 数据分区的核心是分区的规则,即如何分配数据各个ReduceTask
  • 默认的规则可以保证只要Map阶段输出的key一样,数据就一定可以分取到一个ReduceTask,但是不能保证数据平均分区
  • ReduceTask个数的改变还会导致输出结果文件不再是一个整体,而是输出到多个文件中

MapReduce Combiner规约

数据归约的含义

  • 数据规约是指在尽可能保持数据原貌的前提下,最大限度的精简数据量

MapReduce 弊端

  • MapReduce是一种具有两个执行阶段的分布式计算程序,Map阶段和Reduce阶段之间会涉及到跨网络数据传递。
  • 每一个MapTask都可能产生大量的本地输出,这就导致跨网络传输数据量变大,网络IO性能低,比如WordCount单词统计案例,加入文件中又1000个单词,但是999个为hello,那么就会产生999个<hello,1>的键值对在网络中进行传输,使其性能低下

Combiner组件概念

  • Combiner中文: 规约,是MapReduce的一种优化手段
  • Combiner的作用就是对Map端的输出先做一次局部合并,以减少Map和Reduce节点之间的数据传输量

image-20221128150437932

Combiner组件的使用

  • Combiner是MapReduce程序中出了Mapper和Reducer之外的一种组件,默认情况下不启用

  • Combiner本质上就是Reducer,combiner和reducer的区别在于运行的位置:
    Combiner是在每一个MapTask所在的节点本地运行,是局部聚合
    Reducer是对所有的MapTask的输出结果计算,是全局聚合

  • 具体实现步骤:

    • 自定义一个CustomCombiner类,继承Reducer,重写Reducer方法

    • job.setCombinerClass(CustomCombiner.class)

Combiner使用注意事项

  • Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟Reduce的输出KV类型对应起来
  • 以下业务禁止使用Combiner,因为这样不仅优化了网络传输数据量,还改变了最终的执行结果:
    • 业务和数据个数相关的
    • 业务和整体排序相关的
  • Combiner组件不是禁用,而是慎用,用的好可以提高程序性能,用的不好,改变程序结果且不易被发现

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

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

相关文章

微信小程序图书商城毕业设计,图书商城购物小程序系统设计与实现,图书商城购物小程序商城毕设作品参考

功能清单 【后台管理员功能】 会员列表&#xff1a;查看所有注册会员信息&#xff0c;支持删除 录入资讯&#xff1a;录入资讯标题、内容等信息 管理资讯&#xff1a;查看已录入资讯列表&#xff0c;支持删除和修改 广告设置&#xff1a;上传图片和设置小程序首页轮播图广告地…

相机拍照不清晰怎么回事?不清晰地照片还能修复高清吗?

现在有很多的人都非常的喜欢拍照&#xff0c;主要就是因为喜欢记录&#xff0c;抓住我们身边的美&#xff0c;但是拍照的话就要使用相机&#xff0c;那么像相机电子产品我们在平常的时候是使用不到的&#xff0c;只有在有需求的时候可以使用的&#xff0c;而且也是有需求的人才…

Spring Security(6)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; Spring Security使用MySQL保存cookie记录虽然方便&#xff0c;但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的&#xff0c;Spring Security也应该可…

案例分享|生产环境MQ集群一个非常诡异的消费延迟排查

1、问题现象 某一天&#xff0c;项目组一个同事向我反馈&#xff0c;他们使用公司的数据同步产品将MySQL数据同步到MQ集群&#xff0c;然后使用消费者将数据再同步到ES&#xff0c;反馈数据同步延迟严重&#xff0c;但对应的消费组确没有积压&#xff0c;但最近最近几分钟的数…

LinkedIn领英开发客户方法大全(篇二)

profile完善步骤详细说明 详细步骤&#xff1a; 如下图箭头所示步骤&#xff0c;点击“view my profile”&#xff1a; 进入你的档案资料界面&#xff1a; 1&#xff09;点击红色圆圈所示处&#xff0c;即进入Edit intro界面: 即编辑个人简介&#xff0c;包括&#xff1a; …

企业如何通过推特群推创造商机

尤其是小企业要足够重视Twitter在营销推广上的重要性。因此&#xff0c;你有必要精心设计Twitter主页&#xff0c;并付诸投入和努力&#xff0c;这样就会看到消费者数量的增长&#xff0c;以及品牌忠诚度的提升。无疑&#xff0c;在Twitter上&#xff0c;很多企业可以发现商机&…

HTML基础-表单标签,button按钮,select下拉菜单

HTML基础-表单标签 目标和学习路径 1.表单标签 1.1 input系列标签的基本介绍 1.2 input系列标签-文本框 (拓展)value属性和name属性作用介 1.3 input系列标签-密码框 1.4 input系列标签-单选框 1.5 input系列标签-复选框 1.6 input系列标签-文件选择 2.button按钮标签 1.7 inpu…

JVS无忧·企业计划2.1.6更新说明

无忧企业计划是JVS企业数字化全家桶中重要组成部分&#xff0c;主要用于项目管理、任务管理、进度跟踪、过程管理等场景。 任务管理是企业内部事务协同的重要工具&#xff0c;与传统的OA有类似之处&#xff0c;同样是推动企业内部事务有效快速的执行&#xff0c;但之前存在不同…

直流无刷电机(BLDC)转速闭环调速系统及Matlab/Simulink仿真分析(二)

文章目录前言一、转速闭环直流调速系统二、Matlab/Simulink仿真2.1.仿真电路分析2.2.仿真结果分析总结前言 变压调速是直流调速系统的主要调速方法&#xff0c;因此系统的硬件至少包含&#xff1a;可调直流电源和直流电机两部分。可调直流电源多采用直流PWM变换器&#xff0c;…

CMMI2.0之我见-过程质量保证PQA

编者按&#xff1a; CMMI2.0之我见系列将通过系列文章形式介绍CMMI2.0所涉及到的其中20个实践域&#xff0c;笔者将通过系统性的梳理、浅显易懂的文字描述&#xff0c;同时结合笔者的思考和观点&#xff0c;对每个实践域的目标以及所基本涵盖的内容进行描述&#xff0c;希望能…

CSS 的快乐:画一个可爱的三只小鸟 Button

做为前端工程师&#xff0c;最大的快乐之一就是可以用 CSS 画出各种有趣的效果。 比如我最近画的一个 Button&#xff1a; 画的过程中确实很开心&#xff0c;这也是我当时选择做前端的很大一部分原因。 今天我们就一起来画下这个可爱的 Button 吧&#xff01;纯 CSS&#xff…

Kamiya丨Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA说明书

Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA预期用途&#xff1a; 小鼠血清淀粉样蛋白A ELISA是一种高灵敏度的双位点酶联免疫分析&#xff08;ELISA&#xff09;小鼠生物样品中血清淀粉样蛋白A&#xff08;SAA&#xff09;的定量测定。仅供研究使用。 引言 铜蓝蛋白是参与铜转运…

Go学习之路:更多类型:struct、slice 和映射(DAY 2)

文章目录前引更多类型&#xff1a;struct、slice 和映射1、指针2.1、结构体/结构体命名&#xff08;一&#xff09;2.2、结构体/对象访问、指针访问、初始化规则&#xff08;二&#xff09;3、数组4.1、切片/初始化切片4.2、切片/切片引用数组4.3、切片/切片的length和capacity…

React Context源码是怎么实现的呢

目前来看 Context 是一个非常强大但是很多时候不会直接使用的 api。大多数项目不会直接使用 createContext 然后向下面传递数据&#xff0c;而是采用第三方库&#xff08;react-redux&#xff09;。 想想项目中是不是经常会用到 connect(...)(Comp) 以及 <Provider value{s…

非互联网客户收入近6成,阿里云进入新周期

近日&#xff0c;阿里巴巴发布了截至2022年9月30日止季度&#xff08;2023财年第二季度&#xff0c;阿里财年从每年4月1日至第二年3月31日&#xff09;业绩。 在除去阿里内部使用的额度&#xff0c;抵销跨分部交易后&#xff0c;阿里云业务分部&#xff08;包括阿里云和钉钉&am…

【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【华为上机真题 2022】字符串加密

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

【Linux】基本指令(三)

文章目录sort 指令find 指令which 指令alias 指令grep 指令top 指令zip/unzip指令tar 指令bc 指令unname 指令history 指令shutdown 指令热键补充sort 指令 &#x1f495; Linux sort 命令用于将文本文件内容加以排序并且可针对文本文件的内容&#xff0c;以行为单位来排序。 …

03 探究Kubernetes工作机制的奥秘

自动化的运维管理&#xff1a;探究Kubernetes工作机制的奥秘 文章目录1. 云计算时代的操作系统2. kubernets 的基本架构3.节点内部的结构3.1 master 节点3.2 node 节点4. Kubernetes 的大致工作流程5.插件有哪些&#xff1f;5.1 重要的插件6. kubernetes 架构思维导图7. 思考的…

制作一个简单HTML校园网页(HTML+CSS)学校网站制作 校园网站设计与实现

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…