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,一经查实,立即删除!

相关文章

python# 完成“剪刀石头布游戏”:

# 完成“剪刀石头布游戏”: # 1. 进入剪刀石头布游戏 # 2. 系统随机出:可以是剪刀,可以是布,也可以是石头(可以使用随机数完成1:剪刀,2:布,3:石头&#x…

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是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台&…

python 掷骰子游戏

掷骰子游戏: 掷骰子游戏 可选择的参加游戏的角色是:1.貂蝉 2.刘备 3.孙悟空 4.诸葛亮 5.曹操 输入参加游戏的角色是: 1 貂蝉进入游戏…… 貂蝉请充值(金额必须是100的倍数): ---》注意:充值3次不…

长连接心跳机制理解

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

老男孩36期运维脱产班---- 决心书

我叫林宗超,来自四川,12年前毕业于四川的一所普通高中学校,毕业后再也没有从事过其他的教育培训学习。离开学校后我去过广东,福建,最后因为我家驾校有了点小小的规模,缺人,我回到了成都做了几年…

python简易停车系统

# 简易版停车管理: # # 停车场最多停车数; max_car; # 当前停车数;cur_car; # 当前停车列表; car_list [] # # 停车: # 1). 如果没有达到最多停车数,则允许停车; # 2) 计入入场的时间,使用time.time(&am…

dl,dt,dd怎么用

我们在制作网页过程中用到列表时一般会使用<ul>或者<ol>标签&#xff0c;很少用刑<dl>标签&#xff0c;但是这个三个标签却有着不可忽视的作用&#xff0c;毕竟Web标准中要尽最大可能的使用已有的标签。它们的用途是&#xff1a;< dl>< /dl>用来…

Hive的基本操作总结

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

获取图片的EXIF信息

对于专业的摄影师来说&#xff0c;Exif信息是很重要的信息&#xff0c;也包含了非常多的东西 1.EXIF EXIF&#xff08;Exchangeable Image File&#xff09;是“可交换图像文件”的缩写&#xff0c;当中包含了专门为数码相机的照片而定制的元数据&#xff0c;可以记录数码照片的…

【python】AnaConda安装错误解决方法

https://www.anaconda.com/ 官网下载啥事没有&#xff01;

贪心问题的基本性质

首先确定一个前提 该问题是或可能满足 最优子结构&#xff0c;greedy选择性 最优子结构是说。。子结构一定能对全局最优解作贡献(?) greedy选择性应该是说。。如果当前我们不贪心地选本来看上去或者就是正确的决策an 那么我们得到结果s,只要证明交换an得到s比不交换更好&#…

Hbase读写数据的原理解析

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

anaconda来创建python环境

Anacond下载 下载地址&#xff1a;https://www.anaconda.com/download/ 管理虚拟环境 接下来我们就可以用anaconda来创建我们一个个独立的python环境了.接下来的例子都是在命令行操作的,请打开你的命令行吧. activate activate 能将我们引入anaconda设定的虚拟环境中, 如果你后…

Zookeeper的简介及命令行操作

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

移动端开发文章导航

1. 微信企业号 微信企业号 介绍微信企业号 获取AccessToken微信企业号 获取用户信息微信企业号 JS-SDK&#xff1a;上传图片2. 微信公众号 微信公众号 订阅号与服务号的区别微信公众号 几种移动端UI框架介绍转载于:https://www.cnblogs.com/polk6/p/6217835.html

打开cmd窗口新技巧get

1.在当前目录下&#xff0c;按住shift键点击右键,选择在此处打开命令窗口 很多时候我们需要打开命令行然后进入到相应目录进行一些操作。 常规的做法是: WinR打开运行窗口输入"cmd"回车打开命令行窗口 假如我们要进入的是D盘foo文件夹下的一个bar子文件夹&#xff0c…

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

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

Zookeeper集群角色分配原理

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

2016大数据发展7大趋势

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