《从 1 到 100 深入学习 Flink》--- Apache Flink 介绍
目录:
1,flink 流介绍 场景
3,flink 主要特性
4,flink 主要优点
5,总结
1,背景
Flink 是一种流式计算框架,首先理解一下什么是流呢?流就是一直在运动或者说流动的数据,它是源源不断的产生的,是无界限的。其实我们日常生活是经常接触到的。比如说,应用实时产生的日志,金融股票交易,监控平台的告警,这些都会不断的产生连续的流。
那么我为什么会接触到 Flink 呢?因为当时负责部分是规则引擎,来做规则的匹配和规则处理,通俗地将其实是预警监控平台的告警部分。首先数据接入来源于 Kafka/DataHub(阿里消息中间件),采集到的布控数据会直接往 kafka 里塞,然后告警这边需要从 kafka/datahub topic 里面实时读取到布控数据,并将读取到的布控数据做一些 聚合/转换/计算 等操作,然后将计算后的结果通过具体告警规则过滤,将符合规则的告警数据推送到 MQ 或者持久化到数据库,接着做出相应的告警措施展示,可以通过前台页面显示也可以推送到 App 等。
[图片上传失败...(image-613511-1551194924287)]
那么为什么需要监控预警平台呢?无非希望能够尽早的发现问题或者预判问题,然后把消息给告警出来,有助于客户做出相应的部署和解决。由于处理的数据都是实时产生的,并且需要实时处理告警,于是乎,我现在就在接触流式计算框架 Flink。
2,什么是 Flink
首先 Flink 是流式处理引擎,即只要数据一直在产生,计算就持续地进行,当任务执行完毕后仍会占用计算机资源。当然它还支持批处理,即在预先定义的时间内运行计算,当完成时释放计算机资源。不过 Flink 的优势还是在实时流处理上。



flink 的整体架构了解:

从下至上:
1、部署:Flink 支持本地运行、YARN 管理的集群模式上运行(生产上通过 YARN 管理居多)。
2、运行:Flink 的核心是分布式流式数据引擎框架,即数据以一次一个事件的形式被处理。
3、API:DataStream、DataSet、Table、SQL API。
flink 数据流向了解:

1、Source: 数据源,Flink source 可以分为 4 类:本地集合 source、文件 source、网络套接字 source、自定义的 source。自定义的 source 常见的有 kafka、RocketMQ、RabbitMQ、DataHub等,当然可以自定义 source。
2、Transformation:数据转换操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,可以将数据转换计算成你想要的数据。
3、Sink:数据接收器,Flink 将转换计算后的数据发送的地点 ,你可能需要存储下来,Flink 常见的 Sink 大概可以分为这么几类:写入文件、打印出来、写入 socket 、自定义的 sink 。自定义的 sink 常见的有 kafka、DataHub、RocketMQ、MySQL、ElasticSearch、Orcale、Redis 等,同理你也可以定义自己的 sink。
为何使用 Flink
1,分布式流式框架,计算精确,低延迟,可以支持大规模运行。
2,Flink 的容错能力是轻量级的,允许系统保持高并发。
3,Flink 可以在上千个点在大规模集群上运行。除了支持独立集群部署外,Flink 还支持 YARN。
4,Flink 在 JVM 中提供了自己的内存管理,使其独立于 Java 的默认垃圾收集器。
5,Job Manager:主进程(也称为作业管理器)协调和管理程序的执行。 它的主要功能有任务调度,管理checkpoint ,故障恢复等。
Task Manager:从 Job Manager 处接收需要部署的 Task。Task Manager 是在 JVM 中的一个或多个线程中执行任务的工作节点。 任务执行的并行性由每个 Task Manager 上可用的任务槽决定。Task Manager 的一个 Slot 代表一个可用线程,该线程具有固定的内存,注意 Slot 只对内存隔离,没有对 CPU 隔离。可以共享有更好的资源利用率。
最后
最近也没有更新文章了,现在该写起来了。这篇的话就简单介绍了下我为何接触到 Flink,以及 Flink 的一些特性和优点。在此记录,希望能够帮助大家理解一点。
网友评论