学习DMMPP的搭建,搭建过程参考 DM8 数据守护与读写分离集群V4.0官方手册和大规模并行处理MPP手册进行搭建,手册是在Windows本地安装后,在安装路径下有一个doc目录,里面是关于DM数据库的一些帮助手册。这里主要讲讲mpp的实现原理,架构以及搭建过程中需要注意的地方和相应的配置文件等内容。
一、原理概述
        在 DM MPP 中,数据根据用户指定的分布规则分布在不同的 EP 上。MPP 的核心在于对用户请求的并行执行,其执行流程可简单描述如下:
       1.用户选择一个 EP 登录,此时该 EP 就是此用户的主 EP,集群中的其余 EP 都是此用户的从 EP;
       2.主 EP 接受用户的 SQL 请求,并生成并行执行计划;
       3.主 EP 将计划打包后分发给其他从 EP;
       4.各 EP 并行执行;
       5.主 EP 收集各 EP(包括自己)的执行结果;
       6.主 EP 将执行结果汇总后返回给用户。
达梦数据库学习之DMMPP
二、系统特性
       DM MPP 采用完全对等不共享架构,系统中各 EP 的功能完全对等,因此对于用户来说,MPP 系统的处理是完全透明的,用户任意登录 MPP 系统的的任一节点进行操作都可获得完全的 MPP 支持。
       使用 DM MPP 可获得以下功能特性支持:
       1.TB/PB 级数据分析 支持数据的并行装载和操作的并行执行,数据分布式存储在各 EP 中,能支持 TB/PB 级数据分析
       2.支持绝大部分单机功能 支持绝大部分的 DM 单机版功能,同时支持行、列存储,支持存储过程、触发器、索引、分区表、多媒体数据类型等
       3.高性价比 无需额外配置特殊软、硬件,性价比超高
       4.高可靠性 DM MPP 与 DM 数据守护相结合,为 MPP 系统中的每个EP 配置一个或多个实时备库,在 EP 发生故障时其对应备库能迅速切换为主库继续提供服务,确保系统的高可用性
       5.支持超大型集群 支持最多 1024 个 EP,轻松组建超大型集群
三、系统架构
       DM MPP 采用完全对等不共享架构,继承了完全不共享架构的优点,且各节点完全对等,不需要专用硬件,不存在主控节点,消除了潜在瓶颈以及单节点故障问题。
达梦数据库学习之DMMPP
       DM MPP 中的每一个 DM 数据库服务器实例作为一个执行节点,简称 EP。客户端可连接任意一个 EP 节点进行操作,所有 EP 对客户来说都是对等的。DM MPP 系统内每个 EP 只负责自身部分数据的读写,执行计划在所有 EP 并行执行,能充分利用各 EP 的计算能力及发挥各 EP 独立存储的优势。数据只在必要时通过 DM 的高速邮件 MAL 系统在 EP 间传递。当通信代价占整体执行代价的比例较小时,更能体现大规模并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显。
四、相应SQL语句的处理流程
        1.DDL 语句分发
       DM MPP 对 DDL 语句的处理采用语句分发方式。主 EP 直接将 DDL 语句发送给各从 EP,每个从 EP 各自执行该 DDL语句。主 EP 等待所有的从 EP 执行完成后才返回消息给用户,只要其中有任一个 EP 执行失败,则已经执行的所有 EP 都会进行回滚,保证数据的一致性,并返回错误信息给客户端。由于 DDL 语句分发,使得在 MPP 中登录任一 EP 执行的 DDL 操作都是全局的,包括数据库对象的建立、修改和删除等,也包括用户的建立、修改与删除。
       2. 查询语句处理流程
       1).建立连接
       用户连接到 MPP 系统内任意一个 EP 节点,则该 EP 为连接的主 EP,其余节点为从 EP;
       2).生成执行计划
       主 EP 解析查询语句,生成普通的查询计划后,根据数据分布情况在合适的位置插入合适的并行通讯操作符,生成最终的并行查询计划;
       3).分发计划
       主 EP 把执行计划分发给所有的从 EP;
       4).执行计划
       各从 EP 收到计划后,生成执行计划的运行环境,所有 EP 并行执行,执行时各 EP通过通讯操作符分发必要的数据并协调执行进度;
       5).生成结果集
       主 EP 收集所有 EP 的查询结果(包括自身数据),生成结果集;
       6).返回结果集
       主 EP 将结果集返回给用户。
       3.插入/修改/删除语句处理流程
       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 都会回滚,保证数据的一致性,并返回错误信息给客户端。
