大数据技术中常见的大数据实时计算引擎有Spark、Storm、Flink等,目前有很多公司已经将计算任务从旧系统 Storm 迁移到 Flink。
Storm
Storm 是一个免费、开源的分布式流处理计算框架,具有低延迟、容错、高可用等特性。它可以轻松可靠地处理无限数据流,是实时分析、在线机器学习、持续计算、分布式 RPC 、ETL 的优良选择。
主要特性:
极其广泛的用例:
可用于流处理、连续计算、分布式 RPC 等等
可扩展:
要扩展拓扑,您所要做的就是添加机器并增加拓扑的并行度设置
保证不丢失数据:
实时系统必须对成功处理的数据有很强的保证,而 Storm 能保证每条消息都会被处理
容错:
如果在执行计算期间出现故障,Storm 将根据需要重新分配任务。Storm 确保计算可以永久运行(或直到你终止计算)
编程语言无关:
Storm 拓扑和处理组件可以用任何语言定义,几乎任何人都可以访问 Storm
缺点:
无状态,需用户自行进行状态管理
没有高级功能,如事件时间处理、聚合、窗口、会话、水印等
详见:
https://github.com/apache/storm
http://storm.apache.org/index.html
Flink
Flink 是一个同时面向数据流处理和批量数据处理的开源框架和分布式处理引擎,具有高吞吐、低延迟、高扩展、支持容错等特性。
主要特征:
流批:
流媒体优先运行时,支持批处理和数据流程序
优雅:
Java 和 Scala 中优雅流畅的 API
高吞吐和低延迟:
运行时同时支持非常高的吞吐量和低事件延迟
容忍数据的延时、迟到和乱序:解决基于事件时间处理时的数据乱序和数据迟到、延时的问题
灵活:
非常灵活的窗口定义
容错:
提供了可以恢复数据流应用到一致状态的容错机制
背压:
流媒体中的自然背压
缺点:
社区不如 Spark 那么强大,但在快速成长
流处理远远流行于批处理