暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SG | DCM研修系列——卷土重来的信创MPP

落风潭 2024-11-28
134
最近,潭主闭关学习,顺路研修了一下信创的达梦数据库。
学得多,忘得也快。
只好写点儿笔记巩固一下自己的信创学习成果
本期,先来聊聊DM8的MPP系统架构。
卷土重来的信创MPP
学习信创,总会让人有种时光倒流的感觉。
很多东西,看似是从前的,却又是创新的。
过往的实践机会有限,重新学习既是对知识的复盘,也是对技术发展历史的回顾。
这跟最近在学的风险管理中的衍生品隐含波动率有点儿类似。
既可以通过历史数据计算出隐含波动率,也可以从当前的可类比资产中推算出隐含波动率。
只是,过往更多是参考,面向未来的才是主流。
当下的信创,便是如此。
什么是MPP集群
MPP(Massively Parallel Processing),大规模并行处理系统。
潭主最早接触的MPP是基于PG的Greenplum,对应上图的第三种,完全无共享体系机构。
而DM8的MPP则属于最后一类,更高阶的完全对等无共享体系
MPP主要定位于OLAP场景,用于满足对海量结构化数据汇集、存储与分析的需求,属于高端数据仓库解决方案。
MPP架构解决了SMP架构的扩展性问题,像DM MPP就可扩展至最多1024个节点。

DM MPP的术语
EP,即执行节点(好奇,为啥不叫EN)。
DM MPP采用完全对等无共享架构,系统中每个EP节点的角色是一样的,用户可连接其中任何一个执行操作。
不过,对每个用户会话来说,EP有主从之分。
用户会话实际连接的那个EP对该用户会话来说称为主EP,其余的EP都称为从EP。
MPP架构同样得益于DM的MAL系统,通过TCP协议实现数据库实例间的高速通信。
DM8的MPP部署套路
DM MPP架构部署主要依托以下三个配置文件:
  • dm.ini
  • dmmal.ini

  • dmmpp.ini

