分享好友 最新动态首页 最新动态分类 切换频道
Hive优化器原理与源码解析—统计信息Parallelism并行度计算
2024-12-26 18:20

目录

背景

Parallelism并行度

总结

背景

Parallelism是有关RelNode关系表达式的并行度以及如何将其Opeartor运算符分配给具有独立资源池的进程的元数据。同一个Operator操作符,并行执行和串性执行相比,在成本优化器CBO看来,并行执行的成本更低。

从并行性的概念来来讲,就是将大任务划分为较小的任务,其中每个小任务被分配分配给特定处理器,以完成部分主要任务。最后,从每个小任务中获得的部分结果将合并为一个最终结果。与串行执行的一个大任务相比,并行执行多个任务可以获得性能大幅度提升!

在Hive中,Parallelism并行度计算,除了参数指定,CPU cores硬件限制,Operator算法是否可以并行执行等因素的影响,主要与如TableScan、Sort、Join等等Operator的数据大小的拆分个数splitCount计算有关。

Parallelism并行度

讲述并行度之前先熟悉执行计划中Stage划分、Phase阶段定义和PhaseTransition过渡阶段判断的定义。

一个Phase从一个叶子节点如TableScan或phase变换节点如Exchange开始,如Hadoop的shuffle操作符跨网络发送数据是一种Sort-Exchange的形式。

在优化HiveQL时,都会查看执行计划,这些信息含有开头Stage依赖信息说明,操作符树,统计信息记录数、数据大小等,如图

那么这些Stage大致分为几类:

MAP/REDUCE STAGE里还有TabelScan、Sort、Filter、Project、Aggreate、Join等等各种Oprerator操作符树构成。

METASTORE STAGE 元存储,统计信息收集操作,如上图

Stage: Stage-2 Stats-Aggr Operator

统计信息的收集设置相关参数,在参数为true的前提下,并在执行DML语句才会收集。强调的是,

hive.stats.autogather

This flag enables gathering and updating statistics automatically during Hive DML operations.

Statistics are not gathered for statements.

判读Operator操作符的输入RelNode和自己是否跨进程,即父Operator与子Operator是否在一个相同的进程里。

1)HiveJoin是否为PhaseTransition的判断

是依据Join Operator的具体实现来判断的,不能的Join 算法会返回不同结果。

HiveDefaultCostModel的Join的isPhaseTransition默认是false。

HiveTezCostModel分为四种Join算法,每种算法都有isPhaseTransition判断方法,isPhaseTransition返回值如下

Common Join:true

Map Join:false

Bucket Map Join:false

Sort Merge Bucket Join:false

2)Sort Limit是否为PhaseTransition的判断

3)TableScan、Values、Exchange等RelNode的PhaseTransition的判断,默认值True。

返回数据非重复拆分数,注意splits必须是非重复的,如广播broadcast方式,其每个拷贝都是相同的,所有splitCount为1。因此,split count拆分数与由每个Operator实例发送的数据成倍数关系。

Parallelism并行处理就是对Split数据进行并行处理,在不考虑硬件CPU core和参数限制等因素影响的情况下,Split拆分数就是并行任务的个数。

1)Join的SplitCount拆分个数计算

是依据Join Operator的具体实现来判断的,不能的Join 算法会返回split count。

HiveDefaultCostModel的Join的split count为1。

HiveTezCostModel分为四种Join算法Common Join、Map Join、Bucket Map Join和Sort Merge Bucket的split count计算逻辑相同:

都用HiveAlgorithmsUtil.getSplitCountWithoutRepartition(join)方法实现的,

splitCount = (总行数*平均记录大小) / maxSplitSize,其中maxSplitSize是HiveAlgorithmsConf算法配置项初始化的每个split大小的最大值。

2)TableScan的SplitCount拆分个数计算

Hive中实现的StorageDescriptor存储类中方法,判断分桶个数,如果bucketCols分桶集合为null,则为0,否则分桶个数和分桶列集合

如果分桶列列表bucketCols不为null,使用getNumBuckets()获取分桶数作为splitCount拆分数。否则使用splitCountRepartition方法通过元数据统计信息计算出splitCount拆分数(splitCount为null,则抛出异常)。splitCountRepartition的计算逻辑在下文有讲解。

3)RelNode的SplitCount拆分个数计算

首先判断此RelNode的是否为过渡阶段Phase,如果是过渡阶段Phase,则使用splitCountRepartition方法访问元数据统计信息计算拆分数(此方法在下面有介绍)。

