从Apache Spark 2.3看大数据流式计算的发展趋势
Posted 金融科技顾问
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Apache Spark 2.3看大数据流式计算的发展趋势相关的知识,希望对你有一定的参考价值。
Apache Spark 2.3正式发布,其中一些具有里程碑意义的新特性:像Structured Streaming引入了低延迟的连续处理(continuous processing);支持流到流的join;改善Pandas UDFs 的性能来提升PySpark;支持调度引擎Kubernetes clusters;对MLlib的算法、特性、功能和扩展性的提升。这其中我最关注的还是新引入的流处理模式——连续模式(continuous mode)。
低延迟之争
众所周知Apache Spark 2.0的Streaming模式是微批处理(micro-batch),这种模式的优势在于消息传输的可靠性高,每个批处理记录仅被处理一次(即exactly once)。但由于其采取窗口和滑动时间间隔的机制,导致延迟性较高,一般在实际测试中多在秒级。这在某些对时延要求较高的应用场景下不是最佳解决方案。
对此,社区在Spark 2.3引入另外一种流处理模式:连续模式(continuous mode)。与制定触发时间间隔的微批模式不同,这种模式下流引擎连续拉取源数据、处理数据。新纪录到达即被处理,满足低延迟的场景需求(官方宣称是sub-millisecond即亚微秒级延迟)。可以说,Spark 2.3等于吸收了Storm的流处理模式——事件处理。但相应的,其消息保障也仅能达到至少一次的语义保证(at least once)。
我认为这是Spark社区对于大数据流式计算的一种妥协:由于微批模式在实际应用中对于实时性要求较高的场景支持不佳,引入连续模式将丰富Structured Streaming,提供给开发者更多的选择。此外,面对Flink、Storm等流式框架的竞争,Spark 2.3也能够支持较低延迟的应用,能够为过去基于Spark构建大数据的企业和厂商提供更好的兼容性。不过,由于Spark 2.3的连续模式仍然是实验性质的,在实际应用中与Flink相比有哪些优缺点,仍然依赖于后面实际测试中的结论。
Kafka Stream vs Spark
在大数据流计算中,Kafka Stream是新的竞争对手。由于Kafka目前作为实时流处理中的数据源应用非常广泛,基本上成为了事实标准,因此Kakfa Stream无需其他外部依赖的优点也非常明显。另外,Spark、Storm、Flink这些都是流式处理框架,天然需要开发者开放逻辑处理部分让框架调用,这样的开放、调试成本较高;而Kafka Stream提供的是基于Kafka的流处理库,开发起来就会非常方便,作为流式计算的标准数据源其使用成本也很低。
使用Spark需要构建一个集群,而Kafka Stream则不需要,而且Kafka本身也提供数据持久化,所以我预计未来Kakfa Stream将会对大数据流计算框架造成一定程度的冲击。不过,如果需要支持流上的复杂事件处理、数据科学、统计分析等场景,那么Spark、Flink这类框架是绕不开的,毕竟一个嵌入式类库仍无法替代数据库的作用。Kakfa Stream本质上还是一种轻量级的流计算模式,而Spark 2.3则提供了更丰富的数据处理和分析能力,如流与流的join、MLlib的强化等。
复杂事件处理(CEP)
复杂事件处理(CEP)目前在一些应用场景如量化交易、实时风控、市场趋势分析等领域使用较广。比较成熟的CEP技术方案如Esper、Apama、StreamBase等,针对大量、多个数据源进行实时处理,解决的是在持续事件中匹配模式的问题。目前结合流式计算的CEP方案已经有了一定的发展,像Flink提供了CEP API,支持快速定义复杂事件。此外,一些商用大数据厂商也提供了流上的复杂事件处理,像星环的Slipstream组件。
很遗憾Spark 2.3仍然没有对CEP提供原生支持。当然,CEP本身是一种综合方案,你可以通过其他CEP组件像Esper、Sodbase CEP等与Spark结合起来满足复杂事件的处理要求。我预计SQL on Stream和CEP在未来将成为流式计算的发展方向,这种综合性解决方案无疑能满足企业更多大数据场景的需求。
流式机器学习
Spark 2.3改进了MLlib的算法、性能和扩展性,使得流式机器学习的能力更加丰富和完整。例如增加了API支持深度学习图像分析用例、对Structured Streaming机器学习API增强等。实时流计算+机器学习并不是一个新故事,随着人工智能的热潮,实时大数据场景下的数据科学正在迅速发展。例如交易所、证券公司的市场违规监控、异常交易监控、场外配置识别,银行信用卡盗刷监控等等,均需要在数据流上通过决策树、随机森林、SVM等分类算法或K-means等聚类算法进行分析。
从技术发展和行业应用来看,大数据流式计算本身是一种综合性解决方案,不仅需要技术框架本身提升实时模式、SQL、机器学习API的能力,也需要支持更丰富的应用场景。从Spark 2.3的新特性也能够看出流式计算框架的这一发展趋势。
金融科技精华文章
多年金融服务、金融科技咨询经验,曾服务于金融集团、投资银行和FinTech公司,为多家商业银行、证券公司、保险机构提供IT战略规划与信息化解决方案,在金融科技、大数据与人工智能在金融业的应用、金融风险管理、数据治理和信息化战略等方面拥有丰富的经验。
以上是关于从Apache Spark 2.3看大数据流式计算的发展趋势的主要内容,如果未能解决你的问题,请参考以下文章
快速大数据:Apache Flink与Apache Spark处理流式数据比较
流式大数据处理的三种框架:Storm,Spark和Samza