云栖大会 | Greenplum 6.0内核优化解读和7.0展望

9月25日,云栖大会在杭州阿里巴巴云栖小镇正式拉开序幕,三天会议期间,共吸引了200多位世界级科学家、400多家科技合作伙伴参与,科技展区面积超过3万平方米,共发布了1000多项顶尖技术。

云栖大会现场

在此次云栖大会上,《下一代云数据分析专场》是此次云栖大会最火爆的专场之一,会场站满了参会人员,门口排队入场的人员人头攒动。在专场中,众多数据库专家深入介绍了云端数据分析的技术内幕,带来了基于云构建企业最佳分析架构解决方案的精彩分享,并深入剖析了云分析解决方案的优势和挑战。

《下一代云数据分析专场》 现场

Greenplum研发总监,中文社区发起人姚延栋也在此专场发表了演讲《全新的Greenplum 6.0内核优化解读和7.0展望》,并得到了一众好评。

姚延栋在云栖大会上发表演讲

9月4日发布的Greenplum 6.0版本在功能和性能上都有了大幅提升,在并发性上的改进尤为显著,对OLTP型和混合负载业务的支持更为强大,是Greenplum发展的重要里程碑。

在演讲中,姚延栋先以一个数据库开发者的角度详细解读了6.0内核中的新技术。内核的第一个重大改进是Greenplum内核的升级。Greenplum是基于PostgreSQL的MPP数据库。2005年研发之初时其内核版本是PostgreSQL 7,2017年发布的Greenplum5之前一直是PostgreSQL 8.2版本。2015年Greenplum完成了开源并启动了内核升级的项目。于2017年9月发布的Greenplum 5.0中,其内核版本已经升级到了8.3。

由于一开始做了大量的重构和清理工作,随后的内核版本升级速度进入了快车道。Greenplum在去年一年就完成了6个大版本的内核升级,集成了来自于PostgreSQL社区的约14000次代码提交,融合了社区近10年来的工作,升级速度惊人,升级到9.3版本仅仅花费2周时间,近期刚刚完成了PostgreSQL 9.5内核的升级工作,9.6的合并工作也已经启动,目前已经完成了约一半的工作。Greenplum的基础(“骨骼”)变得越来越坚实可靠。

第二个内核特性是 TP 查询性能大幅提升,我们内部在 GCP 上测试TPCB 提升约 70倍。这一重大突破是如何完成的呢?

第一个要素来自于全局死锁检测(GDD),该技术在美国申请了专利,但最终全部开源。老版本上update使用的是表锁,性能较差,通过全局死锁检测技术,降低为行级锁,性能大幅提升。GDD的基本逻辑是收集每个segment锁依赖关系图,在master上重建整个集群的锁依赖关系图,并检测是否有环。具体实现细节可以参考Greenplum中文社区(cn.greeplum.org)上的设计文档。

第二个要素是通过复制表完成的。复制表即每个segment都有表的全部数据,因而不需要网络数据传输,还可使用索引。第三个要素是多核锁优化。当通过测试发现高并发时,性能不增反降,然后通过多种方式定位到 procarray 锁的竞争严重。Greenplum中文社区Greenplum.cn 上有一篇文章详细介绍了分析问题,发现原因并解决问题的整个过程。第四个要素是事务优化。只读事务不需要分布式快照,也不需要2PC; 而单节点查询也可以对两阶段提交进行优化。最后是内核升级,PostgreSQL本身的性能在版本升级的过程中不断提升,Greenplum 通过升级自然继承了所有PostgreSQL升级带来的优势。

第三个内核特性是 Greenplum 6 引入了全新的高可用机制。Greenplum 5是基于我们自研的Filerep技术,Filerep 基于文件块IO,代码侵入大,不易于扩展。而Greenplum 6采用了 PostgreSQL自身的日志流复制技术,网络开销低,代码侵入性低,扩展型好,为将来做 DR、CDC、3副本打下了基础。此外集群管理复杂度也大幅降低。

第四个内核特性是弹性,包括数据弹性分布、计算的弹性;这两方面在6.0版本中都做好了基础设施。除了弹性,6.0版本中的数据分布策略也更灵活,默认根据数据类型的hash函数计算数据分布。6.0中海支持自定义数据分布策略。

基于这些技术,Greenplum 6.0版本实现了在线扩容,可以做到不停机,不停业务,并且通过一致性哈希,大幅降低数据移动量。

接着,姚延栋又从用户的角度分析了Greenplum的新亮点特性。Greenpum作为一个集成处理平台,其功能远远超出了数据仓库。6.0的发布使得Greenplum成为一款企业级的HTAP数据库。

