hive 参数设置大全

简介: hive 参数设置大全

正文


合理设置参数,让集群飞起来~



参数 缺省值
描述
可单独使用 set hive.execution.engine=tez;


设置hive的计算引擎
可单独使用 set mapreduce.map.memory.mb=4096;


设置每个map的内存
可单独使用 set mapreduce.reduce.memory.mb=4096;


设置每个map的内存
可单独使用 set mapreduce.map.java.opts=-Xmx13106M;


这个 Java 程序可以使用的最大堆内存数,一定要小于mapreduce.map.memory.mb

可单独使用 mapreduce.reduce.java.opts


可以使用的最大堆内存数,一定要小于mapreduce.reduce.memory.mb
可单独使用 set hive.cli.print.header=true;


辅助设置-打印表头
可单独使用 set hive.cli.print.current.db=true;


辅助设置-显示当前数据库
可单独使用 set hive.exec.parallel=true;


开启任务并行执行
可单独使用 set hive.exec.parallel.thread.number=8;


同一个sql允许并行任务的最大线程数
联合使用 set hive.exec.dynamic.partition=true; FALSE 设置成true, 表示开启动态分区功能
set hive.exec.dynamic.partition.mode=nonstrict; strict 设置成nonstrict, 表示允许所有分区都是动态的
set hive.exec.max.dynamic.partitions.pernode=1000;

100

每个mapper或reducer可以创建的最大动态分区个数.如果某个mapper或reducer尝试创建大于这个值的分区的话则会知出一个致命错误
set hive.exec.max.dynamic.partitions=1000;

1000

一个动态分区创建语句可以创建的虽大动态分区个数,如果超过这个佳则会抛出—个致命错误
hive.exec.max.created.files 100000 全局可以创建的最大文件个数.有一个Hadoop计数器会跟踪记录创速了多少个文件
可单独使用 set mapred.reduce.tasks=100;


设置reduce数量, mapper数量:reduce数量 = 10:1
可单独使用 set hive.exec.reducers.bytes.per.reducer=500000000; (500M)


设置每个reduce处理数据量,默认1G
联合使用 set mapred.max.split.size=256000000;  


每个Map最大输入大小,间接设置map个数,默认256M就比较好。

set mapred.min.split.size=100000000;


每个Map最小输入大小

set mapred.min.split.size.per.node=100000000;  


一个节点上split的至少的大小

set mapred.min.split.size.per.rack=100000000;


一个交换机下split的至少的大小

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;


执行Map前进行小文件合并,前面参数确定合并文件块的大小
可单独使用 set hive.merge.mapfiles=true;  


在Map-only的任务结束时合并小文件
可单独使用 set hive.merge.mapredfiles = true;


在Map-Reduce的任务结束时合并小文件
可单独使用 set mapreduce.job.reduce.slowstart.completedmaps=0.9 0.8

reduce任务从map完成80%后开始执行

集群默认0.8,大部分比较小的job都是适合的,对于map比较重的大job,这个值可以适当调大,比如0.9

可单独使用 set hive.exec.reducers.bytes.per.reducer=500000000; 1000000000 每个reduce处理的数据量,间接设置reduce的个数
可单独使用 set hive.exec.reducers.max=999;


设置最大reduce的个数
可单独使用 set mapred.reduce.tasks=10;  


直接设置reduce的个数,reduce个数并不是越多越好!Order by时只有一个reduce


如果你懒得看上文,推荐一套参数设置:


set hive.execution.engine=tez;

set mapreduce.map.memory.mb=8192;

set mapreduce.reduce.memory.mb=8192;

set hive.exec.reducers.max=999;

set hive.exec.reducers.bytes.per.reducer=500000000;



开动态分区时设置:


set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

set hive.exec.max.dynamic.partitions.pernode=1000;

set hive.exec.max.dynamic.partitions=1000;


【小编废话】


在日常开发中,还需要结合集群的实际情况,任务的差异性,结合任务日志,针对性的调整参数,两个原则:


原则1:当资源紧张时,重要任务优先(需结合调度时间优化)。


原则2:在保证原则1的前提下,提升整个集群的效率。当时效要求高时,尽量压缩总体运行时间;当稳定性要求更高时,错峰执行,负载均衡。



参数调优核心总结为两个字:平衡。


1、时效和稳定性的平衡;


2、资源的平衡,在某一时间点,集群的内存、io、cpu等负载均衡。


相关文章
|
SQL 分布式计算 Hadoop
55 Hive Shell参数
55 Hive Shell参数
56 0
|
SQL 分布式计算 算法
Hive关联时丢失数据问题和常用的Hive SQL参数设置
针对结果的发生,本文从以下方面分析原因及提供解决方案: - 右表没有匹配的数据 - 关联键数据类型不匹配 - 受count列null值影响 - Hive版本问题,在某些版本中,左连可能导致右表为null - 数据倾斜 并在文末附属了`Hive SQL常用参数设置`的说明。
Hive关联时丢失数据问题和常用的Hive SQL参数设置
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
59 2
|
6月前
|
SQL 分布式计算 资源调度
一文看懂 Hive 优化大全(参数配置、语法优化)
以下是对提供的内容的摘要,总长度为240个字符: 在Hadoop集群中,服务器环境包括3台机器,分别运行不同的服务,如NodeManager、DataNode、NameNode等。集群组件版本包括jdk 1.8、mysql 5.7、hadoop 3.1.3和hive 3.1.2。文章讨论了YARN的配置优化,如`yarn.nodemanager.resource.memory-mb`、`yarn.nodemanager.vmem-check-enabled`和`hive.map.aggr`等参数,以及Map-Side聚合优化、Map Join和Bucket Map Join。
341 0
|
6月前
|
SQL Java Shell
Hive【非交互式使用、三种参数配置方式】
Hive【非交互式使用、三种参数配置方式】
|
SQL 存储 分布式计算
大数据Hive参数配置
大数据Hive参数配置
155 0
|
SQL 分布式计算 Hadoop
Hive 作业中Reduce个数设置多少合适呢?
Hive 作业Reduce个数设置原则
681 0
|
SQL HIVE
hive设置显示当前库名称
hive设置显示当前库名称
|
SQL 分布式计算 负载均衡
如何从语法与参数层面对Hive进行调优
作为企业Hadoop应用的核心产品,Hive承载着FaceBook、淘宝等大佬95%以上的离线统计,很多企业里的离线统计甚至全由Hive完成,如电商、金融等行业。Hive在企业云计算平台发挥的作用和影响愈来愈大。因此,如何优化提速已经显得至关重要。