Hive任务优化参数整理

Hive本身是个基于hdfs的结构化数据管理工具,虽然在后面的发展中允许底层接入其他的数据源,比如第三方数据服务这种基础架构,但是它从立意上来说,它不适合用来做高性能查询引擎,反而在传统离线数据仓库中它有着自身的优势

1.当你的查询数据量较大,此时spark等其他计算引擎会因为自身复杂的执行计划导致计算量很大,再加上计算中的硬性资源消耗,导致需要的资源使你无法接受,此时如果你可以接受较长时间的运行等待,建议使用hive,因为hive底层用的mr,任务分割截止到一次mr,没有那么大的消耗需求,你可以通俗的理解为hive只需要有你数据量大小和跑数据需要的进程类开销既可,它没有spark那种复杂的执行计划,因此它的使用成本是目前大数据计算引擎中最低的一个,效率也是最慢的,不过对于大任务的处理,更稳定

2.查询逻辑复杂,任务消耗资源较大,任务容易失败的情况下,建议使用hive,不过hive优势在于处理大数据,对于处理小数据没有优势,因为hive的执行延迟比较高。

1、hive任务的内存类调整

AM:

yarn.app.mapreduce.am.resource.mb=1536   #AM的可用内存大小,用来负责该任务的资源分配以及进度监控。建议值10240
yarn.app.mapreduce.am.command-opts=-Xmx1221m  #AM的jvm参数,建议值-Xmx8000m,也就是上面的70-80%,这个比例不要随便改,不然会造成内存溢出

Map:

mapreduce.map.memory.mb=1024   #单个map占用的内存大小,建议5120
mapreduce.map.java.opts=-Xmx864m    #单个map的jvm参数,建议-Xmx4800m,建议范围比例也是和AM一样的

Reduce:

mapreduce.reduce.memory.mb=2048    #单个reduce占用的内存大小,建议值10240
mapreduce.reduce.java.opts=-Xmx1638m   #同上

内存参数都是成对的,配置的时候也必须是成对配置,不然内存使用极容易出问题,opts结尾的是JVM参数,一般为对应内存的70%-80%,两者同步调整。

AM的内存需要根据任务的map和reduce数量来相应提高,该值太小会导致任务一直在重试,浪费资源且无法运行成功。建议totalmap超过1w+map以上的任务,AM内存大小设置为5G。部分任务高达15w个map,建议配置成10G。

map和reduce的 内存大小要根据任务的map并行度弹性调整,尽量不要超过报警阈值,并行度下面会说。

2、map和reduce并行度,允许同时运行的最大map/reduce数量,即并发度

mapreduce.job.running.map.limit=1000   #尽量不要上4000,2000左右就差不多了
mapreduce.job.running.reduce.limit=200   #一般是500左右

配置并行度的时候要考虑的时候,一定要考虑好,下面的公式是博主在工作中总结的上限,过了这个上限,任务就会出现读写吃力等问题,就不稳定了

任务并行reduce的总内存=${mapreduce.job.running.reduce.limit}*${mapreduce.reduce.memory.mb}任务reduce的总内存 <=5TB
任务并行map的总内存=${mapreduce.job.running.map.limit}*${mapreduce.map.memory.mb}
任务map的总内存 <=10TB

3、task数量,默认情况下,hive会根据map输入的数据总量,自动计算出合适的reduce数若,有需求,如需要生成几个结果文件等,可自行指定。hive中map数量无法向写代码那样直接指定数量,但是可以根据合并小文件的方式达到目的(见下条)

mapred.reduce.tasks

4、小文件合并,这个配置基本是你有需求用hive时,必带参数,因为数据量大的时候,基于磁盘计算一定会生成巨量的小文件,尤其是通常hive用的是tez,虽然会整合执行计划,但小文件该有还是有,很早之前博主刚入行的时候,想过既然能更改底层引擎,改成spark不就好了,对小文件的预防有好处,但是干的时间长了,发现能用spark了谁用hive呀

hive.merge.mapfiles=false    #在map-only job后合并文件,默认false
hive.merge.mapredfiles=false   #在map-reduce job后合并文件,默认false
hive.merge.smallfiles.avgsize=16000000     #单位字节,平均文件大小,是决定是否执行合并操作的阈值,建议64000000
hive.merge.size.per.task=256000000      #合并后每个文件的大小,默认单位字节,建议256000000
hive.merge.tezfiles=false   #如果使用的是tez引擎,可以在任务结束后合并文件,会新启动一个任务
mapreduce.input.fileinputformat.split.maxsize=256000000   #数据块被分割的最大值,单位字节,但是一般不改
mapreduce.input.fileinputformat.split.minsize=1   #数据块被分割的最小值,同上
mapreduce.input.fileinputformat.split.minsize.per.node=1     #一个节点上split的至少的大小 ,决定了多个data node上的文件是否需要合并,建议128000000,单位字节
mapreduce.input.fileinputformat.split.minsize.per.rack=1       #一个交换机下split的至少的大小,决定了多个交换机上的文件是否需要合并,建议值同上