作为一个集成平台,Greenplum具有很好的混合负载处理能力。在6.0中,经测试,TPCB提高了70倍。单点插上,实验环境中,SELECT可达14w/s,INSERT 4.6w, UPDATE 2.4w,这个性能可以满足很多的OLTP场景。Greenplum可以支持结构化数据、半结构化数据、非结构化数据,包括 JSON、KV、Text、GIS、时序、图、图像等。6.0版本对流数据也有很好的支持,包括流式加载,流式处理,和时序数据的分析。

数据量大而性能突出,这是Volume;支持多样化数据类型,这是Variety;支持流式数据处理,这是Velocity。这三点使Greenplum成为了理想的大数据处理系统。不仅仅是传统意义上的3V,Greenplum可以做到大数据量下OLTP性能突出,而这是大部分大数据系统无法做到的。

在对混合负载的支持上,Greenplum还具有其他支撑HTAP的技术,包括多模数据存储、对包括并发度、CPU配额、CPU绑定、内存配额和磁盘配额在内的多种资源管理的支持,并提供了完善的安全特性。这些支持使得Greenplum可以满足用户使用一套系统支持全部AP、TP和流式业务,避免复杂的ETL,维护多种产品,大大提高投入产出比。

世界之美在于多样性。数据处理同样也是。企业会和很多种数据相关技术打交道,这样就需要数据融合、互联互通。通过 Greenplum 的 FDW(外部表)技术可以直接访问包括Oracle、MySQL、PostgreSQL、ElasticSearch、Redis等上百种外部数据源,且不需要数据移动。Greenplum 还开发了 PXF 框架实现对Hadoop生态的支持,目前Greenplum可以并行高效的访问HDFS、Hive、Hbase的数据。数据格式支持Json、Parquet、ORC等。对于 Hive,还支持谓词下推,从而大幅降低数据传输量,降低资源利用率,提高查询性能。

Spark几年来很受关注,Spark 通过JDBC 访问Greenplum效率低下,为此Greenplum开发了高效并行的连接器,并支持谓词下推。对于Kafka,Greenplum开发了 Kafka 连接器,支持exactly once语义,支持并行消息处理、窗口,多种数据类型,和多字节分隔符等。

在和用户沟通时,我们发现大部分用户都忽略了一些已经被SQL支持的高级特性,而花费很多时间自己裸写代码实现这些特性。SQL 标准一直在研发,99年加入了数据立方体、Grouping Sets;2003年加入窗口函数; 2016 年加入了JSON。使用这些特性可以极大的提高开发人员效率。

除了传统的数仓, Greenplum 还通过Apache 顶级开源项目 MADLib 实现了对数据库内高级分析的支持。MADLib 提供了50多种机器学习算法,并为数据科学家提供了很多实用工具,譬如模型交叉验证,工作流等。今年 madlib 开始支持AI深度学习,集成了Tensorflow、teras 等,利用 GPU 的计算能力执行深度学习任务。

如果madlib不能满足你的需求,Greenpum还提供了2种方式让用户得以自行进行扩展。第一种方式是通过Procedure Language(PL), 另一种方式则是为开发人员提供透明的计算能力,首先会支持R,这就是GreenplumR项目。 通过这个项目,R程序员可以对 SQL 的结果调用 R 的函数,整个过程对R开发人员透明,同时也可以获得Greenplum提供的强大的并行计算能力。

下面的图片列出了MADLib支持的50多种机器学习算法,涵盖了监督学习,无监督学习等主要流行的算法。此外MADlib还支持 Graph 算法,提供了多个工具函数,数学计算函数,统计函数等。

下图是 Greenplum通过 MADLib 实现深度学习的框架图,通过图片可以看到在每个节点上都可以调用 Tensorflow、keras等进行模型的训练。 Madlib 支持两种模型训练方式:1)一种是为每个segment 训练一个模型;2) 为整个集群数据训练单个模型。 第二种挑战比较大,今年已经完成实现并发布。

Greenplum在今年也实现了对 K8S的原生支持,使用K8S的技术(譬如 CRD、operator等)可以对Greenplum进行安装、部署、管理。整个操作可一键完成。

演讲的最后,姚延栋对Greenplum 7.0的新功能进行了展望。 用户可以在7.0中期待Greenplum对HTAP、数据融合、高级 SQL特性、高级分析和Kubernetes 更好的支持。内核上,Greenplum也将对PostgreSQL继续合并。

此外,包括容灾,Greenplum联邦( 使得一个Greenplum集群可以高效并行的访问另一个集群中的数据)等众多新功能项目也在研发过程中。最后,用户也可以在7.0中期待更出色的性能,其中物化视图已经完成,向量化正在开发。后续会对并行执行、SIMD、GPU等方向做更多的探索和开发实现。

此次云栖大会上,Greenplum大放异彩,新特性惊喜不断。我们也期待Greenplum为大家持续带来更多的惊喜。

云栖大会人头攒动

关注微信公众号

VMware 中国研发中心