基于Linux下达梦DMMPP集群技术原理的学习(组图)

在上一篇博客中,我们对大盟数据库的大盟DMDSC共享存储数据库集群进行了动手部署实践。本篇技术分享文章基于对Linux DMMPP集群技术原理的学习。

1、DM MPP 集群介绍

DM Massively Parallel Processing (DM MPP) 是基于大盟数据库管理系统开发的完全对等的无共享集群组件,支持将多个 DM 数据库实例组织成一个并行计算网络,提供对外提供统一的数据库服务。

在海量数据分析的应用场景中,经常会遇到以下问题:

为支持上述海量数据存储与处理、高性价比的需求,提供高端数据仓库解决方案,大盟数据库提供大规模并行处理MPP架构,为客户提供行业领先的以非常低的成本解决方案。计算性能。

2、DM MPP集群概念及技术原理

2.1 基本概念

2.1.1个执行节点EP

DM MPP系统中每个运行的DM数据库服务器实例称为一个执行节点EP,除了基于数据保护的MPP环境中的备用数据库。

2.1.2 主从 EP

DM MPP 采用完全点对点的无共享架构。对整个系统来说,每个EP的功能都是一样的,用户可以连接其中任意一个进行操作。对于每个用户会话,EP 都有主从区别。用户会话实际连接的 EP 称为用户会话的主 EP,其他 EP 称为从 EP。

2.1.3 数据分布

DM MPP系统中的数据分布在各个EP中,支持散列分布、随机分布、复制分布、范围分布、LIST分布类型的表数据。用户可以根据应用类型的实际情况选择合适的表数据分布。

哈希分布

散列分布根据表定义中指定的一列或多列对行数据计算一个散列值,然后根据散列值和散列映射表将行数据分发到映射的节点。

当表的join查询中使用的join key为hash分布列时,MPP下的查询计划会进行优化,比如减少计划中通信算子的数量,使用索引,优化分组计划,等。数据分布在节点之间,以提高查询效率。

使用hash分布时,节点间数据是否均衡,取决于设置的hash分布列和表中的数据。当节点数量发生变化时,每个节点的数据都需要根据新的hash map重新分配。

随机分布

随机分布表中没有分布列。插入表数据时,数据会按照一定的随机算法随机均匀分布到各个节点。

随机分布的好处是数据和节点之间没有映射关系。节点数量改变后,如果没有节点数据平衡的要求,则无需改变节点现有数据。

一般来说,对于复杂的查询和节点间的数据分布,随机分布的性能不如哈希分布。

复制分布

每个节点上的复制分布表的本地数据是一个完整的副本。查询表的数据时,可以在任意节点上独立完成,无需从其他节点获取数据。

复制分布一般用于数据量较小的表。

范围分布

范围分布根据表定义中指定的一个或多个列的列值范围分布项,确定MPP的哪个对应EP上存储一行数据。

LIST 分布

LIST分布通过为表中的一个或多个列指定一组离散值来确定MPP的哪个对应的EP上存储一行数据。当表中的列值可枚举时使用此分布。

建议

DM MPP同时支持数据分布和分区表,实现“数据分布后分区”。数据分发到各个节点后,在单个节点上对数据进行重新分区,可以进一步提高查询性能。分布类型和分区类型可以混合搭配,比如为散列分布表创建范围级别的分区表。

2.1.4 MAL 系统

MAL 系统是 DM 数据库实例之间的高速通信系统。它是一种基于 TCP 协议的内部通信机制。它可靠、灵活、高效。 DM通过MAL系统实现实例间的消息通信。

2.1.5 全局和本地连接

MPP系统中的数据分布在每个EP中。用户只需登录某个EP,系统自动建立该EP与其他EP的连接。因此,用户建立的实际上是与整个 MPP 系统的全局连接。数据库的操作是通过全局连接到 MPP 系统中的所有 EP 来进行的。使用全局连接时,需要MPP系统中的所有EP正常提供服务,否则无法建立连接。

DM MPP 还提供本地连接。使用本地连接时,用户登录某个EP后,该EP不再与其他EP建立连接,用户的所有数据库操作都只在该EP上进行。比如SELECT语句中的WHERE条件中的子查询,UPDATE和DELETE语句只查询本地EP的数据,而INSERT语句如果插入的数据应该按照分配到其他EP中会报错分布定义。

通常在MPP系统正常运行时使用全局连接。本地连接用于DM MPP的快速加载和动态扩展。用户还可以在某些时候使用本地连接,例如当 MPP 系统出现 EP 故障时。

DM 的每个接口驱动都提供了连接属性,用于设置全局连接(登录)或本地连接(登录)。默认为全局连接。 DM交互工具DIsql还提供了登录参数MPP_TYPE来指定使用全局连接还是本地连接。 “GLOBAL”表示全局连接,“LOCAL”表示本地连接,默认为全局连接。

