• 目录

    • 前言:
    • 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并行度可以在代码中手动设置。

MapTask、ReduceTask并行度决定机制相关推荐

  1. MapTask并行度决定机制、FileInputFormat切片机制、map并行度的经验之谈、ReduceTask并行度的决定、MAPREDUCE程序运行演示(来自学笔记)

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

  2. 实现用户手机流量统计(ReduceTask并行度控制)

    需求:1.实现用户手机流量统计(ReduceTask并行度控制) 数据如下:保存为.dat文件(因为以\t切分数据,文件格式必须合适) 13726230503 00-FD-07-A4-72-B8:CM ...

  3. 大数据之-Hadoop3.x_MapReduce_切片机制与MapTask并行度决定机制---大数据之hadoop3.x工作笔记0102

    然后我们来看MapReduce的框架原理,这里是很重要的,其中MapTask用来处理map阶段的任务, 然后reduceTask用来处理reduce阶段的任务. 那么MapTask主要做了什么事呢?首 ...

  4. 经典大数据面试题及解析

    经典大数据面试题及解析 1.下列哪个属性是hdfs-site.xml中的配置? A.dfs.replication B.fs.defaultFS C.mapreduce.framework.name ...

  5. 面试题--精选Hadoop选择题

    精选Hadoop选择题 1.下列哪个属性是hdfs-site.xml中的配置? A.dfs.replication  B.fs.defaultFS C.mapreduce.framework.name ...

  6. 尚硅谷大数据开发Day04

    第 1 章 MapReduce 概述 1.1 MapReduce 定义 MapReduce 是一个分布式运算程序的编程框架,是用户开发"基于 Hadoop 的数据分析 应用"的核心 ...

  7. 04 MapReduce

    Hadoop之 MapReduce 04 MapReduce 第 1 章 MapReduce 概述 **1.1 MapReduce 定义** **1.2 MapReduce 优缺点** **1.3 M ...

  8. Hadoop学习教程(MapReduce)(四)

    MapReduce 1.MapReduce概述 1.1.MapReduce定义 1.2.MapReduce优缺点 1.2.1.MapReduce优点 1.2.2.MapReduce缺点 1.3.Map ...

  9. (超详细)大数据Hadoop之MapReduce组件

    一.MapReduce 简介 1.1 MapReduce的概述 在Hadoop生态圈中,MapReduce属于核心,负责进行分布式计算. MapReduce 核心功能是将用户编写的业务逻辑代码和自带默 ...

最新文章

  1. 整数阶贝塞尔函数c语言,第二类整数阶贝塞尔函数(诺伊曼函数)
  2. 微型计算机分析,微机原理练习题分析
  3. 青龙面板PM2报错修复方法
  4. Tomcat目录结构及Tomcat Server处理一个http请求的过程
  5. VTK:PolyData之ColoredPoints
  6. Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器
  7. 产后抑郁症的食疗方法有什么
  8. opencv 纸箱分割_OpenCV与AIPCV库——学习笔记(一)
  9. wpf之访问当前程序下的图片
  10. 修改RHEL6的root超级用户密码
  11. 深入理解Java动态代理及手动实现
  12. java前端商城_网上java商城系统前端开发基础技能浅谈
  13. Python 3——xlsxwriter生成图表
  14. Ubuntu下 VS code安装并配置C/C++模块
  15. linux测试上行带宽,linux服务器上传下载带宽测试
  16. 一个测试反应速度的小游戏
  17. stata 求输出相关系数矩阵命令_一文读懂结果输出命令大全(上)
  18. PPC/SP/PC汉化教程:如何汉化一个软件
  19. Service Mesh初识
  20. 解决chrome下textarea控件滚动条不好使情况

热门文章

  1. referer参数和addslashes()函数的骚路子
  2. CentOS 6.9下的Setup工具(用于管理服务/防火墙/网络配置/验证服务)
  3. java 实现excel 导出功能
  4. 常用的方法论-NPS
  5. Service-Oriented Architecture,SOA(转)
  6. nodejs npm常用命令
  7. R-大数据分析挖掘(5-R基础回顾)
  8. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码
  9. SmartTemplate学习入门一
  10. Android 开发知识集合目录