大数据模块如何查询优化器体系架构

在查询执行期间,可以通过多种方式将数据分布到段,包括散列分布,其中元组根据某种哈希函数分布到段,复制分布,其中表的完整副本存储在每个段和单例分布,其中整个分布式表从多个段收集到单个主机(通常是主节点)。

二、SQL on Hadoop 架构

在Hadoop上处理分析查询正变得越来越流行。最初,查询表示为MapReduce工作和Hadoop的吸引力在于其可扩展性和容错能力。编码,手动优化和维护MapReduce中的复杂查询非常困难,因此像类似SQL的声明性语言是在Hadoop之上开发的。 HiveQL查询被编译到MapReduce作业中,并由Hadoop执行。 HiveQL加快了复杂查询的编码速度,但同时也很明显地表明,Hadoop生态系统,因为已编译的MapReduce作业显示了较差的性能。

Pivotal通过引入HAWQ 来应对挑战,它是一种在HDFS之上的大规模并行SQL兼容引擎。 HAWQ以Orca为核心来设计有效的查询计划,从而最大程度地降低访问Hadoop集群中数据的成本。 HAWQ的体系结构将创新的基于成本的最先进的优化器与Hadoop的可伸缩性和容错能力相结合,以实现PB级数据的交互式处理。

最近,包括Cloudera的Impala和Facebook的Presto在内的许多其他努力引入了新的优化器,以在Hadoop上应用SQL处理。当前,这些工作仅支持SQL标准功能的一部分,并且其优化仅限于基于规则的。相比之下,HAWQ具有完全符合标准的SQL接口和基于成本的优化器,这两者都是Hadoop查询引擎中前所未有的功能。

将优化器与数据库系统分离,需要建立一种通信机制来处理查询。 Orca包括一个用于在优化器和数据库系统之间交换信息的框架,称为数据交换语言(DXL)。 该框架使用基于XML的语言对通信所需的信息进行编码,例如输入查询,输出计划和元数据。 覆盖在DXL上的是一种简单的通信协议,用于发送初始查询结构并检索优化的计划。 DXL的主要优点是将Orca包装为独立产品。

Orca的输入是DXL查询,Orca的输出是DXL计划。在优化期间,可以查询数据库系统以获取元数据(例如,表定义)。 Orca通过允许数据库系统注册元数据提供程序(MD Provider)来抽象化元数据访问详细信息,该数据提供程序负责将元数据序列化为DXL,然后再发送给Orca。还可以从包含以DXL格式序列化的元数据对象的常规文件中使用元数据。

数据库系统需要包括使用/发送DXL格式数据的转换器。 Query2DXL转换器将查询分析树转换为DXL查询,而DXL2Plan转换器将DXL计划转换为可执行计划。此类转换器的实现完全在Orca之外完成,这允许多个系统通过提供适当的转换器来使用Orca。 Orca的体系结构具有高度的可扩展性。所有组件均可单独更换并单独配置。

2. Orca的不同组件包

(1) Memo

由优化器生成的计划替代方案的空间被编码在称为Memo 的紧凑型内存数据结构中。 Memo结构由一组称为组的容器组成,其中每个组包含逻辑上等效的表达式。 Memo组捕获查询的不同子目标(例如,表上的过滤器或两个表的联接)。 称为组表达式的组成员以不同的逻辑方式(例如,不同的连接顺序)实现组目标。 每个组表达式都是一个运算符,具有其他组作为其子级。 Memo的这种递归结构允许对可能的计划的巨大空间进行紧凑的编码。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章