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 中文社区(greenplum.cn)上的设计文档。
第二个要素是通过复制表完成的。复制表即每个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 为大家持续带来更多的惊喜。