其次,如果不是过渡阶段Phase,则遍历此RelNode的所有输入RelNode,通过RelMetadataQuery对象获取元数据统计信息splitCount并进行累加。

总SplitCount = splitCount1 + splitCount2 + splitCount3...

根据RelMetadataQuery对象获取指定RelNode的统计信息。记录数RowCount、平均记录大小等统计信息。

计算逻辑如下:

其中maxSplitSize是HiveRelMDParallelism的属性生成对象时需初始化的每个split大小的最大值。

总结

最新文章
朋友圈怎么录屏
在社交媒体日益丰富的今天,录屏功能成为了记录精彩瞬间、分享生活点滴的重要工具。许多用户希望在微信朋友圈中录屏,以便保存或分享有趣的视频内容。本文将详细介绍如何在手机及电脑上进行微信朋友圈的录屏操作。**一、安卓手机录屏步骤**
百度极速版 v5.2.0.10
百度极速版是一款拥有大量新闻信息的app,并且不同类型的信息在这里都能够了解到,同时资讯信息更新的速度快,下载安装百度极速版随时可以掌控,线上还有不少的任务等着用户来完成,优质的小说免费畅读一整天,赶紧来下载吧!百度极速版,流
伍华聪全套框架源码伍华聪WHC.net开发框架权限管理系统MVC
交易流程发货方式1、自动:在上方保障服务中标有自动发货的商品,拍下后,将会自动收到来自卖家的商品获取(下载)链接;2、手动:未标有自动发货的的商品,拍下后,卖家会收到邮件、短信提醒,也可通过QQ或订单中的电话联系对方。交易周期
超越技术限制:AI招聘面临的挑战与解决方案
1. 数据多样性与公平性 企业在构建 AI 职位匹配系统时,应确保训练数据的多样性。引入不同群体的历史数据,以减少潜在的偏见。例如,可以更有意识地收集不同性别、种族、年龄等的招聘数据。并且,企业应定期评估 AI 的表现,确保其不会偏向
用AI生成超逼真美女写真,你绝对不可错过的工具和技巧!
接下来,我们来看看如何使用搜狐简单AI工具生成美女写真。操作步骤如下:访问官网:首先,通过手机或电脑访问搜狐简单AI的官网,注册一个免费的帐户。这个过程非常迅速,通常只需几分钟。选择模板:登录后,你会看到多种可供选择的模板,浏
百度地图怎么加入
新店铺怎样在百度地图上把自己的门店名称,地址,成功添加进去呢? 我看好多门店,在地图上都有标记,地图标注找我们,准,速度快,覆盖全,省时省力解决地图烦恼。D一步:S先,我们手机上要安装好新版本的百度地图手机版,打开百度地图,
乱斗西游2赤虎鲨阵容攻略:策略搭配与实战运用指南
《乱斗西游2》中,赤虎鲨以其强势的战斗力成为了许多玩家追捧的英雄。要组成强大的赤虎鲨阵容,不仅需要选择合适的英雄搭配,还需要掌握战术策略和实战运用技巧。本文将为你带来一份赤虎鲨阵容的攻略,从策略搭配到实战运用,全面解析这一
比微软系统自带软件卸载功能还要好用的工具
适用于:微软Windows操作系统自带的软件,平时完全使用不上,想卸载但是找不到入口工具:1.系统控制面板卸载方法;2.优化大师软件卸载 方法一:Windows自带的控制面板卸载 以Windows10为例子做演示1.点击开始,再点击“运行”,输入“控
贵州国际名牌大学排名前十 中国各大名牌大学的具体情况
国际学校信息网小编给大家带来了贵州国际名牌大学排名前十 中国各大名牌大学的具体情况相关文章,一起来看一下吧。1、中国排名前十名的名牌大学2、大学热搜榜排名3、中国各大名牌大学的具体情况 1、清华大学清华大学(TsinghuaUniversity)
说说美国的量子计算芯片Willow,美国给中国创造了神话
好几个粉丝留言让W君聊聊美国最新的量子计算芯片Willow,这有点太看得起W君了。我们就是一个做军事情报分析的分析狗,聊这个东西似乎就有点跨界了。但是,W君还是可以从按照军事情报分析的框架来给大家聊聊,为了避免下作的蹭流量,咱们就
相关文章
推荐文章
发表评论
0评