首页 / 新闻

12.

10

2015

业界SQL支持最强,可实时数据挖掘的流计算引擎-- Transwarp Stream

技术博客

Transwarp Stream是星环专为企业级用户打造的流计算引擎,主要应用于实时性较强的应用场景。比如,金融行业需要对市场波动进行实时预警;交通行业需要将卡口数据实时入库,并在线使用图像识别鉴别套牌车进行预警等;银行业务需要在线分析业务,及时鉴别欺诈等违规行为;采用复杂物联网的行业,如机场、风电等,需要将大量传感器数据进行实时分析和数据挖掘。

 

企业级用户往往对流处理产品在实时性、吞吐量、高可用性、易用性、安全性和稳定性等方面有着极其苛刻的要求。星环凭借自身强大的技术实力,以及国内最多最复杂的流处理案例经验,开发出满足这些苛刻要求的Transwarp Stream流计算引擎:

 

  • 实时性:企业级用户通常对流处理应用有较高的实时要求,而为了发掘性能的最大潜能,好的计算引擎不仅能保证自身的高效,同时也必须保证部署环境的适配。Transwarp Stream优化了任务调度策略,大大降低序列化时间,并与Holodesk无缝链接,极大地提升了数据存储效率。此外,由于星环率先在国内多家企业部署了多套复杂的流处理应用,针对各种复杂的部署环境,总结出一套能适配各种复杂环境的优化参数和最佳配置,能最大程度地发挥集群性能。

  • 高吞吐量:高吞吐量是实时性和并发度的综合体现。实时性意味着流处理对单个消息的反应时间短;而高并发度意味着单位时间内能同时处理更多的消息。两者结合就意味着单位时间内能处理更多的消息并且没有积压,也就是高吞吐量。Transwarp Stream在提高实时性的同时,消除了框架中的单点瓶颈,提高了并发度。比如,Transwarp Stream可以启动多个Receiver,并且每个都具有Locality以提高并发度,并减少网络传输。

  • 高可用性:高可用性一般是指系统在异常状态下的异常恢复和持续工作的能力,而有些苛刻的用户会对异常状态下的数据可靠性有较高要求。因此,Transwarp Stream不仅保证框架本身的各个组件在各种异常状态下能正常运作,并且还提供At least Once和Exactly Once的语义支持。

  • 易用性:入门难度大是好多企业无法尽快转向大数据流处理平台的技术壁垒。星环自主研发的StreamSQL,使用户有机会用SQL来实现流处理业务逻辑,极大地降低用户的入门门槛。用户在选择使用编程接口的时候可以使用星环的JobServer提交、监控流处理应用,降低部署的运维成本;而用户一旦选择使用StreamSQL,则可以通过命令行、JDBC或者ODBC等常用的SQL交互方式,与Inceptor交互,大大降低学习成本。

  • 安全性:Transwarp Stream通过Kerberos打通各个组件的用户验证,同时对数据加密,提供细粒度的权限控制,保证数据读写的安全性,同时也保证数据读写可追踪。同时,Transwarp Stream还保证多租户情况下的数据隔离、资源隔离、以及资源合理共享与调度。

  • 稳定性:大多数流处理应用有24*7的运行要求,这意味着流处理在追求性能的同时,也必须保证稳定性。星环在国内拥有最广的流处理部署环境,为Transwarp Stream的稳定性打下了良好的基础。Transwarp Stream具有back-pressure功能,在积压的情况下能自动均衡压力,调整数据流入速率;也可以在积压无法避免的情况下,给用户优先处理最新数据的机会。甚至在性能极差、异构的集群环境下也能保证正常运作。

 

 

Transwarp Stream架构主要包括三层,自下而上分别是存储层、计算层以及接口层。

 

存储层可适配已有的组件包括Holodesk、Hyperbase等。

 

计算层包括几个管理模块: 输入管理Source Manager,应用管理Application Manager,分布式执行引擎Distributed Execution Engine,存储管理Storage Manager,输出管理Sink Manager。

 

Source Manager是源数据与执行引擎间的桥梁,主要负责与源数据进行连接,在收到需要的数据时通知执行引擎。它通过共享输入来大大减少网络传输,提高了处理效率,并且根据执行引擎的back-pressure进行流控。

 

Application Manager存储运行时所有的状态信息,用于管理所有的流应用,以及多租户状态下应用之间的隔离,用户可以通过它进行查询和终止SQL。

 

Distributed Execution Engine是Transwarp Stream的核心部件,它负责调度和执行所有流处理相关的执行计划。它针对流处理的迭代计算进行算法优化,并结合运行时信息,可重新生成更高效的执行计划。

 

Storage Manager是执行引擎与存储层之间的桥梁,主要通过缓存的方式增加迭代计算中中间计算数据、结果数据在内存中的命中率。

 

Sink Manager是结果输出模块。不同于Storage Manager主要通过缓存来提高读取数据的效率,Sink Manager通过对输出结果的重组,来提高存储计算结果的速度。

 

接口层,包括StreamSQL 和Data Mining。StreamSQL通SHELL/JDBC/ODBC的方式连接SQL编译器,得到执行计划后进入计算层计算。而Data Mining通过编程API的方式直接对接计算层。

 