配置dm.ini
    INSTANCE_NAME = EP01 
    PORT_NUM = 5236
    MAL_INI = 1
    MPP_INI = 1(启用MPP

    配置dmmal.ini

      [MAL_EP01] 
      MAL_INST_NAME = EP01
      MAL_HOST = 192.168.18.1
      MAL_PORT = 5347
      MAL_INST_HOST = 10.129.18.1
      MAL_INST_PORT = 5236
      [MAL_EP02]
      MAL_INST_NAME = EP02
      MAL_HOST = 192.168.18.2
      MAL_PORT = 5347
      MAL_INST_HOST = 10.129.18.2
      MAL_INST_PORT = 5236

      配置dmmpp.ini

        [SVC_EP01] 
        MPP_SEQ_NO = 0MPP的节点编号)
        MPP_INST_NAME = EP01
        [SVC_EP02]
        MPP_SEQ_NO = 1
        MPP_INST_NAME = EP02

        配置dmmpp.ctl

        dmmpp.ctl是一个二进制文件,不能直接编辑,要通过dmctlcvt工具将dmmpp.ini转成dmmpp.ctl。

        跟O记的spfile是有点类似,文本编辑需借助pfile。

          /> dmctlcvt TYPE=2 SRC=/dm8/data/EP01/dmmpp.ini DEST=/dm8/data/EP01/dmmpp.ctl
          // TYPE=2 文本转二进制,TYPE=1 逆向转换

          将生成的dmmpp.ctl同步到其他EP节点,保证所有节点的配置完全相同。

          注意:dmmpp.ctl需要与dm.ini在同一目录。

          配置完成后,就可以启动验证MPP了,因为DM MPP是对等架构,所以实例启动和停止顺序不分先后。

          不过,DM MPP的登录还有全局登录本地登录的区别。

            DM8> disql sysdba/PASSWORD@DMMPP
            //本地登录
            DM8> disql sysdba/PASSWORD@IP:PORT#{mpp_type=local} 

            此外,对于EP节点扩容,也可以通过手动自动的方式进行,步骤跟部署差不多,除了配置新增节点外,还要初始化实例,并创建表结构。

            MPP的数据分布
            DM MPP支持表数据的哈希分布随机分布复制分布范围分布LIST分布
            分布策略并不难理解,跟表分区的技术类似,潭主觉得比较特别的是随机分布。
            • 随机分布(RANDOMLY)

            随机分布表不存在分布列,数据插入时会根据随机算法均衡分布到各个节点。
            随机分布的优点是数据和节点间不存在映射关系。

            节点个数变动后,如果没有节点数据均衡的要求,可以不用对节点现有的数据进行变动。

            一般来说,随机分布对于复杂查询及存在较多的节点间数据分发情况,性能不如哈希分布高。

            • 复制分布(FULLY)


            每个节点都包含全量数据,潭主喜欢称之为Replicated Table。

            早年间的DB2 DPF没有该功能,但现在复制分布策略已经是分布式系统的标配,目的就是减少数据在不同节点间的移动,主要适用于小表,或数仓的维表。

            • 其他分布(HASH/RANGE/LIST)


            通过范围分布和LIST分布,可以决定将数据存储到MPP的哪个相应的EP节点上。

            DM MPP同样也支持表分区和数据分布,分布的类型和分区的类型可以混合搭配,比如建立哈希分布表的范围水平分区表。

            这其中,比较重要的是分布键的选择,既要考虑数据的均匀分布,又要考虑业务数据的查询方式。

            潭主当年的DB2 DPF用的HASH分布,就遇到了数据分布不均的情况。

            具体的数据分布类型和设置在建表时指定,语法参见《DM8_SQL语言使用手册》。

            DM MPP的高可用

            MPP架构是一个整体,单个EP节点发生故障时,会导致整个MPP系统处于服务不可用状态。

            当前所有的用户会话会被系统断开,不能进行全局登录,只能进行本地登录。

            为保证MPP系统的高可用性,厂商建议为MPP的每个EP搭建DM Watcher。

            Watcher备库用于数据容灾和备份,只是某个MPP节点(主库)的镜像,并不是MPP集群的一部分。

            此外,如图所示,为提升性价比,DM MPP主备系统可采用交叉守护的方式,每个EP和其对应的备库实例不在同一台主机上,将EP与别的EP的备库放在一台主机上。

            DM MPP的管理备忘
            • 部署与监控
            达梦的DEM工具可以通过Web页面对DM MPP进行部署(页面向导)和监控。
            注意:需要在各EP节点上部署DM数据库代理工具DMAgent
            • MPP相关过程与视图
            用法参见《DM8 系统管理员手册》。
            • 快速数据装载
            DM提供了命令行工具dmfldr,可对DM单机版和MPP进行海量数据的快速装载。

            dmfldr提供两种MPP数据加载模式:(MPP_CLIENT参数

            • 客户端分发模式:数据在dmfldr客户端进行分发,然后直接向指定EP发送数据
            • 本地分发模式:每个EP对应一个dmfldr和一份数据,每个dmfldr只选择出对应本节点的数据并发送,不管其他节点的数据

            默认使用客户端分发模式,用法参见《DM8_dmfldr 使用手册》。

            dmfldr跟GP的gpfdist命令类似,是MPP架构的标配工具。

            注意:DM MPP支持绝大多数单机版DM功能,但在某些功能点的使用上存在一些限制。

            信创,乱中取胜
            DM MPP看上去并不算太复杂,能用来对标的也不过是当年DB2 DPF和Greenplum的经验。
            潭主觉得,像OceanBase这样的原生分布式所讲的HTAP本身就跟用户的需求有冲突,而DM的MPP的OLAP的定位跟HTAP也有冲突。
            再想想,难道数据中台和数仓没冲突吗?于是,既要Hadoop,又要MPP。
            反正,混合云主打的就是一个混乱。
            也唯有信创,才有乱中取胜的本事。

            - END -


            感谢阅读。如果觉得写得还不错,就请点个赞或“在看”吧。


            • 公众号所有文章仅代表个人观点,与供职单位无关。


            文章转载自落风潭,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论