2.2个MPP并行执行计划

在DM数据库中,经过一系列的处理,SQL语句最终生成了一个由不同算子组成的计划树。 DM执行器按照自下而上的顺序执行计划树,数据也是自下而上的顺序。它在计划树中流动,被各个算子处理,最后在计划树的根节点产生执行结果。

在 DM MPP 环境中,每个 EP 执行一个并行计划。并行计划是根据单个节点的执行计划,按照一定的规则在适当的位置插入MPP通信算子生成的。

2.2.1 并行计划相关算子

MPP并行执行计划是在单节点执行计划中加入MPP通信算子生成的。 DM MPP相关的通信运营商有5家linux达梦数据库运维命令,分别是:

2.2.2 并行计划生成

在DM数据库中,执行计划树时,数据总是从底部流向顶部。如果是在MPP环境下,由于每个EP只保存了表的部分数据(复制分布除外),所以计划树子节点的数据是不完整的,所以叶子节点只传输本 EP 部分的数据向上。为了获得完整正确的执行结果,此时上层节点必须知道下层节点发送的数据是否完整,从而决定是否添加MPP通信算子,根据功能决定添加哪个以及单节点算子的数据分布。通讯运营商。单节点执行计划算子的介绍可以在DM8系统管理员手册的附录中找到。

2.2.3 数据分布与并行执行计划

在MPP环境中,创建表时指定的数据分布类型决定了表数据的分布。 DM MPP支持的表分布类型包括散列分布、随机分布、范围分布、复制分布和LIST分布。在插入或加载数据时,系统会根据表的分布类型自动将数据发送到对应的EP。

hash分布、范围分布和LIST分布的共同特点是,用户在建表时指定一列或多列作为分布列,系统会为每条插入的数据计算这些对应列的值行,并确定数据属于 EP。随机分布和重复分布不需要指定分布列。

并行执行计划与数据分布密切相关,数据分布可以决定产生的并行计划。比如预判后发现要查询的数据在同一个EP上,服务器会做一定的优化。在最佳情况下,整个计划甚至不包含任何通信运营商。优化的原则是尽量减少节点之间的通信交互。

因此,用户应根据应用中查询的实际需求确定表的分布类型,进而得到最优的并行执行计划。

场景一

在应用中,查询语句包含大量的join查询,表数据分布均匀,应用对查询效率要求高。此时我们可以使用hash分布,将常用的connection列作为hash分布列,可以尽可能减少EP之间的数据传输,占用更少的网络带宽,降低网络延迟,充分发挥多节点并行执行的巨大优势。 .

场景二

在一个应用程序中,大部分查询都是单表查询,很少有join查询。我们可以使用随机分布。随机分布使海量数据均匀分布,充分体现了MPP的并行优势。

场景 3

对于单表查询或者join查询中出现数据量少的表,可以使用复制分布。复制的分布式表在每个EP上都有完整的数据副本,减少了生成并行执行计划时对应的通信算子的使用,进一步优化了并行计划。

2.2.4 并行计划执行流程

DM MPP对查询语句和insert/delete/modify语句的处理方式不同,因为insert/delete/modify语句涉及数据修改,必须在数据行所在的EP中进行修改,而查询语句只需要主EP可以收集查询结果。

2.2.4.1 查询语句处理流程

DM MPP 处理查询语句如下:

1、建立连接:用户连接到MPP系统中的任意一个EP节点,则该EP为该连接的主EP,其他节点为从EP;

2、生成执行计划:主EP解析查询语句,生成通用查询计划,根据数据分布在合适的位置插入合适的并行通信算子,生成最终的并行查询计划;

p>

3、分配计划:主EP将执行计划分配给所有从EP;

4、执行计划:每次收到EP的计划后,都会生成执行计划的执行环境,所有的EP都会并行执行。在执行过程中linux达梦数据库运维命令,每个 EP 都会通过通信算子分发必要的数据,协调执行进度;

p>

5、生成结果集:主EP收集所有EP的查询结果(包括自己的数据),生成结果集;

6、返回结果集:主EP将结果集返回给用户。

2.2.4.2 插入/修改/删除语句处理流程

DM MPP 处理插入/修改/删除语句如下:

1、建立连接:用户连接到MPP系统中的任意一个EP节点,则该EP为该连接的主EP,其他节点为从EP;

2、生成执行计划:主EP解析语句,生成执行计划。其中包含的查询计划(即WHERE条件对应的计划)也是并行查询计划。此外,在从 EP 上生成相应的查询计划。已执行的计划 (MPLN);

3、准备数据:当主EP开始执行计划时,首先将查询计划部分发布给所有从EP,并行执行查询,主EP收集查询结果;

