MapTask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度那么,mapTask并行实例是否越多

越好呢?其并行度又是如何决定呢?Mapper数量由输入文件的数目、大小及配置参数决定; 

  MapReduce将作业的整个运行过程分为两个阶段:Map阶段Reduce阶段。

  Map阶段由一定数量的Map Task实例组成,例如:

  • 输入数据格式解析:InputFormat
  • 输入数据处理:Mapper
  • 本地规约:Combiner(相当于local reducer,可选)
  • 数据分组:Partitioner

  Reduce阶段由一定数量的Reduce Task实例组成,例如:

  • 数据远程拷贝
  • 数据按照key排序
  • 数据处理:Reducer
  • 数据输出格式:OutputFormat

1.MapReduce的Map阶段:

1.1.从HDFS读取数据:

  一个job的Map阶段并行度由客户端在提交job时决定

  而客户端对map阶段并行度的规划的基本逻辑为:将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据

划分成逻辑上的多个split),然后每一个split分配一个MapTask并行实例处理,即就是到底启动多少个MapTask实例就意味着将

数据切成多少份(一个切片对应一个MapTask实例)

  切片逻辑及形成的切片规划List描述文件,由 FileInputFormat 实现类的getSplits()方法完成:流程如下:

1.1.1.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

1.1.2.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.5 ReduceTask并行度的决定

  ReduceTask的并行度同样影响整个job的执行并发度和执行效率,但与maptask的并发数由切片数决定不同,Reducetask数量

的决定是可以直接手动设置:

  //默认值是1,手动设置为4

  job.setNumReduceTasks(4);

  如果数据分布不均匀,就有可能在reduce阶段产生数据倾斜

  注意: reducetask数量并不是任意设置,还要考虑业务逻辑需求,有些情况下,需要计算全局汇总结果,就只能有1个reducetask

  尽量不要运行太多的reducetask。对大多数job来说,最好rduce的个数最多和集群中的reduce持平,或者比集群的 reduce slots小

这个对于小集群而言,尤其重要。

 

  

  

  

  

  

  

  

  

  

  

Hadoop_16_MapRduce_MapTask并行度(切片)的决定机制的更多相关文章

  1. iOS通过切片仿断点机制上传文件

    项目开发中,有时候我们需要将本地的文件上传到服务器,简单的几张图片还好,但是针对iPhone里面的视频文件进行上传,为了用户体验,我们有必要实现断点上传.其实也不是真的断点,这里我们只是模仿断点机制. ...

  2. MapReduce-TextInputFormat 切片机制

    MapReduce 默认使用 TextInputFormat 进行切片,其机制如下 (1)简单地按照文件的内容长度进行切片 (2)切片大小,默认等于Block大小,可单独设置 (3)切片时不考虑数据集 ...

  3. job任务执行流程与分区机制

    job任务执行流程    1.run job阶段        ①收集整个job的环境信息(比如通过conf设定的参数,还有mapperClass,reducerClass,以及输出kv类型)     ...

  4. [翻译] NumSharp的数组切片功能 [:]

    原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): 由于Numsharp新推出了数 ...

  5. go语言教程之浅谈数组和切片的异同

    Hello ,各位小伙伴大家好,我是小栈君,上次分享我们讲到了Go语言关于项目工程结构的管理,本期的分享我们来讲解一下关于go语言的数组和切片的概念.用法和区别. 在go语言的程序开发过程中,我们避免 ...

  6. NumSharp的数组切片功能

    NumSharp的数组切片功能 原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): ...

  7. 手把手golang教程【二】——数组与切片

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用. 数组与切片 golang当中数组和C++中的定义类似, ...

  8. Go切片全解析

    Go切片全解析 目录结构: 数组 切片 底层结构 创建 普通声明 make方式 截取 边界问题 追加 拓展表达式 扩容机制 切片传递的坑 切片的拷贝 浅拷贝 深拷贝 数组 var n [4]int f ...

  9. 大数据入门第七天——MapReduce详解(二)切片源码浅析与自定义patition

    一.mapTask并行度的决定机制 1.概述 一个job的map阶段并行度由客户端在提交job时决定 而客户端对map阶段并行度的规划的基本逻辑为: 将待处理数据执行逻辑切片(即按照一个特定切片大小, ...

随机推荐

  1. Spring Aop(十二)——编程式的创建Aop代理之AspectjProxyFactory

    转发地址:https://www.iteye.com/blog/elim-2397922 编程式的创建Aop代理之AspectjProxyFactory 之前已经介绍了一款编程式的创建Aop代理的工厂 ...

  2. Spring Aop(十一)——编程式的创建Aop代理之ProxyFactory

    转发地址:https://www.iteye.com/blog/elim-2397388 编程式的创建Aop代理之ProxyFactory Spring Aop是基于代理的,ProxyFactory是 ...

  3. linux如何添加服务为系统服务快速启动或关闭

    当在linux系统安装了一些服务比如apache,mysql,iptables等等后想快速启动或者重启 但是在使用系统启动或者关闭服务时候发现输入指令 >service httpd restar ...

  4. ASP.NET关于UEditor简单配置和错误修正

    UEditor配置版本为:ueditor1_3_6-utf8-net,放置目录为:/UEditor 一./UEditor/ueditor.config.js文件需要设置: 1.URL修改为:var U ...

  5. python使用socket向客户端发送数据的方法

    在使用locust测试长连接的时候,所有的请求全部faillure了,所以想到手动写一个连接脚本测试一下是否能连通 因为centos7自带python2.7所以用python写一个比较方便. #!/u ...

  6. Java工程师学习指南第1部分:夯实Java基础系列

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 本文整理了微信公众号[Java技术江湖]发表和转载过的Java优质文章,想看到更多 ...

  7. 如何使用 python 接入虹软 ArcFace SDK

    公司需要在项目中使用人脸识别SDK,并且对信息安全的要求非常高,在详细了解市场上几个主流人脸识别SDK后,综合来看虹软的Arcface SDK比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...

  8. 【VS开发】千兆以太网的传输速度

    千兆以太网主流标准 千兆以太网络技术早在上世纪90年代末就已成熟,其中,1995年国际标准化组织TIA/EIA颁布了1000Base-TX标准,该标准的目的是把双绞线用于千兆以太网中,其目的是在6类非 ...

  9. flask核心对象

    appcontext 上下文 处理

  10. bat命令教程

    转自:https://www.jb51.net/article/151923.htm 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合 ...