五、相应配置文件
       dm.ini配置文件
       INSTANCE_NAME 数据库实例名(长度不超过 16 个字符)
       PORT_NUM DM 服务器监听通讯端口号,服务器配置此参数,有效 值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配
       MAL_INI MAL 系统配置开关,0 表示不启用 MAL 系统,1 表示启用 MAL 系统,默认值为 0
       MPP_INI MPP 系统配置开关,0 表示不启用 MPP 系统,1 表示启用 MPP 系统,默认值为 0
       MAX_EP_SITES MPP 环境下 EP 节点的最大数量,有效值范围(2~1024),默认值为64
       MPP_HASH_LR_RATE MPP 下,对 HASH JOIN 节点,可以根据左右儿子 CARD 代价的比值,调整 HASH_JOIN 的左右儿子的 MOTION 添加,从而影响计划。如果CARD 比值超过此值,则小数据量的一方全部收集到主 EP 来做。取值范围(1~4294967294),默认值为 10
       MPP_OP_JUMP MPP 系统中操作符的跳转开关,是否支持通讯操作符的跳转功能。1:支持;0:不支持。取值范围:0、1,默认值为 1
       PHF_NTTS_OPT MPP系统中是否进行NTTS计划的优化,打开时可能减少计划中的NTTS操作符。1:支持;0:不支持。取值范围:0、1,默认值为 1
       BLANK_PAD_MODE 设置字符串比较时,结尾空格填充模式是否兼容 ORACLE,0:不兼容;1:兼容。默认为 0
       LENGTH_IN_CHAR VARCHAR 类型对象的长度是否以字符为单位,0:否,以字节为单位;1:是,以字符为单位。默认值为 0
       USE_NEW_HASH 字符类型在计算 HASH 值时所采用的 HASH 算法类别,0:原始 HASH算法;1:改进的 HASH 算法。默认值为 1
       COMPRESS_MODE 建表时是否缺省压缩。0:不进行;1:进行。默认值为 0
       PARALLEL_POLICY 用来设置并行策略。取值范围:0、1 和 2,缺省为 0。其中,0 表示不支持并行;1 表示自动并行模式;2 表示手动并行模式。默认值为 0
       LIST_TABLE 默认情况下,创建的表是否为堆表,0:否;1:是。默认值为 0
       COMPATIBLE_MODE 是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:兼容 ORACLE,3:兼容 MS SQL SERVER,4:兼容 MYSQL,5:兼容DM6,6:兼容 Teradata。默认值为 0
       COUNT_64BIT COUNT 集函数的值是否设置为 BIGINT。0:否;1:是。默认值为 1
       ALTER_TABLE_OPT 是否对加列、修改列、删除列操作进行优化,0:全部不优化;1:全部优化;2:打开快速加列,对于删除列和修改列与 1 等效。默认值为0
