首页 理论教育 实时数据处理技术:提高数据处理效率的有力工具

实时数据处理技术:提高数据处理效率的有力工具

时间:2023-07-01 理论教育 版权反馈
【摘要】:针对实时数据处理,目前主流的实时数据处理框架有Storm、Spark、Samza、Flink。毋庸置疑,Storm 成为大规模流数据处理的先锋,并逐渐成为工业标准。Spark 的运行是建立在批处理之上的,因此,后续加入的Spark Streaming 也依赖于批处理,实现了微批处理,接收器把输入数据流分成短小批处理,并以类似Spark 作业的方式处理微批处理。Samza 的构建严重依赖于基于log 的Kafka,两者紧密耦合。

实时数据处理技术:提高数据处理效率的有力工具

针对实时数据处理,目前主流的实时数据处理框架有Storm、Spark、Samza、Flink。下面简单介绍这些技术的特点。

1.Storm

Storm 最开始是由Nathan Marz 和他的团队于2010 年在数据分析公司BackType 开发的,后来BackType 公司被Twitter 收购,接着Twitter 开源Storm 并在2014 年成为Apache 顶级项目。毋庸置疑,Storm 成为大规模流数据处理的先锋,并逐渐成为工业标准。Storm 是原生的流处理系统,提供low-level 的API。Storm 使用Thrift 来定义topology 和支持多语言协议,使得人们可以使用大部分编程语言开发,Scala 自然包括在内。Trident 是对Storm 的一个更高层次的抽象,Trident 最大的特点是以batch 的形式进行流处理。Trident 简化topology 构建过程,增加了窗口操作、聚合操作或者状态管理等高级操作,这些在Storm 中并不支持。对应于Storm 的At most once 流传输机制,Trident 提供了Exactly once 传输机制。Trident 支持Java、Clojure 和Scala 语言开发。

2.Spark

当前流式处理框架中,Spark 是非常受欢迎的批处理框架,包含Spark SQL、MLlib 和Spark Streaming。Spark 的运行是建立在批处理之上的,因此,后续加入的Spark Streaming 也依赖于批处理,实现了微批处理,接收器把输入数据流分成短小批处理,并以类似Spark 作业的方式处理微批处理。可以通过控制SparkStreaming 中微批处理的时间来控制数据接收速度,同时,也可以通过外部参数控制。SparkStreaming 相对于Storm 来说,吞吐量大,同时,可以在流批次中使用Spark 的各种API 扩展。Spark Streaming 提供高级声明式API (支持Scala、Java 和Python 语言开发)。(www.xing528.com)

3.Samza

最开始是专为LinkedIn 公司开发的流处理解决方案,并和LinkedIn 的Kafka 一起贡献给社区,现已成为基础设施的关键部分。Samza 的构建严重依赖于基于log 的Kafka,两者紧密耦合。Samza 提供组合式API,当然,也支持Scala 语言开发。

4.Flink

Flink 是个相当早的项目,开始于2008 年。Flink 是原生的流处理系统,提供high level的API。Flink 也提供API 来像Spark 一样进行批处理,但两者处理的基础是完全不同的。Flink 把批处理当作流处理中的一种特殊情况。在Flink 中,所有的数据都看作流,是一种很好的抽象,因为这更接近于现实世界

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