2015/6/1322:51GP架构_1与GreenPlum类似的产品:IBMNITIZA(国内没人用)Terndata2007年被EMC收购GreenPlum国外市场:纳斯达克,skypeGreenPlum国内市场:阿里,民生银行,深发展银行,电信业(MPP架构)MPP架构:海量并行处理MassivelyParallelProcessingsharenothing模式,每一个节点不进行资源共享,集群中每个节点有独立的CPU、内存、存储、总线等。SMP架构:symmetricmassprocessing对称多处理系统:耦合的多处理系统,共享总线、内存、IO资源,传统的ORCKLE,DB2是非常典型的产品ORACLE_RAC处于半共享状态,各节点连接共享存储,所以不能算MPPGreenPlum基于PostGreSQL8.2之前在国内使用比较少,在国外使用广泛。Mysql与PostGreSQL地位同等,但mysql被Oracle收购之后没落。GreenPlum在函数、dataloading、存储过程等继承了PostGreSQLGP增加BI和数据仓库的支持:A、外部表、并行加载(优势明显)B、资源队列管理的优化,对角色、用户、组进行资源优化分配,管理。C、GP在查询优化器的增强、分布支持、分区表、执行计划的优化、空间回收、数据分析,简化调优,架构时对称、数据分布均匀的话,可以免去调优GP体系架构SegmentHostSegmentHostSegmentHostSegmentHostClientMasterHostLANInterconnect-GigabitEthernetSwitchMasterHost:访问系统的入口,所有请求都需要从MasterHost访问,正常来讲,管理员也不可以直接访问SegmentHost,系统中只允许直接访问MasterHost,单独操作SegmentHost影响一致性和完整性。数据监听进程(PostGres):监听用户请求。处理所有用户连接。建立执行计划,通过网络层分发给SegmentHost。协调整个处理过程,保证SegmentHost处理结果侧一致和同步。只存储GP系统自身的数据,MasterHost的数据是很小的,存储架构信息、配置信息。不包含任何用户数据。Interconnect网络层:千兆以太网的架构,各节点之间的连接层,系统内部私有网络配置,支持TCP和UDPTCP:面向连接的协议,三次握手,A请求B,B响应A,A才连接B建立稳定连接,线性扩展有节点的限制,官方1K个节点,实际不能达到。UDP:(建议使用,连接快,也稳定)QQ聊天,面向非连接的,稳定性较差,效率较高。SegmentHost数据节点一些银行使用了60segmentHost节点,一天的交易数据,分布在不同的SegHost中,分布的逻辑由,我们建立数据仓库的时候指定的,比如:随机的、指定分布键,每个SegmentHost存储一部分用户数据。所有请求都来自MasterHost节点,有PostGres监听进程负责2015/6/1323:15GP架构_2网络配置示例:X4200/4500、网口主槽:e1000g0-e1000g3;网口扩展槽e1000g4/5;iLOM串口SegmentHost2没有使用网口扩展槽,原因是SegmentHost2只是用户数据节点,而SegmentHost1既是用户数据节点,又是MasterHost的热备(standby)节点,所以SegHost1需要使用网口扩展槽e1000g4/5扩展槽e1000g4/5连接广域网(用户网络),与用户连接4网口主槽连接交换机个4个VLan:每个SegHost上面的会有多个Segment实例,假如每个实例都对应一个自己的网口,而且每个节点都有一个主网口连接到千兆交换机划分的虚拟网络上,例如所有节点的e1000g3都连接到Vlan:172.16.0.*,不同的网口都在不同的局域网中,所以相同SegmentHost节点上的实例不会有网络带宽的竞争,使得数据访问更迅速。iLON与catalyst2960交换机相连接,用于管理员连接登陆各节点,管理个服务器节点。在生产环境中,Master\Segment节点的网口都会在6个以上,通过一个或多个交换机,将X4200(MasterHost)e1000g4e1000g5e1000g3e1000g2e1000g1e1000g0iLOMSMC8748MSMC8748M172.16.0172.16.1172.16.2172.16.3Catalyst2960192.168.X4500(SegmentHost2)e1000g3e1000g2e1000g1e1000g0iLOMX4500(SegmentHost1,StandbyMaster)e1000g4e1000g5e1000g3e1000g2e1000g1e1000g0iLOMLocalLAN/WANaslocallydefined各节点的网口,分组连接到不同的网段中,保证带宽的和高可用性。Segment节点是没有公网出口的,Mast节点需要扩展网槽,连接到公网中。网络交换机的冗余和高可用性:增加一个冗余交换机,MastHost与Segment节点的网口分成两组分别连接到两台内网交换机上,例如各节点的e1000g0/1都连接到交换机A,e1000g2/3都连接到交换机B上,当A交换机宕机,各节点可以暂时通过B交换机的e1000g2/3网口进行连接和通信,提高了交换机及网路的高可用性Synchprocess同步MastHost上面发生的任何改变到standbymaster节点上,Mastinstance坏掉,standbyMaster接管,避免单点故障。3Segmenthost都含有PrimarySegment,每个segmentHost都交叉备份其他segment节点的primarySegment。Segment通过镜像交叉备份,实现高可用性。通过synchronizationprocess实现catalogs(数据字典信息)、transactionlogs(事物日志)从Master节点同步到standbymaster节点上。Primary和standby部署在不同的物理节点上。Synchronizationprocess不会频繁同步,primarymaster节点上的数据的改变不会立刻同步到standbymaster节点上Standbymaster不能自动接管故障Primarymarter,需要人工激活,激活前可以指定另外一个standbymaster节点。一般情况,segmentN的镜像放在前一个物理segment节点上,如segmentN上存放segment1的镜像。当一个segment的一个节点宕机,可以有两种恢复方式,镜像只读,镜像可读写。例如,镜像只读,当segment1的网络异常宕机,可以在不停止整个GP系统的情况下,修复网络后,直接将原来的segment1节点接入GP系统。假如,镜像可写,需要关闭GP系统进行修复。实际应用中,Segment主机少则8-10台,多则上百普通的X86的服务器,多核心CPU,4G内存有条件的情况下,一个segmentinstance应该独享一个CPU核心,适当的内存(8Gbi以上RAM),独立的存储(磁盘)、独立的网口,以保证减少数据竞争。如果条件不允许,也可以共享存储,但是最好有独立的CPU和网口。GP系统的性能符合木桶原理,其性能由性能最差的segmentinstance决定的。网络交换机的冗余和高可用性:增加一个冗余交换机,MastHost与Segment节点的网口分成两组分别连接到两台内网交换机上,例如各节点的e1000g0/1都连接到交换机A,e1000g2/3都连接到交换机B上,当A交换机宕机,各节点可以暂时通过B交换机的e1000g2/3网口进行连接和通信,提高了交换机及网路的高可用性2015/6/1421:52评估存储能力:计算可用的空间:步骤1:初始存储能力=硬盘大小*硬盘数(10块200G的硬盘=2Tbi)步骤2:RAID10,冗余方案;格式化磁盘空间=(初始存储能力*0.9)/2(2T*0.9)/2=0.9T(Raid0单纯提高存储的性能,2个磁盘,数据分别存到2个磁盘上,读写的时候提高IO的性能,磁盘利用率50%;Raid1,2个盘,1个盘作为另外一个盘的镜像,IO效率没有提高,可用性提高;Raid5,奇偶验证,保证磁盘利用率和IO的性能。生产环境中,一般要选择Raid10,有冗余,也可提高IO效率,假如有ABCD四个盘,AB盘做raid0,CD盘做raid1,C是A盘镜像,D是B盘镜像,Raid10的磁盘利用率也是50%)步骤3:可用磁盘空间=格式化磁盘空间*0.7(格式化磁盘空间不能全沾满,根据最佳经验,当磁盘使用超过70%,系统管理员就会做相应处理)步骤4:用户数据使用空间:使用镜像:(2*用户数据)+用户数据/3=可用磁盘空间不用镜像:用户数据+用户数据/3=可用磁盘空间计算用户数据大小:平均来说,实际占用空间磁盘大小=用户数据*1.4(最佳经验),其中的0.4用来存储控制、配置信息。页面开销:32Kb网页需要,需要20bytes行开销:每行24bytes,行的头信息,append-only只增加,多是分区表,如果修改或删除需要truncate掉分区,重新灌入数据。索引开销:B-Tree索引(任何数据库都用到),多路树,数据树状存放,二分法存储遍历数据。占用空间比较大:唯一值*(库字段数据类型大小+24Bytes)。Bitmap索引(数据字段重复值较多的情况):唯一值*行数*1bit*压缩比率/8+(唯一值*32)系统的元数据和日志计算空间需求:系统元数据:20M在Master节点上,不会太大。但是,由于Master开销不大,一些商业环境中,ETL服务与Master混用,会增加存储。预写日志(WAL,writeaheadlog):记录用户操作数据库的每一个行为,当数据库节点出现故障,需要恢复时,就会用到WAL日志,WAL被拆分为多个64M的文件,允许的WAL的文件数据:(2*checkpoint_segments+1),其中checkpoint_segments默认是8,(可配),如果checkpoint_segments=8,那么WAL的最大空间=(2*8+1)*64M=1088M。日志文件存储是轮转的,旧日志会被新日志替换。GP数据库日志文件:日志轮转性能监控数据:GP性能监控软件会记录节点上的性能数据,供DBA使用,软件所占空间实验环境:硬件环境:PC电脑,安装VMware8,安装三台Linux虚拟机,RedHatEnterpriseLinuxServerrelease5.2数据库:EMC主页去下载,greenplum-db-4.2.2.4-build-1-CE-RHEL5-i386虚拟机:节点IP内存硬盘mdw192.168.136.101400M8Gsdw1192.168.136.102400M8Gsdw2192.168.136.103400M8G系统设置(所有节点)系统参数:共享内存:分配合理,以免内存溢出,GP系统宕机。推荐《鸟哥私房菜》修改或添加/etc/sysctl.confxfs_mount_options=rw,noatime,inode64,allocsize=16mkernel.shmmax=500000000(最大共享内存)kernel.shmmni=4096(最小共享内存)kernel.shmall=4000000000kernel.sem=2505120001002048kernel.sysrq=1kernel.core_uses_pid=1kernel.msgmnb=65536kernel.msgmax=65536kernel.msgmni=2048net.ipv4.tcp_syncookies=1net.ipv4.ip_forward=0net.ipv4.con