本文介绍了大数据引擎 Greenplum 的架构和部分技术特点。从 GPDB 基本背景开始,在架构的层面上讲解 GPDB 系统内部各个模块的概貌,然后围绕 GPDB 的自身特性、并行执行和运维等技术细节,阐述了为什么选择 Greenplum 作为下一代的查询引擎解决方案。
Greenplum 的 MPP 架构
Greenplum(以下简称 GPDB) 是一款开源数据仓库,基于开源的 PostgreSQL 改造而来,主要用来处理大规模数据分析任务。相比 Hadoop,Greenplum 更适合做大数据的存储、计算和分析引擎。
GPDB 是典型的 Master/Slave 架构,在 Greenplum 集群中,存在一个 Master 节点和多个 Segment 节点,每个节点上可以运行多个数据库。Greenplum 采用 shared nothing 架构(MPP),典型的 Shared Nothing 系统汇集了数据库、内存 Cache 等存储状态的信息,不在节点上保存状态的信息。节点之间的信息交互都是通过节点互联网络实现的。通过将数据分布到多个节点上来实现规模数据的存储,再通过并行查询处理来提高查询性能。每个节点仅查询自己的数据,所得到的结果再经过主节点处理得到最终结果。通过增加节点数目达到系统线性扩展。
图1为 GPD B 的基本架构,客户端通过网络连接到 gpdb,其中 Master Host 是 GP 的主节点(客户端的接入点),Segment Host 是子节点(连接并提交 SQL 语句的接口),主节点不存储用户数据,子节点存储数据并负责 SQL 查询,主节点负责相应客户端请求并将请求的 SQL 语句进行转换,转换之后调度后台的子节点进行查询,并将查询结果返回客户端。
![图1 GPDB的基本架构 图1 GPDB的基本架构](https://ipad-cms.csdn.net/cms/attachment/201703/58b520f7d1e66.png)
Greenplum Master
Master 只存储系统元数据,业务数据全部分布在 Segments 上。其作为整个数据库系统的入口,负责建立与客户端的连接,SQL 的解析并形成执行计划,分发任务给 Segment 实例,并且收集 Segment 的执行结果。正因为 Master 不负责计算,所以 Master 不会成为系统的瓶颈。
Master 节点的高可用类似 Hadoop 的 NameNode HA,如图2,Standby Master 通过 synchronization process,保持与 Primary Master 的 catalog 和事务日志一致,当 Primary Master 出现故障时,Standby Master 承担 Master 的全部工作。
![图2 Master节点的高可用 图2 Master节点的高可用](https://ipad-cms.csdn.net/cms/attachment/201703/58b52123ca3fa.png)
图2 Master 节点的高可用
Segments
Greenplum 中可以存在多个 Segment,Segment 主要