这里写自定义目录标题

  • Hive背后的Mapper调优
  • Hive背后的Reducer调优

Hive背后的Mapper调优

1,Mapper数过大,会产生大量的小文件,由于Mapper是基于虚拟机的,过多的Mapper创建和初始化及关闭虚拟机都会消耗大量的硬件资源;
Mapper数太少,并发度太小,Job执行时间过长,无法充分利用分布式硬件资源
2,Mapper数由什么决定呢?
输入文件数目
输入文件大小
配置参数
默认情况下:例如一个文件800M,Block大小是128M,那么Mapper数目就是7个(6< 800/128 <7),6个Mapper处理的数据是128M,1个
Mapper处理的数据是32M;再例如,一个目录下有3个文件大小分别为5M,10M,150M,此时会产生4个Mapper,处理的数据分别是5M,
10M,128M,22M
为什么要控制Mapper的个数?
例如上面的例子中128M的Mapper运行的特别慢,但其他3个Mapper运行的很快
减少Mapper的个数,就要合并小文件,这种小文件有可能是直接来自数据源的小文件,也可能是Reducer产生的小文件;使用合并器
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set hive.merge.mapFiles=true;#map端的合并
set hive.merge.mapredFiles=true;#reducer端的合并
set hive.merge.size.per.task=256000000;#每个map处理多大的数据,单位是字节
set mapred.max.split.size=256000000;#每个切分map的最大大小
set mapred.min.split.size.per.node=128000000;#每个切分map的最小大小

增加Mapper的个数,一般是通过控制Hive SQL中上一个Job的Reducer个数来控制的,例如在Join操作时会把多个表分解为多个Job
set mapred.map.tasks=2;
set hive.merge.mapFiles=true;
set hive.merge.mapredFiles=true;
set hive.merge.size.per.task=256000000;

例如我们有5个300M的文件;按照上面的配置会产生10个Mapper,5个Mapper处理的都是256M的数据,另外5个Mapper处理的都是44M的数据,
这样就会产生数据倾斜
如何解决,设置:
set mapred.map.tasks=6,此时根据MapRed的运行机制,会划分6个Mapper,每个Mapper的处理数据大小是256M,min(1500/6,256M)=250M

Hive背后的Reducer调优

1,Reducer个数过大的话,会产生很多小文件,每个Reducer都会产生一个文件,如果这些小文件是下一个Job的输入,则需要对小文件进行合并;
同样启动、初始化和销毁Reducer的虚拟机也需要消耗大量的硬件;
Reducer个数过小的话,Reducer的时间会比较长,也可能会出现数据倾斜;
2,如何控制Reducer的个数呢?
set hive.exec.reducers.byte.per.reducer=1G;#每个reducer能够处理的数据大小,合并之后可能就是100M的数据???
set hive.exec.reducers.max=999#最多可以设置reducer的个数
Reducer个数=min(999,Reducer的数据输入总量/1G)

set mapred.reduce.tasks=10;#默认是1,如果当前的Reducer的结果很大,且被接下来多个Job使用其结果,我们该如何设置参数?
一般都需要调大该参数;
什么情况下只有一个Reducer?
如果不进行group by但却需要汇总,或者说order by,当然如果最后Reducer的数据小于默认的1G的话,也会只有1个Reducer;

Hive性能调优之Mapper和Reducer相关推荐

  1. Hive性能调优实战 分享

    获取方式 链接:https://pan.baidu.com/s/1TmkWssL1K45af7GDrj2QWw 提取码:26uv 关注我的公众号[宝哥大数据],更多干货 目录 第1章 举例感受Hive ...

  2. 3万字史诗级 Hive 性能调优(建议收藏)

    前言 Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询的时候要特别注意效率 .影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.Job或I/O过多.MapReduce 分 ...

  3. hive性能调优实战pdf_Nginx 性能调优实战

    来自:Linux社区 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpui ...

  4. hive性能调优实战pdf_1分钟带你入门JVM性能调优,实战解析调优工具

    JVM的运行参数 1.1 三种参数类型 标准参数 help -version -X参数 (非标准参数) -Xint -Xcomp -XX参数(使用率比较高, 常用语jvm调优) -XX:newSize ...

  5. 【大数据开发】SparkSQL——Spark对接Hive、Row类、SparkSQL函数、UDF函数(用户自定义函数)、UDAF函数、性能调优、SparkSQL解决数据倾斜

    文章目录 一.Spark对接Hive准备工作 1.1 集群文件下载 1.2 导入依赖 1.3 打开集群metastore服务 二.Spark对接Hive 2.1 查询Hive 2.2 读取MySQL中 ...

  6. 真正让你明白Hive参数调优系列1:控制map个数与性能调优参数

    本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题.以及日常Hi ...

  7. 全方位揭秘!大数据从0到1的完美落地之Hive企业级调优

    Hive企业级调优 调优原则已经在MR优化阶段已经有核心描述,优化Hive可以按照MR的优化思路来执行 优化的主要考虑方面: 环境方面:服务器的配置.容器的配置.环境搭建 具体软件配置参数: 代码级别 ...

  8. Hadoop性能调优总结

    目的 随着企业要处理的数据量越来越大,Hadoop运行在越来越多的集群上,同时MapReduce由于具有高可扩展性和容错性,已经逐步广泛使用开来.因此也产生很多问题,尤其是性能方面的问题.这里从管理员 ...

  9. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  10. Spark开发性能调优

    Spark开发性能调优 标签(空格分隔): Spark –Write By Vin 1. 分配资源调优 Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上 ...

最新文章

  1. 用 Git 和 Github 提高效率的 10 个技巧!
  2. 解决pandas:ValueError: Cannot convert non-finite values (NA or inf) to integer
  3. boost::geometry::concatenate_iterator用法的测试程序
  4. 自定义标签之 带Body的标签库
  5. 国内人气设计师交流平台集设
  6. vue-cli部署ngixs_nginx部署访问vue-cli搭建的项目的方法
  7. android sdk离线安装
  8. 换了路由器电脑都连不上网了_高校连上网自由都实现不了?三大运营商:这锅我不背...
  9. 考计算机一级应该学什么条件,计算机一级考试要求
  10. 数仓建模—建模工具PdMan
  11. linux shadow文件*,Linux /etc/shadow文件详解
  12. 只因一段代码全公司200多人被捕,爬虫敲响警钟!
  13. MATLAB terminal远程启动桌面GUI界面
  14. win7 安装ox oracle,windows 2012 R2 core安装0x800f0906 -mgmt-infra出现0x800f0906
  15. Windows下用Python获取电脑显示器物理尺寸和PPI
  16. 第一篇博客,写给自己
  17. sa8155 qnx开发笔记之一设备共享
  18. 唯品会订单分库分表的实践总结以及关键步骤
  19. 半小时学会微信公众平台开发(完整版教程)
  20. MATLAB圆柱和球绘制

热门文章

  1. 什么是Java(什么?Java?)
  2. C语言程序设计预备作业
  3. QT 信号toggled triggered区别
  4. c语言编程计算圆柱体的表面积,c语言求圆柱体的表面积和体积
  5. UniApp 获取屏幕分辨率
  6. tf.shape用法
  7. debian 发行代号
  8. TLS 系统默认版本.NET Framework 3.5.1 Windows 7 SP1 和 Server 2008 R2 SP1 中包含的支持
  9. ubuntu下配置apache2+php+mysql By Assassin
  10. 面对妖艳的配置文件,python小技巧来帮你!