部署使用命名节点双活的MPP多机版数据集市系统

<< Click to Display Table of Contents >>

当前位置:  数据集市 > 集市部署 

部署使用命名节点双活的MPP多机版数据集市系统

Previous pageReturn to chapter overviewNext page

MPP 集市中,Naming 节点只有一个,会存在单点故障。Yonghong 通过 ZooKeeper 的领导者选举,选举新的 Naming 节点来实现 Naming 节点的双活。ZooKeeper 有 Server 和 Client, 在这里 Client指的是 MPP 集市中的节点。通过在 MPP 集市系统中启用多个备份 Naming 节点,ZooKeeper 选举出一个 First 备份 Naming 节点,ZooKeeper Client 连接到 Server, 通过心跳保持连接,从而实时监控 Naming 节点的状态并实现 Naming 节点和 First 备份 Naming 节点的元数据文件同步。当 Naming节点宕机后,备份 Naming 节点会成为 Naming 节点来保证集市系统的正常工作。

 

部署 zookeeper 并配置相关属性

ZooKeeper 的部署分为单机模式和集群模式。集群模式是指在多个节点上启动 ZooKeeper Server。例如一个 5 个节点的分布式集市环境,其中一个 CN 节点,一个 M 节点,一个 R 节点,两个备份 Naming 节点。如果使用 Naming 节点双活机制,则在安装每个节点时都需要勾选使用 Naming 节点双活机制,同时在奇数个节点(一般考虑在三台机器上)部署 ZookKeeper 并配置相应的属性,组成一个 ZooKeeper 集群。具体步骤见永洪安装手册。

 

启动和使用

首先启动 ZooKeeper 集群,待 Zookeeper 集群稳定后,再启动数据集市中的 Naming 节点,然后再启动集市系统中的其他节点:备份 Naming 节点,Client 节点,Map 节点和 Reduce 节点。

当数据集市的节点与 Zookeeper 集群连接后,不同的节点在日志中会显示不同的连接信息:

Client 节点 &Map 节点 &Reduce 节点:

Set watch on znode /naming_ip

Connecting to ZooKeeper

First 备份 Naming 节点:

Set watch on znode /naming_ip.

Chosen to be first backup node in zookeeper.

Connecting to ZooKeeper, node path is /election/node_n0000000015.

Chosen to be first backup node in zookeeper.

Election nodes are [node_n0000000015, node_n0000000014],其中 node_n0000000014 指的是 Naming 节点。

Set watch on znode /election/node_n0000000014.

Set watch children on znode /meta.

Starts to check meta info.

当Naming 节点宕机后,所有的节点将被通知 Naming 节点已更换。First 备份 Naming 节点会成为新的 Naming 节点,其他备份 Naming 节点会产生出一个新的 First 备份 Naming 节点,可以通过查看相应的日志信息。

当First 备份 Naming 节点宕机后,会从其他备份节点中产生出新的 First 备份 Naming 节点,可以在备份 Naming 节点中查看相应的日志信息获取到当前的 First 备份 Naming 节点。

Naming 节点和备份 Naming 节点之间的元数据同步采用主从备份机制,具体如下:

(1)在 GSFolders 增加版本信息,每次保存的时候,版本会加 1 ;

(2)元数据修改时,Naming 节点会将修改记录发给 ZooKeeper 保存,按 version 分目录保存,如meta_v1,meta_v2。假设保存之前 version 为 v0,则日志记录存放在 meta_v1 中,保存后,version为 v1,在 ZooKeeper 新建 znode (meta_v2),日志记录存放在 meta_v2 中;

(3)备份 Naming 节点在系统开始运行时,从 Naming 节点请求传输 meta file。根据 meta file 的 version( 设为 v0),监听 ZooKeeper 中 meta_v2 的目录是否存在,如果存在,则合并 meta_v1 目录中的记录,保存成功后,删除 ZooKeeper 的 meta_v1 目录。再重复之前的步骤,实时保持和 Naming 节点落盘的 meta file 一致,并确保一般情况下 ZooKeeper 只有两个 version 的日志信息;

(4)定期(可以设置为 1 小时)将 Naming 节点的 metafile 和备份 Naming 节点的 metafile 进行比较,如果不一致,则备份节点请求传输 meta file。