Kevin的Flink学习日记(二)——Flink的基本组件与Flink的流批概念

一、Flink的基本组件

1.DataSource-- 数据源

顾名思义,DataSource也就是数据源,可以来源于任何地方。

2.Transformation-- 算子

Transformation,算子,是一个计算单位,意味着你如何去处理来自DataSource的数据

3.DataSink – 数据输出

数据输出的位置可以自行选择,数据库、分布式文件系统、文件等等。

小结:

三个基本组件很简单,就好比是一个方法,与 入参+逻辑+返回值 的逻辑模型一致。

二、Flink的流处理与批处理

Flink的计算模型可以分为Streaming流处理与Batch批处理。

那么他们的各自的基本思想是如何的呢?

1.流处理

流处理,是指数据源是源源不断的涌入,或者说系统是不知道数据源的边界情况的。

这是什么意思呢?

例如一个文件,系统在文件读取完毕后便知道其准确的数据大小。而如果系统引入一个外部输入源,即使可能这个外部输入源在今天之后便不再向你的Flink系统发送任何数据,但只要他们之间保持连接,对于你的Flink系统而言,输入源的情况就是未知的,它就会傻傻的保持服务开启并且等待下一条数据的到来。

2.批处理

批处理是否就是意味着系统知晓数据源的准确大小呢?

我认为答案是未必,对于Flink而言,Flink的批处理系统是建立在流处理模型之上的。这句话如何理解呢?

Flink流批图
上面是Flink官网的图片,可以看到一个unbounded stream和一个bounded stream。

unbounded stream,无限流,你可以将灰色竖条看做一条数据,然后想象“管道”最左侧有一个透明的处理层,数据源源不断地从future流入,每条数据都处理层处理后,然后向外流出。
bounded stream,有限流,你可以看到图片中将多条数据进行了一个分组,这时候每一组数据便形成一个批量化的数据,然后经由处理层进行处理。但重点在于,它的数据来源依然对系统不可知的,所以与流处理真的存在本质上的区别吗?

所以我认为,Flink的批处理可以看做一种细粒度更大的流处理模式(目前我还不知道它是否也良好支持大量但有限的数据量的计算,如果也支持这种模型,相较而言,Spark的处理模型可能更加专业),与传统的批处理模型还是存在设计层面的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值