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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者&#xff1a;来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中&#xff0c;Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

校园生活点餐外卖配送到宿舍小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 随着移动互联网的普及和校园生活的多元化&#xff0c;学生们对于线上点餐、外卖配送等服务的依赖度越来越高。然而&#xff0c;传统的校园餐饮服务模式往往存在效率低下、覆盖范围有限、信息不透明等问题&#xff0c;难以满足学生多样化的需求。因此&#xff0c;开发…

30万月变现3-6万,你也可以

30万月变现3-6万&#xff0c;你也可以 我相信&#xff0c;这些年我的IP还是吸引了不少的中产阶级关注我&#xff0c;什么叫中产阶级&#xff0c;就是兜里还是能随便掏出大几十大几百万的现金的&#xff0c;这群人&#xff0c;有着自己稳定的职业和收入来源&#xff0c;生活水平…

实例讲解电动汽车换挡控制策略及Simulink模型搭建方法

轻型电动汽车一般采用直驱的方式作为驱动方式&#xff0c;即不经过变速箱进行速比的调节&#xff0c;电机输出轴直接经过主减速器将动力传输至车轮。换挡器的换挡方式一般为VCU接收档位器的换挡请求后&#xff0c;根据整车当前状态判断换挡状态&#xff0c;最后输出当前档位状态…

已经30岁了,想转行从头开始现实吗?什么样的工作算好工作?

我是29岁那年&#xff0c;完成从转行裸辞副业的职业转型。 如果你把职业生涯看成是从现在开始30岁&#xff0c;到你退休那年&#xff0c;中间这么漫长的30年&#xff0c;那么30岁转行完全来得及&#xff1b; 如果你觉得必须在什么年纪&#xff0c;什么时间内必须完成赚到几十…

拯救手残党,一键转换季节天气变化效果图!

一键可转换四季或多种天气效果图 AI现在已经发展到这种程度了吗&#xff1f; 神采PromeAI也是卷起来了 以往通过【草图渲染】功能 就生成转化各种效果图 但这对用户来说还不够 又给大家上线了「场景转换器」功能 一键就能生成想要的各种时节场景的变化 一张效果图可以给…

机器学习之实战篇——MNIST手写数字0~9识别(全连接神经网络模型)

机器学习之实战篇——Mnist手写数字0~9识别&#xff08;全连接神经网络模型&#xff09; 文章传送MNIST数据集介绍&#xff1a;实验过程实验环境导入模块导入MNIST数据集创建神经网络模型进行训练&#xff0c;测试&#xff0c;评估模型优化 文章传送 机器学习之监督学习&#…

Qt绘制动态仪表(模仿汽车仪表指针、故障灯)

背景&#xff1a; 项目需要&#xff0c;可能需要做一些仪表显示。此篇除了介绍实现方法&#xff0c;还要说明心路历程。对我而言&#xff0c;重要的是心理&#xff0c;而不是技术。写下来也是自勉。 本人起初心里是比较抵触的&#xff0c;从业20多年了&#xff0c;深知所谓界…

springboot Web基础开发

Spring Boot 是一个用于简化 Spring 应用开发的框架&#xff0c;它通过自动配置和开箱即用的功能&#xff0c;使得创建和部署 Spring 应用变得更为高效。以下是 Spring Boot 基础 Web 开发的一些关键点和实操总结&#xff1a; 1. 项目搭建 使用 Spring Initializr: 访问 Spring…

【Centos】关于容器启动Centos7缺失字符集的问题

最近做一些软件测试和打包&#xff0c;需要频繁的装系统&#xff0c;索性用docker启Centos容器来做&#xff0c;基础镜像做好直接启就好&#xff0c;过程中遇到一个和字符集有关的问题&#xff0c;记录一下&#xff0c;方便遇到同样问题的小伙伴。 问题描述 运行某些python脚本…

Stable Diffusion绘画 | ControlNet应用-Inpaint(局部重绘):更完美的重绘

Inpaint(局部重绘) 相当于小号的AI版PS&#xff0c;不但可以进行局部画面的修改&#xff0c;还可以去除背景中多余的内容&#xff0c;或者是四周画面内容的扩充。 预处理器说明 Inpaint_Global_Harmonious&#xff1a;重绘-全局融合算法&#xff0c;会对整个图片的画面和色调…

达梦CASE_SENSITIVE参数解析

1. 参数含义 标识符大小写敏感&#xff0c;默认值为 Y。 当大小写敏感时&#xff0c;小写的标识符应用双引号括起&#xff0c;否则被转换为大写&#xff1b;当大小写不敏感时&#xff0c;系统不自动转换标识符的大小写&#xff0c;在标识符比较时也不区分大小写。 CASE_SENS…

QtCreator学习(二).在stm32mp1中使用

0.配置编译环境 复制【正点原子】STM32MP157开发板&#xff08;A盘&#xff09;-基础资料\05、开发工具\01、交叉编译器st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh到虚拟机chmod添加可执行文件&#xff0c;./st*运行&#xff…

【JAVA】Tomcat性能优化、安全配置、资源控制以及运行模式超详细

文章目录 一、Tomcat性能优化application.yml配置maxThreads 连接数限制压缩传输AJP禁用 二、JVM方向优化设置并行垃圾回收器查看gc日志文件 三、Tomcat安全配置入侵防范禁用非法HTTP请求方法禁止目录列出防止恶意关闭服务配置HTTPS加密协议HttpOnly标记安全头配置 四、Tomcat资…

【鸿蒙】HarmonyOS NEXT星河入门到实战8-自定义组件-组件通信

目录 1、模块化语法 1.1 模块化基本认知 1.2 默认导出和导入 1.3 按需导出和导入 1.4 全部导入 2、自定义组件 -基础 2.1 自定义组件 - 基本使用 2.2 自定义组件 -通用样式 2.3 自定义组件 -成员函数变量 3、 状态管理 3.1 状态管理概述 3.2 State 自己的状态 3.3…

硬盘格式化后能恢复数据吗?教你如何恢复硬盘数据

在数字时代&#xff0c;硬盘作为存储数据的重要设备&#xff0c;承载着人们大量的工作文件、珍贵照片、重要视频等。然而&#xff0c;由于误操作、病毒感染或系统升级等原因&#xff0c;有时我们不得不对硬盘进行格式化。那么&#xff0c;硬盘格式化后&#xff0c;里面的数据还…

spring综合性利用工具-SpringBootVul-GUI(五)

项目地址 https://github.com/wh1t3zer/SpringBootVul-GUI 0x01简介 本着简单到极致的原则&#xff0c;开发了这么一款半自动化工具&#xff08;PS&#xff1a;这个工具所包含了20个漏洞&#xff0c;开发不易&#xff0c;有任何问题可提issue&#xff09; 尽管是一个为懒人量…

【免费刷题】实验室安全第一知识题库分享

道路千万条&#xff0c;实验安全第一条。 嘿&#xff0c;实验室的小伙伴们&#xff01;是不是还在为实验室安全考试而烦恼&#xff1f;别担心&#xff0c;今天就让我来分享一些实用的题库&#xff0c;帮助你轻松应对考试&#xff0c;同时也更好地保护自己和实验室的安全。 一、…

petalinux开发 添加iperf

如何把iperf编译到petalinux工程中去 目录&#xff1a; /home/xxx/7z020/project-spec/meta-user/conf 里面有一个user-rootfsconfig文件 它默认里面有 CONFIG_gpio-demo CONFIG_peekpoke 把iperf添加进去 #Note: Mention Each package in individual line #These packages w…