Flink等流计算框架和JDK8 Stream有什么区别

小编 495

Flink等流计算框架和JDK8 Stream有两个主要区别:一是本质区别;二是数据处理的区别。就本质区别而言,JDK8 Stream只是编程语言中的一个特性,很多语言都可以做;而Flink等流计算框架,内部的api包含stream这种特性,并形成了一系列的服务安装包、文档、api。

1.本质的区别

JDK8 Stream只是编程语言中的一个特性,很多语言都可以做,我们可以用这个特性做一个简单的数据结构处理,用起来很方便。

Flink等流计算框架,内部的api包含stream这种特性,更重要的是形成了一系列的服务安装包、文档、api,而且都支持分布式。

2.数据处理的区别

Flink等流计算框架是流处理,JDK8 Stream也是流处理,但两者在数据处理上的方式是不同的。

首先,针对数据来源和输出有多样化的问题,Flink等流计算框架⾃带很多组件可以解决,而JDK8 Stream只能通过编码处理。

其次,海量数据需要进⾏实时处理,Flink- 节点可以分布在不同机器的JVM上,多机器并⾏处理;而JDK8 Stream- 内部jvm单节点处理,单机内部并⾏处理。

最后,统计时间段内数据,但数据达到是⽆序的,Flink⾃带窗⼝函数和watermark处理迟到数据;而JDK8 Stream只能通过写代码处理。

延伸阅读

Flink流计算框架是什么

Flink流计算框架指的是“Apache Flink”,它是一个开源的流处理框架,应用于分布式、高性能、高可用的数据流应用程序。可以处理有限数据流和无限数据,即能够处理有边界和无边界的数据流。无边界的数据流就是真正意义上的流数据,所以Flink是支持流计算的。有边界的数据流就是批数据,所以也支持批处理的。不过Flink在流处理上的应用比在批处理上的应用更加广泛,统一批处理和流处理也是Flink目标之一。Flink可以部署在各种集群环境,可以对各种大小规模的数据进行快速计算。

随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性、吞吐量、容错能力以及使用便捷性等方面满足业务日益苛刻的要求。其中流式计算的典型代表是Storm和Flink技术。它们数据处理的延迟都是亚秒级低延迟,但是Flink相比Storm还有其他的一些优势,比如支持exactly once语义,确保数据不会重复。Storm支持at least once语义,保证数据不会丢失。保证数据不会重复的代价很高,比如数据下游操作属于幂等操作。另外从测试结果来看,Flink在低延迟的基础上还能保证高吞吐,优势明显。

在这种形势下,新型流式处理框架Flink通过创造性地把现代大规模并行处理技术应用到流式处理中来,极大地改善了以前的流式处理框架所存在的问题。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部