问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Impala - 高性能大数据查询引擎

发布网友 发布时间:2024-11-07 12:20

我来回答

1个回答

热心网友 时间:2024-11-07 13:08

Impala概述

Impala是一个开源高性能分布式SQL查询引擎,由Cloudera于2017年开源。它专为在Apache Hadoop集群中处理大规模数据集提供快速大数据查询和分析能力,与SQL兼容,适用于Hadoop生态系统。

Impala与Presto/Trino一样,是一个分布式并行处理(MPP)数据库引擎,作为Hadoop上的标准SQL查询引擎。

Doris与StarRocks基于Impala早期版本。

在Hadoop生态中的Impala位置

Impala的架构设计

在大数据领域,很多框架采用主从结构,如HDFS、Presto、YARN等,通过一个Master节点进行分布式控制、元数据管理及任务分发,而Slave节点只执行特定功能。然而,这样的架构存在Master节点单点问题及性能瓶颈。Presto的Master节点缺乏高可用方案,Master节点故障会导致集群完全不可用;在高并发和大量任务处理场景下,Presto的Master节点在解析阶段的耗时显著增加。

Impala采用去中心化架构,由StateStoreD、CatalogD和ImpalaD三个服务组成,没有主从概念,各司其职,相互配合。

StateStoreD负责状态同步,持续监控集群中所有ImpalaD的运行状况,并将其结果转发给每个ImpalaD。

StateStoreD在集群状态错误时提供帮助,对Impala集群运行不构成关键影响。如果StateStoreD停止运行,ImpalaD仍可继续运行,但如果其他ImpalaD脱机,集群的健壮性会受到影响。当StateStoreD重新上线时,它将重新建立与ImpalaD的通信并恢复监控功能。

StateStoreD只需在集群的某一个主机上运行。

CatalogD作为元数据访问网关,从Hive Metastore等外部Catalog获取元数据信息及统计信息,缓存在自己的catalog结构中。信息包括库表定义、列类型、统计信息(如表大小、行数、分区及各列信息),以及从NameNode获取的文件粒度信息(如文件存储位置、副本、文件块信息)。

ImpalaD请求CatalogD查询库表元数据信息。

ImpalaD执行DDL命令时通过CatalogD执行,更新由StateStoreD广播至集群其他ImpalaD。

同StateStoreD一样,一个集群只有一个CatalogD服务。

ImpalaD作为核心服务组件,分为三种运行模式:Coordinator、Executor和Executor And Coordinator(默认)。Coordinator模式下,ImpalaD仅作为查询协调者,负责解析SQL语句、生成执行计划、调度查询执行计划以及收集并返回查询结果。Executor负责具体的数据查询执行,包括数据扫描、聚合、排序等操作。Executor And Coordinator模式则包含两者功能。

生产环境一般建议ImpalaD做好角色分离,即要么是Executor,要么是Coordinator。

查询执行过程

在Impala中,查询处理的主要过程在ImpalaD中完成。ImpalaD可以进一步细分为Query Planner、Query Coordinator和Query Executor三个部分,其中Query Planner被称为FE端,主要用Java语言实现;Query Coordinator和Query Executor被称为BE端,由C++实现。

查询执行过程如下:

1、客户端(如JDBC、ODBC、Impala Shell)向Impala集群任意节点发送查询请求。

2、ImpalaD接收请求并通过JNI接口请求FE端。

3、FE端将查询解析生成抽象语法树(statementBase),加载元数据信息。

4、进行语义分析及权限校验(通过调用AnalysisContext.analyzeAndAuthorize方法),实际调用抽象语法树各StatementBase节点的analyze方法。

5、根据statementBase类型,进行不同处理,如DDL类型创建对应的catalog请求,普通query类型创建执行计划。

6、生成单节点执行计划(singleNodePlan),对plan进行小查询判断及优化,然后进行join重写,根据代价评估调整join类型及子节点顺序。

7、遍历单节点执行计划(singleNodePlan),生成PlanFragment,最终生成分布式执行计划,返回给Impala。

8、ImpalaD获得分布式执行计划,将查询状态设置为PENDING,创建线程执行查询请求。

9、提交查询并进行资源准入模块AdmissionControl判断,判断资源使用是否超限、是否满足条件、是否需要排队等待。

10、资源判断通过后,调用调度器scheler的Schele方法生成调度信息。

11、为查询创建Coordinator,执行Exec方法初始化fragment状态信息及BE端状态信息,然后分发任务。

12、在所有BE端并行启动查询执行,并阻塞直到启动完成。

13、所有BE端异步执行任务,如扫描、排序、聚合。

14、BE端执行完成后,查询结果在Coordinator中汇聚。

15、Coordinator将得到的查询结果传输给客户端。

Impala与Presto(Trino)对比

欢迎关注我的公众号“大数据小百科”,获取原创技术文章。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 分库分表的 21 条法则,hold 住! 如何别人不知情的情况下入侵局域网电脑,并可以查看下载到自己的电脑... 结肠癌预后如何 结肠癌的预后怎么样 结肠癌疾病预后 违章代码1019是什么意思 1019违章代码怎么处罚 网通100兆提了200请问下只想让手机用200兆的话还需要换电脑网卡吗_百度... 保险买多什么险种好 周杰书籍作品 丰都村属于哪里 厨房调味料有哪些 调料选购使用保存方法 猫猫洞村发展重点 房屋拆迁两个地基怎么补偿 农村地基拆迁的时候多少钱 拆迁房屋地基有补偿吗怎么补 房屋拆迁中地基怎么补偿 拆迁房屋地基要赔钱吗 拆迁房屋基础地基怎么赔偿 房屋拆迁地基要赔钱吗 拆迁房屋地基怎样赔偿的 施工单位做出工程变更预算后监理单位还需要在重新做一份预算吗 超频后显示器有波纹怎么办 古风其十(李白)拼音版、注音及读音 我招商银行卡丢了,但是我的卡是上海办的,我在深圳无法回上海,我把身... 大家找工作都去哪些招聘网站啊? 长虹M868tf的卡怎样入进手机 长虹悍马至尊版008怎样与电脑相连? 斗罗大陆中最后小三和小舞怎么了?详细点! 《斗罗大陆》中的小舞与唐三最后会结婚么?拜托各位大神 黄骅大学城四期楼房什么时候开盘 读MBA需要考哪几门科目 报考mba需要考什么? mba联考考什么 mba初试考哪些内容 r53600和r73700哪个更好? 问问繁体字怎么写的 洗衣机里洗了一包烟怎么洗干净 君马MEET3(美图3)5座成交价格最低是多少钱?君马MEET3(美图3)指导价 君马MEET3(美图3)2018款1.5T最低多少钱?君马MEET3(美图3)裸车价 十二生肖什么动物沒有奶子