5、推测执行,识别那些跑的比较慢的任务,然后它会产生另一个等效的任务作为备份,并使用首先完成的那个任务的结果,此时另外一个任务则会被要求停止执行,一般下面的三个开关保证默认的false

mapreduce.map.speculative
mapreduce.reduce.speculative
hive.mapred.reduce.tasks.speculative.execution

6、结果压缩

hive.exec.compress.output=true
mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.type=RECORD   #默认RECORD,可选NONE、RECORD或者BLOCK
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.DefaultCodec     #压缩格式

在这里插入图片描述

7、数据倾斜切分,hive的数据倾斜分为两种不同的情况

如果你是在join上发生了数据倾斜,既小表join了大表,用下面的切分任务数据

hive.auto.convert.join=false    #是否切分数据倾斜,默认false
hive.mapjoin.smalltable.filesize=25600000   #切分的大小,单位字节,建议100000000   

如果你发生了数据热点问题,比如某个key很大,就要开启下面的两个

hive.map.aggr=true     #启动combine聚合
hive.groupby.skewindata=true    #有一套加盐的执行计划会生效,将job拆成两个mr job,第一个job做部分聚合,第二个再全量聚合

8、任务超时,任务较大频繁GC ,或存在死循环,计算节点崩溃,都可能会造成
time out,导致任务 failed。遇到的话,将参数置位0即可规避,就是不检查超时

mapred.task.timeout=600000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/875340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python 函数 封装

封装 函数的参数是&#xff1a;变量 def 函数(参数):print(参数)if __name__ __main__:函数(参数)函数(参数2)函数的参数是&#xff1a; 字典 import requests# 定义一个字典 data {} 地址 "https://webdriveruniversity.com/" 请求方法 getdata["url"…

科研绘图系列:R语言宏基因组PCoA图(PCoA plot)

介绍 PCoA(主坐标分析,也称为主轴分析)是一种多维统计技术,用于分析和可视化高维数据集,如宏基因组数据。在宏基因组学中,PCoA图用于展示样本之间的相似性和差异性,通常基于样本之间的距离或相似度矩阵。PCoA图说明: 样本间关系:PCoA图通过降维技术将高维数据投影到二…

RK3588开发板TF卡槽连接WIFI模组O9201SB

RK3588平台开发板有TF卡槽&#xff0c;可以做为SDIO WIFI连接接入点&#xff0c;本文以O9201SB WIFI模组接入配置。 一、O9201SB模组放于测试架上&#xff0c;底板具有SDIO接口可插入TF卡卡槽。 O9201SB为2T2R SDIO 13x15mm 支持sdio3.0的wifi6模组&#xff0c;支持DBDC1x1或DB…

数据中台 | 数据资源管理平台介绍

01 产品概述 数据资源的盘查、集成、存储、组织、共享等全方位管理能力&#xff0c;无论对于企业的数字化转型&#xff0c;还是对企业数据资产的开发、运营、交易及入表&#xff0c;都具有极为关键的作用。今天&#xff0c;小兵就来为大家介绍我们自研数据智能平台中的核心产品…

3D云渲染农场为何怎么贵?主要消耗成本介绍

随着对高质量3D动画的需求持续增长&#xff0c;云渲染农场对于旨在以高效速度生产高质量视觉效果的工作室来说变得至关重要。然而&#xff0c;用户经常想知道为什么渲染农场的价格如此之高&#xff0c;理解背后的原因可以帮助艺术家做出更好的选择。 什么是云渲染农场&#xff…

YOLO配合 PYQT做自定义虚拟电子围-自定义绘制多边形虚拟电子围栏

电子围栏标注以及显示 1、目标检测&#xff1a; YOLO可以识别检测物体&#xff0c;这是众所周知的。使用YOLO来做目标检测&#xff0c;并获取坐标信息。 2、电子围栏 比如在监控中&#xff0c;指定一块区域&#xff0c;如果有目标进入&#xff0c;则发出警报&#xff0c;并提…

计算机网络(一) —— 网络基础入门

目录 一&#xff0c;关于网络 二&#xff0c;协议 2.1 协议是什么&#xff0c;有什么用&#xff1f; 2.2 协议标准谁定的&#xff1f; 2.3 协议分层 2.4 OSI 七层模型 2.5 TCP/IP 四层模型 三&#xff0c;网络传输基本流程 3.1 局域网中两台主机通信* 3.2 报文的封装与…

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么&#xff1a; 1.可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c; 按顺序地串行化执行而不会被其他命令插入&#xff0c;不许加塞2.一个队列中&#xff0c;一次性、…

