达梦MPP 环境搭建

1 DM MPP 环境搭建

1.1 系统规划

配置一个两节点 MPP。如果有条件两个节点都配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机。两节点实例名分别为 EP01 EP02,相关的 IP、端口等规划见下表。

实例名

MAL_INST_HOST

MAL_INST_PORT

MAL_HOST

MAL 端口

MPP_SEQNO

EP01

192.168.117.129

5240

192.168.117.129

5270

0

EP02

192.168.117.128

5241

192.168.117.128

5271

1

注意:DM MPP 各 EP 使用的 DM 服务器版本应一致,同时还应注意各 EP 所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,否则可能造成意想不到的错误。

1.2 配置 dm.ini

首先,在 EP01 和 EP02 上分别创建数据库,各 EP 的数据库初始化参数都保持一致,以免产生错误。

分别对两个实例的 dm.ini 进行配置。

修改 EP01 的 dm.ini 的以下几个参数如下:

INSTANCE_NAME = EP01

PORT_NUM = 5240

MAL_INI = 1

MPP_INI = 1

修改 EP02 的 dm.ini 的以下几个参数如下:

INSTANCE_NAME = EP02

PORT_NUM = 5241

MAL_INI = 1

MPP_INI = 1

1.3 配置 dmmal.ini

为两个 EP 配置 dmmal.ini 如下,配置完全一样,EP 间可互相拷贝。dmmal.ini 与dm.ini 放在相同的目录下。

[MAL_INST1]

MAL_INST_NAME = EP01

MAL_HOST = 192.168.117.129

MAL_PORT = 5270

MAL_INST_HOST = 192.168.117.129 

MAL_INST_PORT = 5240

[MAL_INST2]

MAL_INST_NAME = EP02

MAL_HOST = 192.168.117.128 

MAL_PORT = 5271

MAL_INST_HOST = 192.168.117.128

MAL_INST_PORT = 5241

1.4 配置 dmmpp.ctl

dmmpp.ctl 是一个二进制文件,用户不能直接配置,需要先配置 dmmpp.ini。

配置 dmmpp.ini 如下:

[SERVICE_NAME1]

MPP_SEQ_NO = 0

MPP_INST_NAME = EP01

[SERVICE_NAME2]

MPP_SEQ_NO = 1

MPP_INST_NAME = EP02

使用 DM 提供的工具 dmctlcvt 将 dmmpp.ini 转换成 dmmpp.ctl,dmctlcvt 工具在 DM 安装目录的“bin”子目录中。

转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录。

下面的命令将 dmmpp.ini 转换为 dmmpp.ctl。

dmctlcvt TYPE=2 SRC=\dmdbms\data\dameng\dmmpp.ini

DEST=\dmdbms\data\dameng\dmmpp.ctl

1.5 运行 MPP

经过前面四个步骤,DM MPP环境已经配置完成了。分别启动 EP01 和 EP02 的 DM 数据库实例(顺序不分先后),DM MPP 系统即能正常运行,用户就可以登录任一 EP 进行数据库操作了。

2 建立分布表

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

2.1哈希分布

哈希分布按照表定义中指定的一列或多列对行数据计算一个哈希值,再根据哈希值和哈希映射表,将该行数据分布到映射的节点上。

当表的连接查询中使用的连接键为哈希分布列时,MPP 下的查询计划会进行优化,比如可能减少计划中通讯操作符个数、使用索引、对分组计划优化等,减少数据在节点间的分发,提高查询效率。

使用哈希分布时,节点间的数据是否均衡,取决于设置的哈希分布列以及表中的数据情况。当节点个数变动时,各个节点的数据需要按照新的哈希映射表重新进行分发。

例子:创建哈希分布表 T_HASH,分布列为 C1。

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

2.2随机分布

随机分布表不存在分布列,插入表数据时会按照一定的随机算法,将数据随机均衡分布到各个节点。

随机分布的优点是数据和节点间不存在映射关系。节点个数变动后,如果没有节点数据均衡的要求,可以不用对节点现有的数据进行变动。

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

例子:创建随机分布表 T_RANDOM。

CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;

2.3复制分布

复制分布表在每个节点上的本地数据都是一份完整的拷贝,查询该表数据时在任意节点

上都能单独完成,不需要从其他节点获取数据。

复制分布一般用于数据量不是很大的表。

例子:创建复制分布表T_FULLY.

CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;

2.4范围分布

范围分布按照表定义中指定的一个或多个列的列值范围分布项,决定将一行数据存储到MPP 的哪个相应 EP 上。

例子:创建范围分布表 T_RANGE,分布列为 C1。

CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10))

DISTRIBUTED BY RANGE (C1) (VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS THAN(MAXVALUE) ON EP02);

2.5 LIST 分布

LIST 分布通过指定表中的一个或多个列的离散值集,来确定将一行数据存储到 MPP 的哪个相应 EP 上。此分布用于表中列值可列举的情况。

例子:创建 LIST 分布表 T_LIST,分布列为 C1。

CREATE TABLE T_LIST(C1 INT, C2 CHAR(10))

DISTRIBUTED BY LIST (C1) (VALUES(3) ON EP01,VALUES(4) ON EP02);

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

下面在一个 EP节点上创建表T_HASH并指定哈希分布类型,添加3条数据。

使用系统视图CALL SP_GET_EP_COUNT('SYSDBA','TABLE')查看表 T_HASH 在每个实例上的数据行数

可以看到,T_HASH表实例EP01 中有1条数据;实例EP02 中有2条数据。

https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值