StreamSQL

 

Transwarp Stream SQL是星环推荐多数用户采用的开发方式,可用于一般的业务场景,包括用于交通、电力、银行等行业的实时入库ETL工具,用于金融、银行行业的规则报警工具等。相对于采用编程的方式去实现流应用,采用SQL具有以下优势:

 

  • 极高的易用性。以往的流处理平台有较高的入门门槛,比如Spark Streaming,Storm,必须对框架以及流处理本身,甚至是底层技术比较熟悉的情况下,才能写出高效的流处理程序。这大大地限制了流处理的推广和应用。而使用StreamSQL,用户只需要有编写普通SQL的经验,就可以写出高效、安全、稳定的流处理应用。

  • 性能提升。在一些条件下,采用StreamSQL的方式甚至比编程方式获得更高的性能提升。这是因为StreamSQL做了一些特殊优化,在编程模式下无法轻易实现。比如,多条针对同一个输入流的SQL只需读取一份数据;增加迭代框架,使得原本无法利用API进行优化的迭代计算效率大大提升。

  • 产品化程度高。通过编程的方式来实现流处理的另一个问题是产品化程度非常低。由于编程有较高的自由度,出现问题的可能性很大;而又由于编程的方式将流处理平台和用户程序绑定在一起,用户没办法很好地区分是自己代码的问题还是平台的问题,导致无法及时地分析出错原因。SQL作为一个通用的接口将大大地提高产品化程度。

  • 迁移成本低。用户原有的业务逻辑很多是通过SQL实现的,如果通过编程的方式迁移到流上,迁移成本非常高,还不能保证迁移后的逻辑是否正确。而一旦采用StreamSQL的方式,用户只需要改少量,迁移成本几乎接近零。

 

StreamSQL有以下技术指标:

 

99%的ANSI SQL 2003的支持率

为了降低应用迁移成本, StreamSQL使用了完整的SQL编译器,支持ANSI SQL 92和SQL 99标准,支持ANSI SQL 2003 OLAP核心扩展,可以满足绝大部分现有业务对SQL的要求,方便应用平滑迁移。

 

强大的优化器提升性能

除了更好的SQL语义分析层以外,StreamSQL包含强大的优化器保证SQL在引擎上有最佳的性能。包含3级优化器:首先是基于规则的优化器,应用静态优化规则并生成一个逻辑执行计划,其次是基于成本的优化器,通过衡量多个不同执行计划的CPU,IO和网络成本,来选择一个更合理的计划并生成物理执行计划;最后是代码生成器,对一些比较核心的执行逻辑生成更高效的执行代码或者Java Byte Code,从而保证SQL业务在分布式平台上有最佳性能。

 

支持按数据字段时间切分滑动窗口和跳动窗口等

常见的流框架一般只针对系统时间做窗口切分,但这往往达不到实际应用的要求。因此,StreamSQL实现了复杂内部逻辑,使得用户通过简单的SQL语法就能指定特定数据字段作为窗口的依据。用户可以通过与SQL 2003兼容的Window语法来创建滑动窗口或者跳动窗口,并在窗口 上进行各种复杂的聚合操作。

 

支持多种流输入方式,包括Socket,文件以及Kafka等

 

支持多种输出方式,包括Hyperbase,Hive以及Holodesk等

 

支持企业数据总线,也就是从一个流读入数据,再将其输入另一个流,比如一个常见的企业数据总线以Kafka为存储中间件

 

支持运行时隔离,保证多用户安全、稳定运行各自StreamSQL

常见流处理应用要么物理上完全隔离,但无法共享硬件资源也不方便管理;要么部署在同一个集群,但可能导致资源分配不均,甚至有误操作影响其它用户的可能。而StreamSQL抽离出运行时隔离概念,能保证用户启动、查看和停止流处理应用的操作只能针对当前所在隔离层进行。

 

新增的流相关SQL与ANSI SQL 2003无缝兼容

 

 

应用场景

 

针对物联网的数据挖掘

 

Transwarp Stream支持从高速产生数据的物联网介入流计算引擎,在实时计算过程中进行数据挖掘,包括统计和机器学习等多种算法,从中挖掘出有价值的信息及时报警或者进一步分析。

 

在进一步分析过程中,Transwarp Stream支持将实时数据流转成列式存储存放到Holodesk上,可以利用Transwarp Inceptor使用SQL对准实时的数据进行Ad-hoc分析以及利用R进行数据挖掘等。

 

 

针对交通卡口系统的实时入库

Transwarp Stream通过分布式消息系统实时采集来自各个卡口终端的数据,在此基础上进行套牌分析、集中布控、区间测速等复杂业务,并将数据实时写入Hyperbase。

 

通过Transwarp Inceptor,用户可以将Hyperbase中的数据进一步进行统计分析、图片查询和数据挖掘等。

 

针对金融行业的实时预警

Transwarp Stream将市场数据、交易信息等实时数据通过分布式消息系统,读入计算引擎。计算引擎通过内置金融模型对市场数据进行模拟计算,实现实时监控。对于异常市场数据或者交易信息,将进行实时预警。