MPP集群部署测试
1、MPP简介
DM MPP 中的每一个DM数据库服务器实例作为一个执行节点,简称EP。客户端可连接任意一个 EP 节点进行操作,所有 EP 对客户来说都是对等的。
DM MPP 系统内每个EP只负责自身部分数据的读写,执行计划在所有EP并行执行,能充分利用各EP的计算能力及发挥各EP独立存储的优势。数据只在必要时通过DM的高速邮件MAL系统在EP间传递。当通信代价占整体执行代价的比例较小时,更能体现大规模并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显。
1)原理概述
在DM MPP中,数据根据用户指定的分布规则分布在不同的EP上。MP的核心在于对用户请求的并行执行,其执行流程可简单描述如下:
(1)用户选择一个EP登录,此时该EP就是此用户的主 EP,集群中的其余EP都是此用户的从 EP;
(2)主EP接受用户的SQL请求,并生成并行执行计划;
(3)主EP将计划打包后分发给其他从EP;
(4)各EP并行执行;
(5)主EP收集各EP(包括自己)的执行结果;
(6)主EP将执行结果汇总后返回给用户。
2)系统特性
DM MPP采用完全对等不共享架构,系统中各EP的功能完全对等,因此对于用户来说,MPP系统的处理是完全透明的,用户任意登录MPP系统的的任一节点进行操作都可获得完全的 MPP支持。MPP系统具有以下特性:
(1)TB/PB 级数据分析
支持数据的并行装载和操作的并行执行,数据分布式存储在各EP中,能支持TB/PB级数据分析
(2)支持绝大部分单机功能
支持绝大部分的DM单机版功能,同时支持行、列存储,支持存储过程、触发器、索引、分区表、多媒体数据类型等
(3)高性价比
无需额外配置特殊软、硬件,性价比超高
(4)高可靠性
DM MPP与DM数据守护相结合,为MPP系统中的每个EP配置一个或多个实时备库,在EP发生故障时其对应备库能迅速切换为主库继续提供服务,确保系统的高可用性
(5)支持超大型集群
支持最多1024个EP,轻松组建超大型集群
2、基本概念
1)执行节点EP
DM MPP系统中每一个运行的DM数据库服务器实例称为一个执行节点EP,基于数据守护的MPP环境内的备库除外。
2)主从EP
DM MPP采用完全对等无共享架构,对整个系统来说,每个EP作用都是一样的,用户可以连接到其中的任何一个进行操作。而对每个用户会话来说,EP具有主从之分。用户会话实际连接的那个EP对该用户会话来说称为主EP,其余的EP都称为从EP。
3)数据分布
DM MPP系统中的数据分布在各EP中,支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST 分布类型,用户可根据应用的实际情况为表数据选择合适的分布类型。
4)MAL系统
MAL系统是DM数据库实例间的高速通信系统,是基于TCP协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过MAL系统实现实例间的消息通讯。
5)全局连接和本地连接
(1)全局连接
MPP系统中数据分布在各个EP中,用户只需要登录到某个EP,系统自动建立这个EP与其余EP的连接,因此用户建立的实际上是与整个 MPP 系统的全局连接,用户对数据库的操作通过全局连接在MPP系统的所有EP进行。使用全局连接时,要求 MPP 系统的所有EP都正常提供服务,否则无法建立连接。
(2)本地连接
DM MPP同时也提供本地连接。当使用本地连接时,用户登录到某个EP后,这个EP不再建立与其余EP的连接,用户的所有数据库操作仅在这个EP上进行。如SELECT语句以及 UPDATE和DELETE语句中的 WHERE条件中的子查询都仅仅查询本地EP的数据,而INSERT语句如果插入的数据根据分布定义应分布在其余EP时系统会报错。
3、MPP的部署
1)环境准备
—1点环境
MAL_INST_NAME = EP01
MAL_HOST = 192.168.168.110
MAL_PORT = 5536
MAL_INST_HOST = 192.168.168.11
MAL_INST_PORT = 5136
—2点环境
MAL_INST_NAME = EP02
MAL_HOST = 192.168.168.120
MAL_PORT = 5536
MAL_INST_HOST = 192.168.168.12
MAL_INST_PORT = 5136
2)实例准备
—一节点实例准备
—二节点实例准备
—注
两个节点的初始化参数都相同
3)配置dm.ini
—停止1节点实例
[dmdba@MPP01 DAMENG]$ DmServiceDAMENG stop
—配置1节点dm.ini参数文件
vim dm.ini
INSTANCE_NAME = EP01
MAL_INI = 1
MPP_INI = 1
—停止2节点实例
[dmdba@MPP02 DAMENG]$ DmServiceDAMENG stop
—配置2节点dm.ini参数文件
vim dm.ini
INSTANCE_NAME = EP01
MAL_INI = 1
MPP_INI = 1
4)配置dmmal.ini
—配置dmmal.ini
注:两节点的dmmal.ini文件配置相同
vim dmmal.ini
[MAL_INST1]
MAL_INST_NAME = EP01
MAL_HOST = 192.168.168.110
MAL_PORT = 5536
MAL_INST_HOST = 192.168.168.11
MAL_INST_PORT = 5136
[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 192.168.168.120
MAL_PORT = 5536
MAL_INST_HOST = 192.168.168.12
MAL_INST_PORT = 5136
5)配置dmmpp.ctl
—配置dmmpp.ini 文件
注:两节点的dmmpp.ini文件配置相同
Vim dmmpp.ini
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02
—生成dmmpp.ctl文件
注:dmmpp.ctl文件属于二进制文件需要通过dmmpp.ini进行转换;且每个节点都要执行
dmctlcvt TYPE=2 SRC=/data/dmdata/DAMENG/dmmpp.ini DEST=/data/dmdata/DAMENG/dmmpp.ctl
6)启动MPP
—分别启动每个实例
7)验证MPP
—当前连接的 EP 的节点序号
SQL> SELECT SF_GET_SELF_EP_SEQNO();
—根据ROWID 获取本行数据来自哪个EP节点
SQL> SELECT SF_GET_EP_SEQNO(ROWID);
—获取EP节点配置信息
SQL> SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
—当前会话连接的节点
SQL> SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
社区地址:https://eco.dameng.com