欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Flink-初识

Flink-初识

2025/2/8 1:02:08 来源:https://blog.csdn.net/lu070828/article/details/144874517  浏览:    关键词:Flink-初识

一、有界流和无界流

有界流(Bounded Stream):具有明确的开始和结束时间的数据流,且数据量是确定的

无界流(Unbounded Stream):没有结束时间的数据流

流是数据的自然栖息地,流可以来自网络服务器的事件、证券交易所的交易,工厂车间机器上的传感器等。但是当我们分析数据时,我们既可以将其当作有界流也可以当作无界流,选择哪种范式会产生深远的影响。

二、批处理和流处理

批处理(Batch processing):它是处理有界数据流时的工作范式。在这种操作模式下,可以选择在产生任何结果之前摄取整个数据集,这意味着例如,可以对数据进行排序、计算全局统计数据或生成总结所有输入的最终报告。

流处理(Stream processing):它涉及无界数据流。至少从概念上讲,输入可能永远不会结束,因此您被迫在数据到达时不断处理数据。

三、Flink处理逻辑

在Flink中,应用程序由可以由用户定义的运算符转换的流数据流组成。这些数据流形成有向图,从一个或多个源开始,以一个或多个接收器结束。

程序中的转换和数据流中的运算符之间通常存在一对一的对应关系。然而,有时一个转换可能由多个运算符组成。

Flink除了可以处理来自流源的实时数据(Kafka或Kinesis),还可以处理来自各种数据源的有限历史数据。类似地,Flink应用程序生成的结果流可以发送到可以作为接收器连接的各种系统。

Flink中的程序本质上是并行和分布式的。在执行过程中,一个流有一个或多个流分区,每个运算符有一个或多个运算符子任务。运算符子任务相互独立,在不同的线程中执行,可能在不同的机器或容器上执行。运算符子任务的数量是该特定运算符的并行性。同一程序的不同运算符可能具有不同级别的并行性。

流可以在两个运算符之间以one-to-one (或转发)模式或redistributing (重新分配)模式传输数据:(类似与spark中的宽窄依赖)

1、One-to-one

(例如上图中Source和map()运算符之间)元素的分区和排序没有发生变化。

2、Redistributing 

(例如上面的map()和keyBy()/window()之间,以及keyBy()/window()和Sink之间)元素的分区和排序发生了变化。

有状态计算

Flink的操作可以是有状态的。这意味着一个事件的处理方式可能取决于它之前所有事件的累积效果。状态可以用于简单的事情,例如计算每分钟显示在仪表板上的事件,或者用于更复杂的事情,例如欺诈检测模型的计算功能。

Flink应用程序在分布式集群上并行运行,有状态运算符的并行实例集实际上是一个分片kv存储。每个并行实例负责处理特定key组的事件,并且这些key的状态保存在本地。可以选择将状态保留在JVM堆上,,如果它太大,则保留在磁盘上。

容错

Flink能够通过状态快照和流重放的组合提供容错、精确一次的语义。

这些快照捕获分布式管道的整个状态,记录输入队列中的偏移量,以及在作业图中由于摄取到该点的数据而导致的状态。当发生故障时,源会倒带,状态会恢复,处理会恢复。如上所述,这些状态快照是异步捕获的,而不会妨碍正在进行的处理。

四、下载并安装

1、下载并上传

Flink目前最新的版本是1.20.0,下载链接如下:

https://dlcdn.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz

2、解压

cd //opt/software/

tar -xzf flink-*.tgz

bin/目录包含flink二进制文件以及几个管理各种作业和任务的bash脚本
conf/目录包含配置文件,包括Flink配置文件
examples/目录包含可按原样与Flink一起使用的示例应用程序

3、Java安装

官方要求的版本是Java11,之前已经安装过该环境,这里就不再操作了。

4、启动本地集群

./bin/start-cluster.sh

Flink现在作为后台进程运行。可以使用以下命令检查其状态:

ps aux | grep flink

 此外还可以通过访问cdh3:8081导航到Web UI以查看Flink仪表板并查看集群是否已启动并正在运行

我们看下端口情况

netstat -ntpl

目前的情况,只能从本地浏览器访问8081端口,从虚拟机外是无法访问的。

我们修改下conf/config.yaml 中的相关配置

重新启动观察端口情况

现在就可以从虚拟机外部访问了

五、官方例子

 Flink附带示例Job,我们可以在examples文件夹中找到这些作业。

下面我们来运行WordCount示例

./bin/flink run examples/streaming/WordCount.jar

我们可以通过查看日志来验证输出

tail log/flink-*-taskexecutor-*.out

此外,还可以检查Flink的Web UI以监视群集和正在运行的作业的状态。

在这里,对于作业执行,Flink有两个运算符。第一个是源运算符,它从集合源读取数据。第二个是转换运算符,它聚合字数。

还可以查看作业执行的时间线

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com