Hadoop map和reduce的个数设置,困扰了很多学习Hadoop的成员,为什么设置了配置参数就是不生效那?Hadoop Map和Reduce个数,到底跟什么有关系。首先他的参数很多,而且可能随着版本不同一些配置参数,会发生一些变化,但是只要我们搞懂核心问题,那么其它在变,我们都能确定map的个数和reduce的个数。

首先来说,我们通过配置,无论你说的什么配置,能否就设置几个,就会跑出来几个。可以明确的如果设置几个,就有几个,那肯定是瞎猫捧着死耗子了。如果不懂原理,永远不能掌控Map和reduce的个数。

那么map和reduce的个数决定因素是什么?
map个数的决定因素是分片(Split)
reduce个数的决定因素是分区函数

1.map个数的决定因素是Split
如果你不懂Split,和分区函数,这里在跟大家白话以下:
Split在这里是一个名词,它跟map是什么关系?
Split:Map=1:1
它们之间是一一对应的。

整理了一份适合2018年学习的大数据资料需要的加群QQ群:834325294 注明CSDN既可免费获取
那么为什么会产生Split?
在大量的数据面前,我们不在适用单台机器,而是使用多台机器共同完成任务,既然多台完成,那么数据该怎么劈开?
ok,Split吧,对的,这里的Split是个动词,不再是一个名词,我们劈开之后那?每一个被劈开的数据,我们都交给map来处理。所以我们现在是否明白,map和split为什么是1:1的关系了。

上面我们只是白话了,那么这里面其实这里面还有一些问题,那么就是该如何Split?
比如1G的数据,该多少位一个块,或则多少M一个Split。这里面又有学问了,或则说又有门道了,因为不能直接设置,所以很多人对这个有迷惑了,直接设置不就好了。Hadoop可能怕我们胡乱设置,所以采取了一个折中的办法?那么它是如何做的?
SplitSize分片大小= min(minSize, max(blockSize, maxSize))

看上面公式,我们看到这个SplitSize的大小是折中的,也就是在minSize,blockSize,maxSize中,只取中间值,不取最大的,也不取最小的。我们分解开来如下:

当mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize > dfs.blockSize的情况下,此时的splitSize 将由mapreduce.input.fileinputformat.split.minsize参数决定

当mapreduce.input.fileinputformat.split.maxsize > dfs.blockSize > mapreduce.input.fileinputformat.split.minsize的情况下,此时的splitSize 将由dfs.blockSize配置决定

当dfs.blockSize > mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize的情况下,此时的splitSize将由mapreduce.input.fileinputformat.split.maxsize参数决定。

那么这时候,你是否明白,map的个数跟什么有关系了?
也就是说我们设置的map个数,如何我们不懂上面的原理,肯定是不会生效的。这就是我们为什么要优化的集群的原因了。

2.reduce个数的决定因素是分区函数
reduce我们知道有一个参数setNumReduceTasks(int num),为什么设置之后不生效那?
对于分区函数?肯定是没有理解的。分区函数,在这里我们叫它分类函数,更贴近我们的生活。
这里举我们生活中的例子:

我们生活中,除了男就是女,所以分区函数如下

这里应该是有两个reduce的,可是我们设置为setNumReduceTasks为3,这是不可能有3个reduce,即使说是我们Hadoop产生了3个reduce,那么也是有一个reduce是不干活的。所以你设置了3个,可能只看到2个reduce在跑。

比如我们中国有23个省,那么就有23个reduce,你硬设置是24个reduce。这显然是不合理的。

当然还有另外一种特殊的情况下会生效,那就是设置reduce的个数为1,我们会看到只有1个reduce运行。

3.总结
从上面我们就可以明白map和reduce我们为什么设置参数为什么没有生效,以及我们该如何设置合适的参数。有问题欢迎交流。