2009-2023年上市公司华证esg评级、评分年度数据(含细分项)

2009-2023年上市公司华证esg评级、评分年度数据&#xff08;含细分项&#xff09; 1、时间&#xff1a;2009-2023年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;证券代码、年份、证券简称、评级日期、综合评级、综合得分、E评级、E得分、S评级、S得分、G评级、G得分…

How to see if openAI (node js) createModeration response “flagged“ is true

题意&#xff1a;如何查看 OpenAI (Node.js) createModeration 响应中的 "flagged" 是否为 true 问题背景&#xff1a; Using the OpenAI createModeration feature, I am trying to see if the string gets flagged or not. 使用 OpenAI 的 createModeration 功能…

基于开源WQ装备知识图谱的智能问答优化

基于笔者之前写的博客基础上&#xff1a;https://blog.csdn.net/zhanghan11366/article/details/142139488【基于开源WQ装备知识图谱的智能问答全流程构建】进行优化。 优化一、 解决你提出的多武器、多关系解析问题&#xff0c;并确保每个武器只匹配其对应的关系&#xff0c…

百元内真无线蓝牙耳机推荐有哪些?四大百元性价比品牌公开推荐

在当今这个科技迅速发展的时代&#xff0c;真无线蓝牙耳机以其便携性和自由度成为了许多人日常生活中不可或缺的配件&#xff0c;然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;消费者往往感到眼花缭乱&#xff0c;难以抉择&#xff0c;百元内真无线蓝牙耳机推荐有哪些…

Python | 练习作业 2

为学生登录系统新增搜索功能。 第二天作业的解题思路&#xff1a; # 1.创建一个空列表保存搜索结果 # 2.让用户输入要搜索的内容 # 3.遍历学生信息&#xff0c;检查学生的id name age gender score # 中的属性值 是否跟用户搜索的内容一致 # 4.如果有一致的属性 那么就将该学生…

通过nginx代理转发实现共用80和443端口

目录 项目场景&#xff1a; 问题&#xff1a;怎么实现端口共用&#xff1f; 一、域名解析到nginx服务器 二、创建vhost解析到实际的服务器 三、防火墙的配置 项目场景&#xff1a; 公司自建服务器&#xff0c;有一条专线带有公网IP&#xff0c;如何满足不同的域名解析共用…

春日美食汇:基于SpringBoot的订餐平台

2 系统关键技术 2.1JSP技术 JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件()。htm,。Html) [1]。 JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行&#xff0c;正因为JSP参照了许多编程语言的特性&#xf…

RHCE--复习(一)之系统延迟任务及定时任务

系统延迟任务及定时任务 #关闭图形命令&#xff08;第二次开启的时候&#xff09;[rootlocalhost ~]# systemctl set-default multi-user.target#windos系统级别类型 0-6个级别#查看级别类型[rootlocalhost ~]# runlevel 一、延迟任务 在系统中我们的维护工作大多数时在服务器…

自选择问题和处理效应模型

这里写目录标题 自选择问题和处理效应模型Tobit 模型假定Heckman过程逆米歇尔比率推导过程逆米希尔比率推导过程自选择问题典型事实分析一定要列出来的关于OLS&#xff0c;Heckman-2sls&#xff0c;Heckman三种模型的估计结果对比Heckman两阶段算逆米希尔比率分解 处理效应模型…

labview禁用8080端口

需求背景 最近电脑上安装了labview全家桶,发现idea的8080端口项目启动报错,一直提示8080端口被占用。最简单的办法就是找到8080端口的服务,然后关闭这个服务。但是我不想这么做,我想把labview的web服务器的端口给修改了。 操作教程 1、cmd查看8080端口 2、windows进程 同…

pgAdmin 4备份数据库失败,解决

pgAdmin4中&#xff0c;必须先设置二进制路径&#xff1b;binary paths pgAdmin4操作路径&#xff0c;File—>Preferences—>Paths—>Binary paths 找到postgreSQL的安装目录&#xff0c;bin目录复制&#xff0c;然后设置在截图标记位置&#xff1b; 再去备份数据库就…

flux.1模型在40hx上绘图实践

flux.1是新成立的AI绘画团队。核心成员来自于Stability AI。Stability AI曾经开创了AIGC的新纪元&#xff0c;但管理团队在经营理念上一直有分歧&#xff0c;到了SD3的推出后&#xff0c;团队在开源还是闭源的问题上&#xff0c;产生了重大冲突&#xff0c;直到模型又一次无意外…