Greenplum 6.0 安装 (二)

Introduction to Greenplum

Greenplum Database 系统架构概述

Greenplum Database 通过将负载分布到数台server上来存储和处理大量数据。在Greenplum上,一个逻辑database是指 一组独立的PostgreSQL databases 一起提供服务,表现为一个独立database image。Master是Greenplum Database system的入口,是一个用户连接和提交SQL的database实例。Master协调将工作负载分布到系统内的其他database实例上,称为segments,负责数据处理和存储。 Segments通过Greenplum Database的网络层连接其他实例和master。

highlevel_arch.jpg

Greenplum Database 是软件解决方案; 硬件和数据库软件不包含在内。 Greenplum Database工作在Greenplum认证过的供应商的一系列普通服务器上。性能取决于硬件配置。因为在Greenplum Database,数据库被分布在多台设备上,硬件的选择、配置对是否达到最佳性能至关重要。

这个章节描述了Greenplum Database system的主要组件,硬件的选型,和各组件的工作关联关系。MasterSegments Interconnect是三大组件。另外,可选ETL Hosts for Data Loadingtopic_e5t_whm_kbb(监控查询的工作负载和性能)组件。

The Greenplum Master

Master是 Greenplum Database system的入口。它是一台接受客户端连接和处理SQL命令的数据库服务器。Users 通过master连接到 Greenplum Database,使用PostgreSQL兼容的客户端程序,比如psqlODBC

Master维护着system catalog (一系列包含着Greenplum Database system元数据的表), 但是master不包含任何用户数据。用户数据仅保存在segments上。Master认证客户端连接,处理提交的SQL命令,在 segments间分布工作负载,将每个segment提交的结果整合作为最终结果提交客户端程序。

因为master不包含任何用户数据,所以其占用磁盘不高。Master需要快速的,独立的CPU来处理数据加载,连接管理,查询计划。因为额外的空间在加载文件和备份的时候是必要的,特别是在生产环境。客户也可以在master上运行ETL和报表工具,这会需要更多磁盘空间和处理能力。

Master Redundancy

可选的,可以部署master实例的备份或镜像。Backup master提供warm standby如果primary master不再工作。可以将standby master部署在冗余master主机或者一个segment主机上。

Standby master通过transaction log replication进程来更新。进程运行在standby master上,同步primary 和 standby master 之间的数据。如果primary master 故障,日志复制进程会关闭,administrator激活standby master。当standby master被激活,复制的日志会重建master状态,到最后成功提交事务的时间 。

既然master不包含用户数据,仅仅system catalog tables需要在主备间同步。当tables被更新,变更会自动拷贝到standby master,这样会一直与primary保持同步。

Figure 1. Master Mirroring in Greenplum Database


standby_master.jpg

The Segments

在Greenplum Database中,segments是数据存储和大部分查询进程发生的地方。 用户定义的表和它们的索引分布在可用的 segments 上。; 每个 segment 包含着一份特定的分配的数据。Segment instances 是提供segments服务的一系列数据库服务器。在Greenplum Database system,Users 不能直接访问segments,必须通过 master。

在Greenplum Database 硬件配置的参考文档中,每个segment host负载的segment instances数量,取决于有效的CPU或core数量。比如,如果你的segment hosts有2颗双核处理器,你可以在每台host上设置2或者4个primary segments。如果你的segment hosts有三颗4核处理器,你可以在每台host设置3,6,12个segments。性能测试会帮助确定在选定的硬件平台上的最佳segments数量。

Segment Redundancy

当你部署Greenplum Database system, 你可以选择是否配置 镜像mirror segments。 Mirror segments 允许数据库查询当primary segment不可用的时候切换到backup segment 。

一个mirror segment必须与primary segment分布于不通的host。 Mirror segments 可以以一或两种标准配置分布于系统内的hosts上,或者自定义配置。
默认配置, 称为 group mirroring,将所有primary segments 的 mirror segments 放置于另外一台host上。
另外一种, 称为 spread mirroring,spreads 将每台host的primary segments 镜像分布到其他hosts上。 Spread mirroring 需要比primary segments占用的hosts更多的hosts。
如果hosts 是多网卡配置,primary 和 mirror segments 会平等的分布于每个网卡接口上。
Figure 2展示了在默认group mirroring配置下,table data是怎么分布于segments的。

Figure 2. Data Mirroring in Greenplum Database


group-mirroring.png
Segment Failover and Recovery

当Greenplum Database system开启了mirroring功能,如果primary copy变成不可用,那么系统会自动切换到mirror copy。 如果一个segment instance或者host宕机了,Greenplum Database system任然保持可用, 但是其他所有存活的segments的分配的数据必须在可用状态。

如果master不能连到segment instance,它会在Greenplum Database system catalog标记这个segment instance为invalid(无效,下线)状态。这个segment instance 会保持invalid状态,并且不可操作,直到administrator重新设置上线。Administrator可以在系统运行的时候,修复故障的segment。修复进程仅仅拷贝在不可操作期间丢失的变更。

如果你没有开启mirroring功能,当某segment变成invalid状态,整个系统会自动 shut down。直到administrator 修复所有故障的segments ,才可以继续正常的操作。

Example Segment Host Hardware Stack

不管你硬件平台怎么选,生产的Greenplum Database processing node (a segment host) 的典型配置如下。

