MapTask、ReduceTask并行度决定机制

  • 目录
    • 前言:
    • 1、mapTask并行度的决定机制
    • 2、ReduceTask并行度的决定
    • 总结:

目录

前言:

MapTask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度。那么,MapTask并行实例是否越多越好呢?其并行度又是如何决定呢?

1、mapTask并行度的决定机制

一个job的map阶段并行度由客户端在提交job时决定,而客户端对map阶段并行度的规划的基本逻辑为:
将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多个split),然后每一个split分配一个mapTask并行实例处理。(注意切片和分块的区别)

这段逻辑及形成的切片规划描述文件,由FileInputFormat实现类的getSplits()方法完成,其过程如下图:
这里写图片描述

FileInputFormat切片机制
1、切片定义在InputFormat类中的getSplit()方法
2、FileInputFormat中默认的切片机制:
a) 简单地按照文件的内容长度进行切片
b) 切片大小,默认等于block大小
c) 切片时不考虑数据集整体,而是逐个针对每一个文件单独切片
比如待处理数据有两个文件:
file1.txt 320M
file2.txt 10M

经过FileInputFormat的切片机制运算后,形成的切片信息如下:
file1.txt.split1– 0~128
file1.txt.split2– 128~256
file1.txt.split3– 256~320
file2.txt.split1– 0~10M

FileInputFormat中切片的大小的参数配置(了解)
通过分析源码,在FileInputFormat中,计算切片大小的逻辑:Math.max(minSize, Math.min(maxSize, blockSize)); 切片主要由这几个值来运算决定
minsize:默认值:1 配置参数: mapreduce.input.fileinputformat.split.minsize
maxsize:默认值:Long.MAXValue 配置参数:mapreduce.input.fileinputformat.split.maxsize
blocksize
因此,默认情况下,切片大小=blocksize
maxsize(切片最大值):
参数如果调得比blocksize小,则会让切片变小,而且就等于配置的这个参数的值
minsize (切片最小值):
参数调的比blockSize大,则可以让切片变得比blocksize还大

选择并发数的影响因素:
1、运算节点的硬件配置
2、运算任务的类型:CPU密集型还是IO密集型
3、运算任务的数据量

2、ReduceTask并行度的决定

reducetask的并行度同样影响整个job的执行并发度和执行效率,但与maptask的并发数由切片数决定不同,Reducetask数量的决定是可以直接手动设置

//默认值是1,手动设置为4
job.setNumReduceTasks(4);

如果数据分布不均匀,就有可能在reduce阶段产生数据倾斜
注意: reducetask数量并不是任意设置,还要考虑业务逻辑需求,有些情况下,需要计算全局汇总结果,就只能有1个reducetask

尽量不要运行太多的reduce task。对大多数job来说,最好reduce的个数最多和集群中的reduce持平,或者比集群的 reduce slots小。这个对于小集群而言,尤其重要。

总结:

MapTask并行度由两种情况:
1、当一个文件比较大时,每次切片128M为一个MapTask的任务量。被切分多少片就能由多少个MapTask。
2、当有多个小文件时,每个小文件可以看做是一个MapTask的任务量,有多少个小文件就有多少个MapTask。
PS:当然默认切片的大小可以自定义设置。
ReduceTask并行度可以在代码中手动设置。

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

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

相关文章

6大主流开源SQL引擎总结,遥遥领先的是谁?

根据 O’Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言。大部分项目都需要一些SQL 操作,甚至有一些只需要SQL。本文就带你来了解这些主流的开源SQL引擎!背景介绍 本文涵盖了6个开源领导者:Hive、Impala、…

Yarn在MapReduce中的工作机制

目录前言:1、YARN概述2、mapreduce&yarn的工作机制总结: 目录 前言: 在了解Yarn在MR中的作用的时候需要先了解Yarn是什么。 1、YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台&…

长连接心跳机制理解

近期使用go 开发聊天室,使用到websocket常链接。 if err websocket.JSON.Receive(ws,&reply); err ! nil {log.Println(err)return } 我发现当连接断开的时候会走if里面,输出eof 这样就知道,客户端断开了连接。 但在之前使用workerman …

Hive的基本操作总结

