Hive性能调优之Mapper和Reducer
这里写自定义目录标题
- 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相关推荐
- Hive性能调优实战 分享
获取方式 链接:https://pan.baidu.com/s/1TmkWssL1K45af7GDrj2QWw 提取码:26uv 关注我的公众号[宝哥大数据],更多干货 目录 第1章 举例感受Hive ...
- 3万字史诗级 Hive 性能调优(建议收藏)
前言 Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询的时候要特别注意效率 .影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.Job或I/O过多.MapReduce 分 ...
- hive性能调优实战pdf_Nginx 性能调优实战
来自:Linux社区 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpui ...
- hive性能调优实战pdf_1分钟带你入门JVM性能调优,实战解析调优工具
JVM的运行参数 1.1 三种参数类型 标准参数 help -version -X参数 (非标准参数) -Xint -Xcomp -XX参数(使用率比较高, 常用语jvm调优) -XX:newSize ...
- 【大数据开发】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中 ...
- 真正让你明白Hive参数调优系列1:控制map个数与性能调优参数
本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题.以及日常Hi ...
- 全方位揭秘!大数据从0到1的完美落地之Hive企业级调优
Hive企业级调优 调优原则已经在MR优化阶段已经有核心描述,优化Hive可以按照MR的优化思路来执行 优化的主要考虑方面: 环境方面:服务器的配置.容器的配置.环境搭建 具体软件配置参数: 代码级别 ...
- Hadoop性能调优总结
目的 随着企业要处理的数据量越来越大,Hadoop运行在越来越多的集群上,同时MapReduce由于具有高可扩展性和容错性,已经逐步广泛使用开来.因此也产生很多问题,尤其是性能方面的问题.这里从管理员 ...
- 大数据技术之_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. ...
- Spark开发性能调优
Spark开发性能调优 标签(空格分隔): Spark –Write By Vin 1. 分配资源调优 Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上 ...
最新文章
- 用 Git 和 Github 提高效率的 10 个技巧!
- 解决pandas:ValueError: Cannot convert non-finite values (NA or inf) to integer
- boost::geometry::concatenate_iterator用法的测试程序
- 自定义标签之 带Body的标签库
- 国内人气设计师交流平台集设
- vue-cli部署ngixs_nginx部署访问vue-cli搭建的项目的方法
- android sdk离线安装
- 换了路由器电脑都连不上网了_高校连上网自由都实现不了?三大运营商:这锅我不背...
- 考计算机一级应该学什么条件,计算机一级考试要求
- 数仓建模—建模工具PdMan
- linux shadow文件*,Linux /etc/shadow文件详解
- 只因一段代码全公司200多人被捕,爬虫敲响警钟!
- MATLAB terminal远程启动桌面GUI界面
- win7 安装ox oracle,windows 2012 R2 core安装0x800f0906 -mgmt-infra出现0x800f0906
- Windows下用Python获取电脑显示器物理尺寸和PPI
- 第一篇博客,写给自己
- sa8155 qnx开发笔记之一设备共享
- 唯品会订单分库分表的实践总结以及关键步骤
- 半小时学会微信公众平台开发(完整版教程)
- MATLAB圆柱和球绘制
热门文章
- 什么是Java(什么?Java?)
- C语言程序设计预备作业
- QT 信号toggled triggered区别
- c语言编程计算圆柱体的表面积,c语言求圆柱体的表面积和体积
- UniApp 获取屏幕分辨率
- tf.shape用法
- debian 发行代号
- TLS 系统默认版本.NET Framework 3.5.1 Windows 7 SP1 和 Server 2008 R2 SP1 中包含的支持
- ubuntu下配置apache2+php+mysql By Assassin
- 面对妖艳的配置文件,python小技巧来帮你!