Segment hosts处理了大多数数据库进程,所以segment host 服务器会被优化配置以达到最佳性能。Greenplum Database 的性能取决于最慢的segment server。因此,底层硬件和操作系统需要被优化在最佳性能状态,这是很重要的。 建议,所有的 segment hosts使用同样的硬件资源和配置。

Segment hosts被设计仅用于Greenplum Database 操作。为达到最佳性能,请不要再运行其他程序、任务。

如下图示,一个Greenplum Database segment host的硬件栈范例。Host的有效CPU数量,是决定运行多少primary Greenplum Database segment instances的决定性因素。这个范例中,host拥有2颗有效CPU(1颗双核CPU)。每颗CPU core运行一个primary segment instance 。

Figure 3. Example Greenplum Database Segment Host Configuration


Example Segment Disk Layout

每颗CPU都会被映射到一个逻辑盘。一个逻辑盘由一个通过I/O channel或者disk controller连到物理磁盘阵列的primary file system(mirror file system)构成。这个逻辑盘和文件系统是由操作系统提供的。大部分操作系统提供逻辑盘驱动,来使用一组物理磁盘组成的RAID阵列。

Figure 4. Logical Disk Layout in Greenplum Database
disk_raid.jpg

取决于硬件平台的选型,不通的RAID配置提供不通的性能和容量。 Greenplum 提供和认证了一些参考硬件选型和操作系统。请于联系销售获取推荐配置。

The Interconnect

Interconnect是Greenplum Database的网络层。当一个用户连到数据库,提交一个查询,进程会在每个 segments 创建来处理这个查询任务。 Interconnect 用于segments间的信息交换,正如网络连接依赖于网络基础架构。Interconnect 使用标准10G以太光纤卡。

默认,Greenplum Database interconnect使用带流量控制的UDP协议来通过网络发送消息。Greenplum software做了UDP不能实现的,额外的包确认和检查工作,所以可靠性等同于TCP协议,性能和扩展性又超过了TCP。 查看Greenplum Database支持的interconnect类型,请查看Greenplum Database Reference Guide中的服务器配置参数 gp_interconnect_type 内容。

Interconnect Redundancy

高可用 interconnect 可以通过部署双交换机,来实现Greenplum Database master到segment host servers间的10G冗余的连接 。

Network Interface Configuration

一台segment host通常有多块网卡设计用于interconnect通信。Master host 通常会有连接扩展网络接口来用于interconnect通信。

取决于可用网络接口数量,你可以将网络通信分布于多个可用接口上。 通过将segment instances分配到特定的网卡上并确保primary segments均衡的平衡负载在这些可用网络接口上来实现。

通过给每个网络接口创建不同的host address实现。比如,如果一台host有4个网络接口,那么它将会被分配4个相匹配的host address,每个都映射到1个或多个primary segments。/etc/hosts 文件将配置为不仅包含一个host name ,而是用于Greenplum Database hosts (master, standby master, segments, and ETL hosts)的所有的接口地址。

这样配置后,操作系统会自动选择到目标的最优路径。 Greenplum Database 自动负载均衡网络来实现最大并行。

Figure 5. Example Network Interface Architecture


multi_nic_arch.jpg
Switch Configuration

当在Greenplum Database 中使用多个 10G以太交换机,在每个交换机上均衡的划分子网数量。在这个范例中,假设有2台交换机, 每台host的 NICs 1 and 2 会连到 switch 1 , NICs 3 and 4会连到 switch 2。Master host 的host name会被绑定到 NIC 1 (因此会使用 switch 1),对整个服务组而言这是最重要的master host name。因此,如果要部署一个warm standby master, 这个 standby master应该绑定到不跟primary master连到同一个交换机上的网卡上。

Figure 6. Example Switch Configuration


multi_switch_arch.jpg

ETL Hosts for Data Loading

Greenplum通过external tables特性支持快速、并行的 data loading(数据加载) 。通过使用 external tables以及同时工作的Greenplum Database 并行文件服务器 (gpfdist), administrators可以达到最大的并行和数据加载带宽。很多生产系统都部署了 ETL servers 用于 data loading 。 这些机器运行 Greenplum parallel file server (gpfdist),而不是Greenplum Database instances。

使用gpfdist file server program 的一个优势就是,当从external table的数据文件读取数据,可以确保所有的segments都被使用了。

Gpfdist program 发送数据到segment instances 的平均速度 可以达到 350 MB/s (delimited text formatted files)或者 200 MB/s ( CSV formatted files)。 因此,当在ETL系统中使用gpfdist以最大化网络带宽占用,你需要考虑如下选项:

  • 如果你的 ETL 机器配置了多块网卡(NICs) 并且在网卡配置文件中配置了。在ETL host 上运行一个gpfdist实例 ,并且定义 external table definition,这样每个网卡的host name都在 LOCATION clause 被声明了(参考Greenplum Database Reference GuideCREATE EXTERNAL TABLE部分)。 这可以让Greenplum segment hosts 和 ETL host之间的网络通信同时使用所有网卡。

Figure 7. External Table Using Single gpfdist Instance with Multiple NICs


ext_tables_multinic.jpg
  • 在ETL host运行多个gpfdist实例,将external data files均衡的分布到每个实例。比如,如果ETL系统有两张网卡 (NICs),那么在那台机器上你可以运行两个 gpfdist 实例以最大化加载性能。然后,将external table data files 在两个gpfdist programs上均衡的分开部署 。

Figure 8. External Tables Using Multiple gpfdist Instances with Multiple NICs


ext_tables.jpg

你可能感兴趣的:(Greenplum 6.0 安装 (二))