文章目录目录前言:1、Hive基本操作1.1、DDL操作1.2、DML操作1.3、Hive Join总结:目录 前言: 对于Hive来说最重要的一点就是能够用Hql来进行数据分析。而Hql来处理数据比MapReduce方便很多(原理是一样的,Hql底层转化为MapReduce来…

Hbase读写数据的原理解析

目录1、体系图写数据的流程(参考上图):读数据的流程(参考下图): 目录 1、体系图 针对上图的一些解释: 这里面数据分区(region)存储是为了查询方便(即因为是…

Zookeeper的简介及命令行操作

目录前言1、Zookeeper简介2、Zookeeper结构3、Zookeeper常用的命令行操作 总结: 目录 前言 作为一款第三方的协调服务框架,ZK被应用在许多地方,如:Hbase中用于存储-ROOT表的位置信息;Storm中用于保存任务分配的信息、…

【python】pycharm启动 一直index,无法运行

花了几个小时找相关资料,按网上提供答案操作,依然没有解决, 最后让它自动更新完才好(大概更新了十分钟 有固态情况) 参考链接 pycharm启动后总是不停的updating indices...indexing? pycharm 启动后一直更新index的问题

Zookeeper集群角色分配原理

ZK内部存在Leader和Follower两个角色,那么这两种角色是怎样划分呢?或者说是怎么样被选举出来呢?以下将详细介绍ZK内部的选举机制。 ZK是通过内部的选举算法来选出Leader。(服务器需要配置对应的ID和文件)如下图所示&a…

2016大数据发展7大趋势

1.算法(Algorithms)的崛起 大数据已过时,算法正当道。数据已经成为一种商品,每个组织都能够收集和存储大量的数据。分析大数据也不再那么引人注目了。每个组织都可以聘用或培训大数据分析人员来了解数据模式。 2016年,…

MySQL数据库重点概要总结

目录前言:1、结构化查询语言(Structured Query Language)简称SQL。2、基本SELECT语句语法3、多表链接4、笛卡尔积5、ANSI SQL ANSI SQL:1999标准的连接语法6、单行函数和分组函数的区别:7、分组函数8、SQL语句的执行顺序:9、子查询…

《MySQL排错指南》——1.9 许可问题

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.9节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.9 许可问题 MySQL有复杂的…

毕业半年,码过5个城市

时间飞逝,半年前我还在想我的毕业设计要怎么做,还在担心自己的答辩能够拿多少分,而此刻我正在成都写我喜欢的代码,过着我想过的生活。毕业半年,码过5个城市,从厦门->太原-》合肥-》北京-》成都。2016是我…

《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位

本节书摘来自异步社区《Pro/ENGINEER野火版5.0从入门到精通》一书中的第2章,第2.5节,作者 暴风创新科技,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 设置零件单位 由于不同国家单位制的不相同,在企业间合作或沟通…

机器学习之必知开源数据集

之前看到的不错的文章,玩机器学习数据是关键,有了这些东西,你就不必再为没有数据而苦恼。 转自:https://www.toutiao.com/i6432197108580745730/ 目录UCIGoogleTrendsKaggleAWS公用数据集ImagenetMINIST/r/数据集其他数据集 目录…

《计算机科学概论》—第3章3.3节文本表示法

本节书摘来自华章出版社《计算机科学概论》一书中的第3章,第3.3节文本表示法,作者[美]内尔黛尔(Nell Dale)约翰路易斯(John Lewis),更多章节内容可以访问云栖社区“华章计算机”公众…

经典技术面试指南

目录计算机基础知识数据结构算法操作系统计算机网络数据库海量数据处理C语言基础Java基础Java高级Java Web设计模式知识的综合能力工具使用项目相关技术热情表达能力思考方式其他推荐阅读 目录 最近看到一份不错的面试总结,也是每位程序猿都应该掌握的基础&#x…

Linux 共享内存详解一

共享内存段被多个进程附加的时候,如果不是所有进程都已经调用shmdt,那么删除该共享内存段时,会出现一个临时的不完整的共享内存段(key值是0),无法彻底删除。只有当所有进程都调用shmdt,这个临时…

Storm编程模型总结

目录前言:1、Storm编程模型2、对应的的WordCount案例总结: 目录 前言: 对于Storm的编程模型有必要做一个详细的介绍(配合WC案例来介绍) 1、Storm编程模型 上图中组件的解释: DataSource:外…

13_观察者模式

【观察者模式】 也叫作发布/订阅模式,使用较为频繁。 定义了对象间一种一对多的依赖关系,当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成: * Subject 被观察者 定义被观察者…

《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南》一书中的第2章2.3节 外部或内部的主动式信息收集,作者【美】Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 外部或内部的主动式信息收集黑客秘笈——…