4、定位节点:数据准备完成后,根据分布列和分布方式计算出需要修改的行数据所在的目标EP,并发送MPLN和需要的数据对每个相应的 EP 进行操作。如果目标EP是本地的,则不发送,直接在本地完成操作;

5、执行修改操作:从EP收到MPLN计划和数据后,生成执行环境,执行实际的修改操作;

6、返回执行结果:主EP等待所有从EP执行完成,再将执行结果返回给客户端。只要任何一个 EP 执行失败,所有已经执行的 EP 都会被回滚。保证数据一致性,并向客户端返回错误信息。

2.2.5 DDL 语句分布

与并行计划执行过程中描述的DML语句并行执行计划处理过程不同,DM MPP使用语句分布的方式来处理DDL语句。主 EP 直接将 DDL 语句发送给每个从 EP,每个从 EP 单独执行 DDL 语句。主 EP 等待所有从 EP 完成执行,然后再向用户返回消息。只要有任何一个EP执行失败,所有已经执行的EP都会回滚,以保证数据一致性并向客户端返回错误信息。

由于 DDL 语句的分布,任何登录 MPP 的 EP 执行的 DDL 操作都是全局性的,包括数据库对象的创建、修改和删除,以及用户的创建、修改和删除。

2.3 DMMPP 高可用性

为了提高MPP系统的可靠性,克服单个节点故障导致整个系统无法继续正常工作的问题,DM在普通的基础上引入了数据守护主备机制MPP系统,并为每个MPP节点配置实时备份。数据库作为备份节点,必要时可以将备份数据库切换到主库代替故障节点工作,提高系统的可靠性和可用性。我们建议用户在使用 DM MPP 时应使用 MPP 主备守护系统,以确保系统可靠性。

MPP主备的主要目的是为DM MPP集群提供数据可靠性保障。备份数据库仅用于数据容灾备份。 MPP 备份数据库不是 MPP 集群的一部分,而只是某个 MPP 节点(主数据库)。镜子。 MPP备库不参与MPP操作,与其他MPP备库没有关系。 MPP备库只能在单节点模式下提供只读服务,不提供全局MPP只读服务。

为了提高系统可靠性和节省硬件资源,DM MPP主备系统可以采用交叉防护的方式,即每个EP及其对应的备用数据库实例不在同一台主机上,EP和其他 EP 的备用数据库实例不在同一台主机上。库放置在主机上。

图DM MPP主备系统架构

3、制定合适的 DM MPP 计划

通过学习MPP技术原理,相信同学们一定对MPP有一定的了解。那么,如何在实践中制定合适的 MPP 架构呢?对于一个应用系统,制定合适的DM MPP方案可以从以下几个方面入手:

3.1 应用是否适合使用DM MPP方案

DM MPP方案具有高性价比、高可靠性、功能强大、动态扩容等优点,但也有其局限性,不是万能的。 DM MPP主要是针对海量数据的OLAP应用开发的。在合理规划的前提下,同样适用于一般OLTP或并发量较小的混合类型应用,但不适用于OLTP类型的高并发操作。

3.2需要使用大规模的DM MPP方案

确定应用适合使用DM MPP方案后,下一步就是根据应用规模确定MPP节点的数量。 DM MPP最多支持1024个EP节点,在实际应用中具体使用几个EP节点要根据应用数据规模、硬件规划、网络带宽和项目预算来确定。理论上,节点越多越好,这样并行度更充足,效率更高。但这不是绝对的。解决方案设计者还应考虑 EP 节点之间的网络资源。如果网络是瓶颈,并不是节点越多越好。

3.3 需要配置什么样的硬件资源

DM MPP采用完全点对点非共享架构,不需要特殊硬件,可以使用普通PC服务器组成集群。需要注意的是,DMMPP系统需要通过网络在EP之间传输数据。因此,网络带宽对于MPP系统的效率非常重要。建议配置千兆或 10 千兆内部网络。用户应考虑实际需求、配置成本和实际情况。和其他综合评估决定。

3.4如何设计申请表

DM MPP系统中的数据分布在各个EP中,支持散列分布、随机分布、复制分布、范围分布、LIST分布类型的表数据。用户应根据应用中表格的特点,选择合适的分布类型。 .

除了表的分布类型,管理员还要根据应用的实际情况确定表的分布列、分布列的数据类型、是否需要组合分布列视为分布列。

4、本文摘要

本文主要介绍大萌大规模并行处理MPP集群的技术原理,从集群技术的基本概念,到结合实际数据表应用场景介绍MPP执行计划和高可用方案,最后通过实际分析,从4大方向介绍了如何在实际工作中制定合适的MPP架构方案。

以上为本次技术分享的相关内容。欢迎朋友留言交流指导。

DM武汉大梦数据库有限公司24小时免费服务热线:400 991 6599

大盟科技社区:

© 版权声明
THE END
喜欢就支持一下吧
点赞128赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容