OmniRuntime OmniStream Flink Native化
Apache Flink是一个开源的实时流处理引擎,适用于实时数据处理。随着业务的快速发展和数据量的急剧增长,在某些高负载场景下,Flink性能瓶颈逐渐显现,尤其是在互联网场景下,处理性能存在挑战。OmniStream Flink Native化特性是一种采用Native Code(C/C++)实现算子来提高查询性能的特性,主要分为Java实现的Java Adaptor适配层和C++实现的CPP Core核心层。Java Adaptor适配层主要用于生成Native的执行计划和不支持的场景回退Java Runtime。CPP Core核心层主要是实现各算子逻辑、数据传输及Checkpoint容错机制等。通过对Flink引擎进行Native化改造,以实现性能的显著提升。
Apache Flink提供了SQL和DataStream API两种编程接口,它们并非完全独立的“模式”,而是不同层次的抽象,适用于不同的开发场景和需求。针对这两种编程接口的特点,OmniStream实现了两套框架进行端到端加速。
架构设计
SQL
OmniStream Flink SQL Native化架构如图1所示。
SQL/Table API输入后经过解析会生成执行计划,Java适配层获取该执行计划并初始化CPP侧相关Task,生成对应的算子链。初始化结束后,运行Task,从数据源读取数据,经过一系列算子处理后最终由Sink输出计算结果。
DataStream
OmniStream Flink DataStream Native化架构如图2所示。
DataStream API输入后经过解析会生成执行计划,Java适配层获取该执行计划并初始化CPP侧相关Task,生成对应的算子链。初始化结束后,运行Task,从Source数据源读取数据,经过一系列算子处理后最终由Sink数据源输出。
OmniStream性能数据
SQL
OmniStream基于Nexmark 22条SQL基准测试用例实现Flink组件计算性能平均提升100%+(默认支持q0、q1、q2、q13、q14、q21、q22,其余SQL默认回退)。

DataStream
OmniStream Flink DataStream Native编程接口,当前主要有以下两种用例。在WordCount场景下,OmniStream的性能达到开源版本Flink DataStream的1.31倍;在无状态的重计算场景中,OmniStream性能表现更为突出,达到开源版本方案的1.6倍。

