开源大数据处理技术从 Hadoop 开始,经历了 Storm,Spark,现在又到 Flink 的发展过程,计算模型也经历了从批到流的转换,目前的新趋势也已经开始朝着批流融合方向演进。
从媒体的最新资讯推送,到购物狂欢的实时数据大屏,实时计算已经应用到了多个生活、工作场景,随着业务的快速增长,我们对实时计算的需求越来越高。
可用于实时计算的开源大数据计算引擎有多种选择,比如 Storm、Samza、Flink 等,而支持流批一体的只有 Spark 和 Flink。目前,多家企业已经或正在将计算任务从旧系统 Storm 迁移到 Flink,腾讯便是其中之一。
腾讯实时计算团队的任务是为业务部门提供高效、稳定和易用的实时数据服务。其每秒接入的数据峰值达到了 2.1 亿条,每天接入的数据量达到了 17 万亿条,每天的数据增长量达到了 3PB,每天需要进行的实时计算量达到了 20 万亿次。
其早期的实时计算平台基于 Storm 构建,但随着业务规模不断扩大,业务需求不断增多,原先的实时计算平台遇到了很多问题, Storm 的一些缺陷也渐渐暴露出来。在此背景下,腾讯实时计算团队选择用 Flink 替换 Storm 作为新一代的实时流计算引擎,对社区版的 Flink 进行了深度的优化,并在此之上构建了一个集开发、测试、部署和运维于一体的一站式可视化实时计算平台——Oceanus。
Storm vs Flink
为什么腾讯会转向 Flink?很简单,我们不妨来做下对比。
Storm
Storm 是一个免费、开源的分布式流处理计算框架,具有低延迟、容错、高可用等特性。它可以轻松可靠地处理无限数据流,是实时分析、在线机器学习、持续计算、分布式 RPC 、ETL 的优良选择。
Storm 的拓扑(Topology)被设计为有向无环图(DAG)的形状。图表上的边缘被命名为 Stream,它是无限的元组序列,以分布式方式并行处理和创建,将数据从一个节点指向另一个节点。而这个图上有两种节点,一是 Spout,拓扑中 Stream 的来源,二是 Bolt,拓扑中的所有处理都是用它完成的。Topology 类似于 Hadoop 的 MapReduce,但有一个关键的区别,Storm 拓扑会永远运行,除非你杀死它,而 MapReduce 作业必定结束。
主要特性:
极其广泛的用例:可用于流处理、连续计算、分布式 RPC 等等
可扩展:要扩展拓扑,您所要做的就是添加机器并增加拓扑的并行度设置
保证不丢失数据:实时系统必须对成功处理的数据有很强的保证,而 Storm 能保证每条消息都会被处理
容错:如果在执行计算期间出现故障,Storm 将根据需要重新分配任务。Storm 确保计算可以永久运行(或直到你终止计算)
编程语言无关:Storm 拓扑和处理组件可以用任何语言定义,几乎任何人都可以访问 Storm
缺点:
无状态,需用户自行进行状态管理
没有高级功能,如事件时间处理、聚合、窗口、会话、水印等
详见: