IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hive参数配置调优 -> 正文阅读

[大数据]hive参数配置调优

参数设置方式

1、配置文件 (全局有效)
2、命令行参数(对 hive 启动实例有效)
3、命令行参数声明 (对 hive 的连接 session 有效)

作业设置

set mapreduce.job.name=${fileName}_0; --作业名称
set mapreduce.job.priorite=NORMAL; --作业优先级
set mapreduce.job.queuename=default; --作业队列

适当加大map

set mapreduce.input.fileinputformat.split.maxsize=20000000;
set mapreduce.input.fileinputformat.split.minsize.per.node=10000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack=10000000;

JOIN优化:

1). 将大表放后头
Hive假定查询中最后的一个表是大表。它会将其它表缓存起来,然后扫描最后那个表。
因此通常需要将小表放前面,或者标记哪张表是大表:/*streamtable(table_name) */
2). 使用相同的连接键
当对3个或者更多个表进行join连接时,如果每个on子句都使用相同的连接键的话,那么只会产生一个MapReduce job。
3). 尽量尽早地过滤数据
减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段。
4). 尽量原子化操作
尽量避免一个SQL包含复杂逻辑,可以使用中间表来完成复杂的逻辑

Limit快速出结果

一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。
有一个配置属性可以开启,避免这种情况—对数据源进行抽样

hive.limit.optimize.enable=true --- 开启对数据源进行采样的功能
hive.limit.row.max.size --- 设置最小的采样容量
hive.limit.optimize.limit.file --- 设置最大的采样样本数

负载均衡

set hive.map.aggr = true; --是否在map端聚合
set hive.groupby.skewindata=true; --不支持多列剔重
set hive.groupby.mapaggr.checkinterval=100000; --在 Map 端进行聚合操作的条目数目

压缩设置

set mapred.compress.map.output = true; --对map任务输出进行压缩
set mapred.output.compress = true; --压缩输出
set hive.exec.compress.output = true; --控制hive的查询结果输出是否进行压缩

中间过程压缩设置

set hive.exec.compress.intermediate=true; --控制hive的查询中间结果是否进行压缩,同上条配置,默认不压缩false;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

输入设置

set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; --表示执行前进行小文件合并
set mapred.max.split.size = 256000000; --决定每个map处理的最大的文件大小,单位为B
set mapred.min.split.size.per.node = 256000000; --节点中可以处理的最小的文件大小
set mapred.min.split.size.per.rack = 256000000; --机架中可以处理的最小的文件大小

输出设置

set hive.merge.mapfiles = true; --合并map端输出的结果
set hive.merge.mapredfiles = true; --合并reduce端输出的结果
set hive.merge.size.per.task = 256000000; --合并文件的大小
set hive.merge.smallfiles.avgsize = 256000000;--当输出文件的平均大小小于该值时。启动一个独立的map-reduce任务进行文件merge。
set hive.exec.reducers.bytes.per.reducer=256000000; --每个reduce任务处理的数据量,默认为1000^3=1G

reduce数量

set mapred.reduce.tasks= 300;
set hive.exec.reducers.bytes.per.reducer = 5120000000;

并行设置

set hive.exec.parallel = true;
set hive.exec.parallel.thread.number = 8;

内存相关设置

set mapreduce.map.memory.mb=8096;
set mapreduce.reduce.memory.mb=10144;

动态分区

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.created.files=10000;
set hive.exec.max.dynamic.partitions=10000;
set hive.exec.max.dynamic.partitions.pernode=10000;

mapjoin设置

map join 概念:将其中做连接的小表(全量数据)分发到所有 MapTask 端进行 Join,从 而避免了 reduceTask,前提要求是内存足以装下该全量数据

set hive.auto.convert.join=true;//设置 MapJoin 优化自动开启
set hive.auto.convert.join.noconditionaltask=true;
set hive.auto.convert.join.noconditionaltask.size=10000000;
set hive.mapjoin.smalltable.filesize=25000000 //设置小表不超过多大时开启 mapjoin 优化
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:14:33  更:2022-03-17 22:17:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:53:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码