Greenplum数据库是典型的主从架构,一个Greenplum集群通常由一个Master节点、一个StandbyMaster节点以及多个Segment实例组成,节点之间经过高速网络互连,如下图所示。StandbyMaster节点为Master节点提供高可用允许,MirrorSegment实例为Segment实例提供高可用允许。当Master节点发生缺点时,数据库治理系统可以极速切换到StandbyMaster节点继续提供服务。
从软件的角度看,Greenplum数据库由Master节点、Segment实例和Interconnect组件三局部组成,各个配置模块在系统中承载不同的角色。
Master节点是Greenplum数据库的主节点,也是数据库的入口,关键担任接纳用户的SQL恳求,将其生成并行查问方案并提升,而后将查问方案调配给一切的Segment实例启动处置,协调集群的各个Segment实例依照查问计参差步一步地并行处置,最后失掉Segment实例的计算结果并汇总后前往给客户端。
从用户的角度看Greenplum集群,看到的只是Master节点,毋庸关心集群外部机制,一切的并行处置都是在Master节点控制下智能成功的。Master节点普通只存储系统数据,不存储用户数据。为了提高系统可用性,我们通常会在Greenplum集群的最后一个数据节点上参与一个StandbyMaster节点。
Segment是Greenplum实践存储数据和启动数据读取计算的节点,每个Segment都可以视为一个独立的PostgreSQL实例,上方寄存着一局部用户数据,同时介入SQL口头上班。GreenplumDatanode通常是指Segment实例所在的主机,用户可以依据Datanode的CPU数、内存大小、网络宽带等来确定其上方的Segment实例个数。官网倡导一个Datanode上方部署2~8个Segment实例。Segment实例越多,单个实例上方的数据越少(平均调配的状况下),单个Datanode的资源经常使用越充沛,查问口头速度就越快。Datanode主机的数量依据集群的数据量来确定,最大可以允许上千台。另外,为了提高数据的安保性,我们有时刻会在消费环境中创立MirrorSegment实例作为备份镜像。
Interconnect是Master节点与Segment实例、Segment实例与Segment实例之间启动数据传输的组件,它基于千兆交流机或许万兆交流机成功数据在节点之间的高速传输。自动状况下,Interconnect组件经常使用UDP在集群网络节点之间传输数据,由于UDP不可保障服务品质,所以Interconnect组件在运行层成功了数据包验证配置,从而到达和TCP一样的牢靠性。
Greenplum口头查问语句的环节如下:当GPServer收到用户动员的查问语句时,会对查问语句启动编译、提升等操作,生成并行口头方案,散发给Segment实例口头;Segment实例经过Interconnect组件和Master节点、其余Segment实例交流数据,而后口头查问语句,口头终了后,会将数据发回给Master节点,最后Master节点汇总前往的数据并将其反应给查问终端。
首先,与传统数据库相比,Greenplum作为散布式数据库,自身具有高性能长处。对各行各业来说,OLTP系统最关键的是在保障ACID事务治理属性的前提下满足业务的并发需求,关于大少数非外围运行场景,MySQL、SQLServer、DB2、Oracle都可以满足系统要求,并且随着MySQL性能的提升和云原生数据库的开展,基于MySQL或许PostgreSQL商业化的数据库会越来越遍及。数据中台的定位是一个OLAP系统,上述数据库就很难满足海量数据并发查问的要求了。上述数据库的横向裁减才干有限,并且软配件老本高昂,不适宜作为OLAP系统的数据库。Greenplum作为一款基于MPP架构的数据库,具有开源、易于裁减、高查问性能的特点,性价比碾压DB2、Oracle、Teradata等传统数据库。
其次,Greenplum作为散布式数据库,和同为散布式数据库的Hive相比,长处也十分显著。早期Hadoop的无形式数据曾经让开发者饱受痛苦,前面兴起的Hive、Presto、SparkSQL只管允许繁难的SQL,然而查问性能依然是分钟级别的,很难满足OLAP的实时剖析需求。前期虽有Impala+Kudu,然而查问性能依然弱于同为MPP架构的Greenplum。除此之外,Hadoop生态圈十分复杂,装置和保养的上班量都很大,没有专业的运维团队很难撑持系统运转。而Greenplum允许的SQL规范最片面,查问性能在毫秒级,不只能很好地允许数据ETL处置和OLAP查问,还允许增删改等操作,是一款综合实力十分强的数据库。相关于Hadoop多个组件组成的庞大系统,Greenplum数据库在易用性、牢靠性、稳固性、开发效率等方面都有十分显著的长处。
最后,Greenplum作为MPP数据库中的一员,相关于其余MPP架构数据库,也具有十分显著的长处。Greenplum研发历史长、运行范围广、开源稳固、生态系统完善。生态系统完善是指Greenplum的工具箱十分多:GPload可满足高速加载需求,PXF可满足外置表和文件存储需求,MADlib可满足数据开掘需求,GPCC可满足系统监控运维需求。相关于TiDB、TBase、GaussDB等新兴数据库来说,Greenplum的运行案例最多,生态系统最完善,并且Bug更少。同时,TiDB、TBase、GaussDB等数据库都定位于优先满足OLTP的同时提高OLAP的性能,而Greenplum是以OLAP优先的。只管前者也有长处,然而将OLAP和OLTP兼并成功起来存在以下艰巨:数据散布在不同的系统曾经是行业事实,没有方法将数据集中到同一个数据库;数据中台自然就是一个OLAP系统,没有方法依照OLTP形式设计。综上,作为散布式相关型数据库,Greenplum是搭建数据中台的首选数据库。
如下图是阿里巴巴大数据平台退化历程。2010年前后,阿里巴巴曾经经常使用Greenplum来交流Oracle集群,将其作为数据剖析平台。从数量上说,Greenplum在2010年成功了Oracle10倍数据量的治理,即1000TB。但Oracle的架构这些年没有太大变动,而Greenplum数据库已有天翻地覆的改造。在阿里巴巴运行的时代,Greenplum还是EMC旗下的商用数据库,平台尚在发育期,配置也不太完善。而如今的Greenplum曾经是社区开源的产品,内核PostgreSQL也已成功了多个版本的更新迭代,如今更是微微松松允许上千台主机的集群,因此承载PB级的数据自不在话下。
关于大少数有构建数据中台需求的企业,1000TB曾经是一个不可企及的高度。大少数据企业的数据都在数TB到100TB的范围内,这个规模的数据正是Greenplum的关键战场。100TB以下规模的数据仓库或许数据中台,Hive施展不了架构上的长处,反而影响开发速度和运维上班,真实是得失相当。
在查问性能方面,Greenplum自然不是第一,只管业界尚无定论,然而据笔者了解,目前ClickHouse是当之有愧的OLAP冠军。相关于ClickHouse,Greenplum胜在高性能的GPload插件、弱小的ETL配置、不算太弱的增删改性能。目前,数据中台在稳步向实时流处置迈进,由于不长于单条更新和删除,因此ClickHouse只适宜口头离线数据查问义务,可以作为超大规模数据中台的OLAP查问引擎。
综上所述,只管Greenplum某些方面不是最低劣的,但仍是最适宜搭建数据中台的散布式数据平台,并且以Greenplum现有的性能和治理的数据规模,可以满足绝大少数中小企业的数据中台需求。
gpcheckperf是Greenplum数据库自带的性能测试工具,在指定的主机上启动会话并启动以下性能测试。
1)磁盘I/O测试(dd测试):测试逻辑磁盘或文件系统的顺序吞吐性能,该工具经常使用dd命令。dd命令是一个规范的UNIX工具,记载了在磁盘上读写一个大文件须要破费的期间,以MB/s为单位计算磁盘I/O性能。自动状况下,用于测试的文件尺寸依照主机上随机访问内存(RAM)的两倍计算。这样确保了测试是真正地测试磁盘I/O而不是经常使用内存缓存。
2)内存带宽测试:为了测试内存带宽,该工具经常使用STREAM基准程序来测量可继续的内存带宽(以MB/s为单位)。本项测试内容是测验操作系统在不触及CPU计算性能的状况下能否受系统内存带宽的限度。在数据集较大的运行程序中(如在Greenplum数据库中),低内存带宽是一个关键的性能疑问。假设内存带宽显著低于CPU的通常带宽,则会造成CPU破费少量的期间期待数据从系统内存传递过去。
3)网络性能测试:为了测试网络性能以及Greenplum数据库Interconnect组件的性能,该工具运转一种网络基准测试程序,该程序在主机延续发送5s的数据流到测试蕴含的每台远程主机上。数据被并行传输到每台远程主机,并以MB/s为单位,区分报告最小、最大、平均和中位网络传输速率。假设汇总的传输速率比预期慢(小于100MB/s),可以经常使用-rN选项串行运转该网络测试以失掉每台主机的结果。要运转全矩阵带宽测试,用户可以指定-rM选项,这将造成每台主机都发送和接纳来自指定的其余主机的数据。该测试实用于验证交流结构能否可以接受全矩阵负载。
gpcheckperf命令运行举例如下。
#经常使用/data1和/data2作为测试目录在文件host_file中的一切主机上运转磁盘I/O和内存带宽测试#在名为sdw1和sdw2的主机上只经常使用测试目录/data1运转磁盘I/O测试。显示单个主机结果并以具体形式运转#经常使用测试目录/tmp运转并行网络测试,其中hostfile_gpcheck_ic*指定同一Interconnect子网内的一切网络接口的主机地址称号
性能测试期间通常较长,为了启动完整的测试,我普通会创立如下测试脚本,在后台口头性能测试义务。
性能测试后台口头nohup sh gpcheckperf-test.sh&命令后,检查nohup.out的输入结果,如下图所示(每台主机驳回10块普通硬盘经过软件组成Raid 5)。
关于作者:王春波,资深架构师和数据仓库专家,现任上海启高消息科技有限公司大数据架构师,ApacheDoris和openGauss奉献者,Greenplum中文社区介入者。 群众号“数据中台研习社”运营者。
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/9241.html