达梦数据库学习之DMMPP
       2.dmmal.ini 配置文件
       MAL_CHECK_INTERVAL:MAL 链路检测时间间隔,取值范围(0s-1800s),默认 30s,配置为 0 表示不进行 MAL 链路检测。为了防止误判,DMRAC 集群中,建议将配置值>= DCR_GRP_NETCHK_TIME。
       MAL_CONN_FAIL_INTERVAL 判定 MAL 链路断开的时间,取值范围(2s-1800s),默认 10s
       MAL_LEAK_CHECK 是否打开 MAL 内存泄露检查,0:关闭,1:打开,默认 0
       MAL_LOGIN_TIMEOUT:MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800),以秒为单位,默认 15s
       MAL_BUF_SIZE:单个 MAL 缓存大小限制,以兆为单位。当此 MAL 的缓存邮件超过此大小,则会将邮件存储到文件中。有效值范围(0~500000),默认为 100
       MAL_SYS_BUF_SIZE:MAL 系统总内存大小限制,单位:M。有效值范围(0~500000),默认为 0,表示 MAL 系统无总内存限制
       MAL_VPOOL_SIZE:MAL 系统使用的内存初始化大小,以兆为单位。有效值范围( 1~500000 ), 默 认 为 128 , 此 值 一 般 要 设 置 的 比MAL_BUF_SIZE 大一些
       MAL_COMPRESS_LEVEL:MAL 消息压缩等级,取值范围(0-10)。默认为 0,不进行压缩;1–9 表示采用 zip 算法,从 1 到 9 表示压缩速度依次递减,压缩率依次递增;10 表示采用 snappy 算法,压缩速度高于 zip算法,压缩率相对低
       MAL_TEMP_PATH:指定临时文件的目录。当邮件使用的内存超过 mal_buf_size或者 mal_sys_buf_size 时,将新产生的邮件保存到临时文件中。如果缺省,则新产生的邮件保存到 temp.dbf 文件中
       [MAL_NAME] :MAL 名称,同一个配置文件中 MAL 名称需保持唯一性
       MAL_INST_NAME 数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一MAL_HOST MAL IP 地址,使用 MAL_HOST +MAL_PORT 创建 MAL 链路
       MAL_PORT :MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配
       MAL_INST_HOST MAL_INST_NAME 实例对外服务 IP 地址
       MAL_INST_PORT MAL_INST_NAME 实例服务器监听通讯端口号,服务器配置此参数 , 有 效 值 范围 ( 1024~65534 ), 发 起 连 接 端的 端 口在1024-65535 之间随机分配此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
       MAL_DW_PORT MAL_INST_NAME 实例守护进程的监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建与该实例守护进程的 TCP 连接,监听端配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配
       MAL_LINK_MAGIC MAL 链路网段标识,有效值范围(0-65535),默认 0。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不一样
达梦数据库学习之DMMPP
       3. dmmpp.ctl
       dmmpp.ctl 是 DM MPP 系统的控制文件,它是一个二进制文件,用户不能直接进行配置。用户需要首先配置 dmmpp.ini,然后利用 dmctlcvt 工具进行转换得到生成的dmmpp.ctl 文件。MPP 系统中的每个 EP 都必须使用相同的 dmmpp.ctl 文件,进行文件拷贝即可。
       [SERVICE_NAME] 标识 MPP 系统中每个 EP 实例的选项名
       MPP_SEQ_NO 实例在 mpp 系统内的序号,取值范围为 0~1023
       MPP_INST_NAME 实例名

达梦数据库学习之DMMPP
六、搭建过程(两节点MPP)
       1.在两台机器上进行安装数据库并初始化实例。正常启停一次数据库服务。
       2.将配置文件写好,dmmpp.ctl文件转换完成。
       3.启动数据库服务。
       4.通过disql工具进行登录验证。
七、注意事项
       配置文件不要写错了,相应的节点ip,端口等对应。

相关文章:

  • 2022-12-23
  • 2021-09-20
  • 2021-09-17
  • 2021-03-31
  • 2021-07-26
  • 2021-04-25
  • 2021-05-05
猜你喜欢
  • 2021-06-19
  • 2021-11-16
  • 2021-11-29
  • 2021-12-02
  • 2021-06-13
  • 2021-05-31
  • 2021-12-10
相关资源
相似解决方案