Flink是什么
- Flink是流处理框架,用于在无边界和有边界数据流上进行有状态的计算
- Flink其核心是用Java和Scala编写的分布式流数据流引擎
-
无边界流&有边界流是什么
什么是流
- “流”是个抽象的概念,对于输入输出设备的抽象;Java中数据输入/输出操作都是以”流”的方式进行
- 任何类型的数据都可以形成一种事件流,如机器日志,用户交互记录,信用卡流水等,所有这些数据都形成一种流
- 届时数据可以被作为无边界流,有边界流来处理
流分类
- 字符流(16位),字节流(8位);数据单位不同
- 输入流,输出流;数据流向不同
- 节点流,处理流;功能不同
节点流
- 指从一个特定的数据源读写数据,如操作文件,直接从文件中读取或往文件中写入字节流
处理流
- 是"连接"在已经存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能(好比在已经接了一条管子(节点流)的基础上,又套上几个更粗,具有特殊功能的管子(处理流)对流出的水进一步的处理)
四种基本流**InputStream,OutputStream,Reader,Writer**更具体的子类,如,文件流,缓冲流,数据流,转化流,输出流,输入流等,都具备特定功能或用来操作特定数据
无边界流
有状态计算结构是什么

- 有状态计算是指程序计算过程中,在Flink程序内部存储计算生产的中间状态结果,并提供给后续”函数”或算子计算结果使用;也就是每次计算新的数据进入到流式系统中都是基于中间状态结果的基础上进行计算,最终得出正确的统计结果
- 状态数据可以维系在本地存储中,这里的存储可以是Flink的堆内存或者推外内存,也可以借助第三方存储介质
有状态计算不需要将原始数据重新从外部存储中拿出来,从而进行全量计算;因此用户无须通过调度各种批量计算工具,从数据仓库中获取数据统计结果,再落地存储,这些操作都可以基于流式计算完成,可以极大地减轻系统对其他框架的依赖,减少数据计算过程中的时间损耗以及硬件存储。
与无状态计算区别
无状态计算不会存储计算过程中产生的结果,也不会用于下一步计算过程中,只会在当前计算流程中实行计算,计算完成之后输出结果,下条数据接入再次进行处理
