Ginkgo是我院自主研发的基于内存集群的分布式OLAP系统,它旨在为关系型数据提供实时的分析服务,曾获2017年度上海市科技进步一等奖,现已应用于江苏移动,并在Github开源,其特点如下:
1)、快速大规模的并行执行处理:基于大规模分布式内存集群,通过列存储、列剪枝以及弹性流水线等技术,充分利用每台机器上的硬件性能,获得了优于主流开源软件系统的查询处理性能;
2)、高效的内存数据处理:Ginkgo采用了大量的优化技术来实现高效的内存数据处理,包括批处理、cache敏感型算子、SIMD优化、代码生成优化、无锁和并发处理结构等。这些优化使Ginkgo能够在每个线程上都达到每秒GB级的数据处理速度。
3)、无阻塞的实时数据注入:提出并实现了强一致性实时数据注入方法,解决了业务系统与分析系统间的实时数据同步问题,实现了200毫秒内的数据同步;
4)、强大的 SQL支持:除去对Select、Update、Delete等基本功能的支持之外,我们还提供诸如desc、truncate、to_char、union、distinct 等一系列更细粒度数据操作算子的支持;
5)、分布式数据导入:针对HDFS中导数据速度过慢的问题,我们提出并实现了分布式导入的方法,改变了由传统单节点导入造成的性能瓶颈,大大加快了导入的速度;
6)、有效的事务支持:防止数据被轻易篡改,我们实现了可重复读级别的事务保障,提供事务ACID特性支持,并将元数据放入Zookeeper进行管理以保证元数据信息的一致性。
7)、用户体验良好:不同于其他基于C++实现的开源系统如Impala等,Ginkgo有着良好的用户体验,安装友好便捷,并提供HTTP和JDBC等快速访问接口。
架构图如下所示:
图1: Ginkgo架构图
实时注入模块
Ginkgo的实时注入模块(数据注入流程图如图2所示),用于及时接收交易系统传输的数据,不仅可以支持对这些数据在线处理,更能够将这些数据存储。该模块基于事务处理控制方式,设计并实现以下的一系列功能:
(1)针对实时数据注入对应的追加型事务,采用面向元数据的集中式事务处理的策略,实现事务性数据注入,以避免直接对分布式数据注入操作实现事务性管理;
(2)非阻塞式分布式数据注入框架,将传统的集中式单机数据注入转变为分布式数据注入,充分利用多台机器的性能,避免性能受限于单机的处理瓶颈;
(3)提供强一致性的数据查询模型,实时注入的数据在后续的实时查询中即时可见,支持在实时注入更新的数据集上实时查询;
(4)使用log-shipping技术实现数据热备,面对服务机器宕机支持快速切换,对外提供高可用性的服务,满足金融领域的可用性要求。
图2: Ginkgo数据注入流程图
实时查询模块
Ginkgo的实时查询模块采用MPP架构,能够高并发地处理任务,充分利用系统资源,响应SQL查询。主要特点有:
(1)充分利用分区并行、流水线并行、操作内并行和独立并行,高并发执行任务;
(2)利用LLVM技术编译代码,提高操作运行效率;
(3)采用弹性流水线技术(如图3所示),可以根据负载和资源,动态伸缩并行度,充分利用资源,提高运行效率;
(4)运行时任务调度模块,能够感知系统负载,调度合适的任务,高效实现任务之间的独立并行。
图3: Ginkgo动态流水线技术示意图
联系人
翁楚良 钱卫宁
代表性技术论文:
Zhuhe Fang, Chuliang Weng, Li Wang, Huiqi Hu, Aoying Zhou. Scheduling Resources to Multiple Pipelines of One Query in a Main Memory Database Cluster. IEEE TKDE. Published online.
Zhuhe Fang, Chuliang Weng, Li Wang, Aoying Zhou. Parallelizing Multiple Pipelines of One Query in a Main Memory Database Cluster. ICDE 2018: 1252-1255
Li Wang, Minqi Zhou, Zhenjie Zhang, Yin Yang, Aoying Zhou, Dina Bitton. Elastic Pipelining in an In-Memory Database Cluster. SIGMOD Conference 2016: 1279-1294
Li Wang, Minqi Zhou, Zhenjie Zhang, Ming-Chien Shan, Aoying Zhou:NUMA-Aware Scalable and Efficient In-Memory Aggregation on Large Domains. IEEE Trans. Knowl. Data Eng. 27(4): 1071-1084 (2015)
Ling Gu, Minqi Zhou, Zhenjie Zhang, Ming-Chien Shan, Aoying Zhou, Marianne Winslett. Chronos: An elastic parallel framework for stream benchmark generation and simulation. ICDE 2015: 101-112