彻底明白Hadoop map和reduce的个数决定因素相关推荐

  1. Hive 设置map 和 reduce 的个数

    一.    控制hive任务中的map数: 1.    通常情况下,作业会通过input的目录产生一个或者多个map任务.  主要的决定因素有: input的文件总个数,input的文件大小,集群设置 ...

  2. hadoop Map 100% reduce 0% 问题

    问题描述: 在伪分布式测试程序时Map 100%完成,reduce 总是在0%无法完成. 原因: 我遇到的问题是hostname主机名引起的,由于之前修改了hostname(/etc/sysconfi ...

  3. hadoop中map和reduce的数量设置问题

    转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...

  4. 一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)

    Map/Reduce用户界面 本节为用户採用框架要面对的各个环节提供了具体的描写叙述,旨在与帮助用户对实现.配置和调优进行具体的设置.然而,开发时候还是要相应着API进行相关操作. 首先我们须要了解M ...

  5. Hive mapreduce的map与reduce个数由什么决定?

    文章目录 1.MapTask的数量决定 2.如何来调整MapTask的数量 2.1 增加map的数量 : 调小maxsize (要小于blockSize才有效,比如100byte) 2.2 减少map ...

  6. hadoop和python的关系_Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什么关系?

    先说结论.Python 的 map 和 reduce 是Python的内置函数,而 Hadoop 的 MapReduce 是一个计算框架. 两者之间没有直接的关系.但是他们的部分计算操作思想是类似的. ...

  7. Hadoop Map/Reduce教程

    Hadoop Map/Reduce教程 目的     先决条件     概述     输入与输出     例子:WordCount v1.0         源代码         用法        ...

  8. hadoop学习之:Map、Reduce详解

    Hadoop学习重点主要为HDFS.MapReduce 部分: 接下来重点描述一下MAP与Reduce 的过程. 看了好多资料,如果有错误的地方请大家指出. MAP部分: 下图是官方给予的关于MapR ...

  9. Hadoop Map/Reduce的工作流

    问题描述 我们的数据分析平台是单一的Map/Reduce过程,由于半年来不断地增加需求,导致了问题已经不是那么地简单,特别是在Reduce阶段,一些大对象会常驻内存.因此越来越顶不住压力了,当前内存问 ...

最新文章

  1. Python的输出:Python2.7和Python3.7的区别
  2. (38)Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】
  3. 记一次接收微信公众平台推送消息的实例
  4. 二、前端开发-HTML
  5. PHP安全基础第一章
  6. linux -cpu
  7. uniapp 定时执行_ftp上传,完成ftp定时上传、下载只需3步
  8. Linux中常见目录的作用
  9. Android实现3D旋转效果
  10. emacs 入门教程,菜单汉化,配置文件等杂乱文章
  11. 快速完成和读懂测试计划
  12. toad如何查看表字段备注(表字段的说明)
  13. ES9新特性_ES9正则扩展-命名捕获分组---JavaScript_ECMAScript_ES6-ES11新特性工作笔记054
  14. 什么是暗物质?有没有理科大神解答一下啊?
  15. sql中join类型_SQL Join类型概述和教程
  16. 安全研究员警告:特斯拉 Backup Gateway 联网存在多种安全风险
  17. 详细Ubuntu桥接模式网络配置过程
  18. 灵活无成本的ITSM系统|ServiceHot ITSOM
  19. zmud之自动解谜:不用数据库实现自动解谜的原理。
  20. 屏幕关闭原因以及p-sensor

热门文章

  1. 腾讯数据分析证书到手了!
  2. 社交电商会是下一个风口吗?
  3. Tikz作图教程:堆叠柱形图+折线图+误差线
  4. oracle 执行删除索引报错,Oracle分区表删除分区引发错误ORA-01502: 索引或这类索引的分区处于不可用状态...
  5. 《互联网的那些事之时代》
  6. 第十五个“世界海洋日”:水声功率放大器能为海洋水下声呐研究做些什么?
  7. 数据分析常用的四大战略分析工具
  8. 聋校计算机教学工作总结,2014年年上半年聋校七年级数学教学工作总结
  9. c语言 高字节和高字节运算 低字节和低字节运算,C语言关系运算符和位运算符.ppt...
  10. Jenkins-节点服务器配置