Hive任务优化参数整理

news2024/9/20 16:55:31

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%,两者同步调整。也可忽略jvm参数,只设置内存大小。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题)

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题) 引言问题定义算法思路具体步骤第一步:找出所有奇度顶点第二步:将奇度顶点配对,并添加最短路径第三步:构造欧拉回路伪代码C语言实现引言 在图论中,中国邮递员问题(Chinese Postman Problem, CPP)是一…

高精度E4990A参数资料keysight是德e4990a阻抗分析仪

Keysight E4990A 阻抗分析仪的规格&#xff1a; 工作频率选项&#xff1a; 20 Hz 至 10 MHz20 Hz 至 20 MHz20 Hz 至 30 MHz20 Hz 至 50 MHz20 Hz 至 120 MHz选项分别为 010 / 020 / 030 / 050 / 120 测量参数&#xff1a;lZl、lYl、O、R、X、G、B、L、C、D、Q、复合 Z、复合…

DBA 的 AI 助手 | MySQL 清理 undo log 居然用了 10 个小时?

社区王牌专栏《一问一实验&#xff1a;AI 版》全新改版归来&#xff0c;得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询&#xff0c;表达了想试用体验 ChatDBA 的意愿&#xff0c;对此我们表示感谢 &#x1f91f;。 目前&#xff0c;ChatDBA 还在最后的准备…

keil调试技巧 keil中的debug调试技巧单片机调试技巧 定位单片机程序异常位置 定位程序异常错误原因计算程序执行时间多少

单片机常用调试技巧(B站UP分享) 如何查看程序运行时间 使用Event Recorder 组件 查看运行时间 https://blog.csdn.net/twx11213030422/article/details/114013796 https://blog.csdn.net/weixin_43866583/article/details/125874888?spm1001.2101.3001.6661.1&utm_med…

大数据开发概论

大数据开发概论 文章目录 大数据开发概论大数据定义大数据概念计算机组成原理软件和硬件概述操作系统 大数据定义 大数据(Big Data)&#xff0c;是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;因此需要新处理模式&#xff0c;该处理模式就…

SpinalHDL之数据类型(二)

本文作为SpinalHDL学习笔记第五十五篇,介绍SpinalHDL的Bits数据类型。 目录: 1.描述(Description) 2.声明(Declaration) 3.操作符(Operators) 1.描述(Description) Bits类型对应于没有算数意义的bits向量。 2.声明(Declaration) 声明bit向量的语法如下所⽰:([]中为可填…

让图片变成动画,@keyframes:动画制作

keyframes被称为关键帧&#xff0c;其类似于Flash中的关键帧。在CSS3中其主要以“keyframes”开头&#xff0c;后面跟着是动画名称加上一对花括号“{…}”&#xff0c;括号中是一些不同时间段样式规则。 语法&#xff1a;keyframes animationname {keyframes-selector{css-styl…

Windows terminal使用说明

1 terminal基本介绍 1 下载 从微软商店上下载的方式网速比较慢&#xff0c;一种直接的方式是直接用命令行运行命令 winget install --idMicrosoft.WindowsTerminal -e# Window Terminal 安装以及使用(2021最新) 2 ssh配置 # 使用Windows Terminal进行SSH登录 1 通过label…

网安学习与木马病毒

一、网安知识学习大点(B站大学) 现状&#xff1a;掌握基本的编程思想、了解过网络知识、听说过一些网安的东西 0、法律 1、操作系统&#xff08;Windows和Linux&#xff09; 2、数据通信&#xff08;网络&#xff09; 3、数据库&#xff08;mysql&#xff09; 4、一门编程…

高效诊断Linux性能问题

从uptime命令开始&#xff1b;这里的关键指标是平均负载&#xff0c;它显示了过去 1分钟&#xff0c;5分钟和15分钟内正在运行或等待资源的进程平均数量&#xff1b;如果这些数字持续高于CPU内核数&#xff0c;则可能表明进程正在争夺资源&#xff0c;提示我们使用其他工具深入…

“视频号小店:微信新零售生态中的创新引擎与未来展望“

随着数字技术的快速发展&#xff0c;微信视频号利用其社交特性和庞大的用户基础&#xff0c;正逐渐崭露头角&#xff0c;成为新零售行业的新宠。视频号小店&#xff0c;作为这一生态系统中的创新亮点&#xff0c;为商家提供了一个集商品展示、交易促成和营销策略于一体的全新商…

企业文件加密软件怎么选?2024超好用的十款企业文档加密软件推荐!臻品优选!

"数据如金需锁固&#xff0c;密文守护保安宁。" 文件加密软件是守护企业数据安全的重要利器&#xff0c;选择一款适合企业自身需求的加密软件&#xff0c;不仅能够提升数据安全性&#xff0c;还能优化团队协作效率&#xff0c;确保业务连续性。 本文特为您臻选2024年…

安卓framework美化手势导航侧滑返回UI

文章目录 手势导航的侧滑返回效果图原生效果如下:要实现的功能,: 实现代码1. 初始化代码2. 修改绘制的代码,进行箭头与退出UI的显示3. 拖动的时候手指上下移动时,箭头ui跟着移动 以下是一些其他可以美化安卓右滑手势拖动 UI 的方法&#xff1a;视觉效果方面形状和布局方面 安卓…

「电商运营」高客单和低客单产品及选品的运营区别

高客单和低客单产品在运营重点和选品方向上存在明显的差异。在实际运营中&#xff0c;需要根据产品的特点和市场需求&#xff0c;制定合适的运营策略和选品方向&#xff0c;以实现产品的成功运营和盈利。 一、高客单产品运营重点 1、目标客户精准定位 由于高客单产品价格较高…

深度解析Unix系统的基本概念及优缺点和原理

介绍 Unix系统是一种多用户、多任务、分时操作系统&#xff0c;起源于20世纪70年代初&#xff0c;由贝尔实验室开发。它具有强大的命令行接口和层次结构的文件系统&#xff0c;支持多种处理器架构&#xff0c;广泛应用于工程应用和科学计算等领域。 基本概念 一、Unix系统的起…

以实时,见未来——DolphinDB 2024 年度峰会圆满举办

2024年9月6日&#xff0c;“以实时&#xff0c;见未来”—— DolphinDB 2024 年度峰会在杭州圆满落下帷幕。本次峰会由主会场与三个专题分会场组成&#xff0c;众多金融机构领导与专家、行业领袖、高校与研究机构学者等近300位嘉宾共襄盛举&#xff0c;一同探讨数智化浪潮下金融…

乐鑫无线WiFi芯片模组,家电设备智能联网新体验,启明云端乐鑫代理商

在当今这个数字化飞速发展的时代&#xff0c;智能家居和物联网(IoT)设备已经成为我们生活中不可或缺的一部分。随着技术的进步&#xff0c;我们对于设备联网的需求也在不断提升。 智能家居、智能门锁、智能医疗设备等&#xff0c;这些设备通过联网实现了数据的实时传输和远程控…

【AI绘画】Midjourney光影控制详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;为什么要学习光影控制光影控制的作用 &#x1f4af;强化主题hard lighting&#xff08;硬光 &#xff09;soft lighting&#xff08;软光/柔光&#xff09;测试 &…

C++进阶——多态

什么是多态&#xff1f;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生不同的状态。 举个栗子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&#xff1b;学生买票时&#xf…

数据库进阶:2.索引

1.数据库中的索引 1.1索引的概念 介绍&#xff1a;索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#x…