【Hive】(十九)Hive 常用参数优化汇总

简介: 【Hive】(十九)Hive 常用参数优化汇总

● 使用动态分区需要加配置:


SET hive.exec.dynamic.partition=true;

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

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

SET hive.exec.max.dynamic.partitions.pernode=100;


为了防止一个reduce处理写入一个分区导致速度严重降低,加入如下参数

SET hive.optimize.sort.dynamic.partition=false;


● 使用自动优化:(mapjoin)


首先需要注意,这个有如下限制条件

1. Full outer joins are never converted to map-side joins.

2. A left-outer join are converted to a map join only if the right table that is to the right side of the join conditions, is lesser than 25 MB in size.

3. Similarly, a right-outer join is converted to a map join only if the left table size is lesser than 25 MB.

set hive.auto.convert.join=true;

SET hive.mapjoin.smalltable.filesize=25000000; – 这个是设定放入内存的表的大小上限的

set hive.auto.convert.join.noconditionaltask=true; --设置多mapjoin同时执行(a left join small_b left join small_c),而不是起多次map任务

set hive.auto.convert.join.noconditionaltask.size=30000000;


● 使用负载均衡:


SET hive.groupby.skewindata=true;

从上面group by语句可以看出,这个变量是用于控制负载均衡的。当数据出现倾斜时,如果该变量设置为true,那么Hive会自动进行负载均衡

比如A日志表与B码表join,但是A中的关联字段id仅是B中id的一小部分,这时候很容易出现reduce阶段倾斜,大量的reduce空跑,因为这些空跑的reduce分到的B的id在A中不存在。


● 设置map和reduce的任务处理的字节数


SET mapreduce.input.fileinputformat.split.maxsize=67108864;

SET mapreduce.input.fileinputformat.split.minsize=67108864;

SET mapreduce.input.fileinputformat.split.minsize.per.node=67108864;

SET mapreduce.input.fileinputformat.split.minsize.per.rack=67108864;

SET hive.exec.reducers.bytes.per.reducer=268435456; (可以设置小一点,因为默认的是min(集群配置的,总数据量/本设置值))


● 直接设置map和reduce任务数


SET mapred.map.tasks = 400;

SET mapred.reduce.tasks = 400;


● 设置最大reduce数限制


SET hive.exec.reducers.max=1024;


● 修改字段类型(注意跟presto集成会有问题)


ALTER TABLE name CHANGE column_name new_name new_type


● 设置运行内存,应对运行时报错:java 堆内存溢出


SET mapreduce.map.memory.mb=8000;

SET mapreduce.map.java.opts=-Xmx6000m;

SET mapreduce.reduce.memory.mb=8000;

SET mapreduce.reduce.java.opts=-Xmx6000m;

目录
相关文章
|
7月前
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
642 0
|
SQL 分布式计算 监控
Hive性能优化之计算Job执行优化 2
Hive性能优化之计算Job执行优化
232 1
|
SQL 存储 分布式计算
Hive性能优化之表设计优化1
Hive性能优化之表设计优化1
83 1
|
SQL 分布式计算 Hadoop
55 Hive Shell参数
55 Hive Shell参数
56 0
|
SQL 分布式计算 算法
Hive关联时丢失数据问题和常用的Hive SQL参数设置
针对结果的发生,本文从以下方面分析原因及提供解决方案: - 右表没有匹配的数据 - 关联键数据类型不匹配 - 受count列null值影响 - Hive版本问题,在某些版本中,左连可能导致右表为null - 数据倾斜 并在文末附属了`Hive SQL常用参数设置`的说明。
Hive关联时丢失数据问题和常用的Hive SQL参数设置
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
67 2
|
7月前
|
SQL 分布式计算 资源调度
Hive 优化总结
Hive优化主要涉及HDFS和MapReduce的使用。问题包括数据倾斜、操作过多和不当使用。识别倾斜可通过检查分区文件大小或执行聚合抽样。解决方案包括整体优化模型设计,如星型、雪花模型,合理分区和分桶,以及压缩。内存管理需调整mapred和yarn参数。倾斜数据处理通过选择均衡连接键、使用map join和combiner。控制Mapper和Reducer数量以避免小文件和资源浪费。减少数据规模可调整存储格式和压缩,动态或静态分区管理,以及优化CBO和执行引擎设置。其他策略包括JVM重用、本地化运算和LLAP缓存。
167 4
Hive 优化总结
|
6月前
|
SQL 资源调度 数据库连接
Hive怎么调整优化Tez引擎的查询?在Tez上优化Hive查询的指南
在Tez上优化Hive查询,包括配置参数调整、理解并行化机制以及容器管理。关键步骤包括YARN调度器配置、安全阀设置、识别性能瓶颈(如mapper/reducer任务和连接操作),理解Tez如何动态调整mapper和reducer数量。例如,`tez.grouping.max-size` 影响mapper数量,`hive.exec.reducers.bytes.per.reducer` 控制reducer数量。调整并发和容器复用参数如`hive.server2.tez.sessions.per.default.queue` 和 `tez.am.container.reuse.enabled`
524 0
|
7月前
|
SQL 存储 大数据
Hive的查询、数据加载和交换、聚合、排序、优化
Hive的查询、数据加载和交换、聚合、排序、优化
151 2
|
7月前
|
SQL 存储 分布式计算
【Hive】Hive优化有哪些?
【4月更文挑战第16天】【Hive】Hive优化有哪些?