4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
fink介绍_董世森 学习的博客-CSDN博客_fink
来自 : CSDN技术社区 发布时间:2021-03-26

flink
1.Flink概述
1.1.Flink是一个批处理和流处理结合的统一计算框架 其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理 是业界最顶级的开源流处理引擎。
1.2.Flink与Storm类似 属于事件驱动型实时流系统。
2.Flink特点
2.1.Performance
2.2.性能 高吞吐量 低延迟
2.3.Scalable
2.4.可扩展性 1000节点以上
2.5.Fault-tolerant
2.6.容错 可靠性 checkpoint
2.7.Streaming-first
2.8.流处理引擎
3.Flink应用场景
3.1.Flink最适合的应用场景是低时延的数据处理场景 高并发处理数据 时延毫秒级 且兼具可靠性。
3.2.典型应用场景有
3.3.互联网金融业务。
3.4.点击流日志处理。
3.5.舆情监控。
4.Flink关键特性
4.1.低时延
4.2.提供ms级时延的处理能力。
4.3.Exactly Once
4.4.提供异步快照机制 保证所有数据真正只处理一次。
4.5.HA
4.6.JobManager支持主备模式 保证无单点故障。
4.7.水平扩展能力
4.8.TaskManager支持手动水平扩展。
5.Hadoop兼容性
5.1.Flink能够支持Yarn 能够从HDFS和HBase中获取数据
5.2.能够使用所有的Hadoop的格式化输入和输出
5.3.能够使用Hadoop原有的Mappers和Reducers 并且能与Flink的操作混合使用
5.4.能够更快的运行Hadoop的作业。
6.流式计算框架的性能对比
6.1.上图中蓝色柱形为单线程 Storm 作业的吞吐 橙色柱形为单线程 Flink 作业的吞吐。Identity 逻辑下 Storm 单线程吞吐为 8.7 万条/秒 Flink 单线程吞吐可达 35 万条/秒。当 Kafka Data 的 Partition 数为 1 时 Flink 的吞吐约为 Storm 的 3.2 倍;当其 Partition 数为 8 时 Flink 的吞吐约为 Storm 的 4.6 倍。由此可以看出 Flink 吞吐约为 Storm 的 3-5 倍。
7.Flink架构
7.1.Data storage底层是数据存储
7.2.Single node execution表示的是部署方式
7.3.Local Environment等表示的是不同的运行环境
7.4.Flink Local Runtime表示是运行线程
7.5.Flink Optimizer Flink Stream Builder等表示的是优化器
7.6.Common API表示的是Flink平台的API
7.7.Scala API和Java API表示的是对外提供的API
8.Flink技术栈
8.1.Flink提供了三种部署方案local Cluster Cloud即 本地部署 集群部署和云部署。
8.2.Runtime层是Flink流处理以及批处理时共用的一个引擎 以JobGraph形式接收程序。JobGraph即为一个一般化的并行数据流图 data flow 它拥有任意数量的Task来接收和产生data stream。
8.3.DataStream API和DataSet API都会使用单独编译的处理方式生成JobGraph。DataSet API使用optimizer来决定针对程序的优化方法 而DataStream API则使用stream builder来完成该任务。
8.4.Libraries层对应的是Flink不同的API对应的一些功能 处理逻辑表查询的Table 机器学习的FlinkML 图像处理的Gelly 复杂事件处理的CEP。
9.Flink核心概念 - DataStream
9.1.DataStream Flink用类DataStream来表示程序中的流式数据。用户可以认为它们是含有重复数据的不可修改的集合(collection) DataStream中元素的数量是无限的。
9.2.这里主要介绍了DataStream之间的算子操作
9.3.含有Window的是窗口操作 与后面的窗口操作相关连 之间的关系可以通过reduce fold sum max函数进行管关联。
9.4.connect 进行Stream之间的连接 可以通过flatmap map函数进行操作。
9.5.JoinedStream 进行Stream之间的join操作 类似于数据库中的join 可以通过join函数等进行关联。
9.6.CoGroupedStream Stream之间的联合 类似于关系数据库中的group操作 可以通过coGroup函数进行关联。
9.7.KeyedStream 主要是对数据流依据key进行处理 可以通过keyBy函数进行处理。
10.DataStream
10.1.Data source 流数据源的接入 支持HDFS文件、kafka、文本数据等。
10.2.Transformations 流数据转换。
10.3.Data sink 数据输出 支持HDFS、kafka、文本等。
10.4.Data source 流数据源的接入 支持HDFS文件、kafka、文本数据等
11.Flink数据源
11.1.批处理
11.2.Files
11.3.HDFS Local file system MapR file system
11.4.Text Csv Avro Hadoop input formats
11.5.JDBC
11.6.HBase
11.7.Collections
11.8.流处理
11.9.Files
11.10.Socket streams
11.11.Kafka
11.12.RabbitMQ
11.13.Flume
11.14.Collections
11.15.Implement your own
11.16.SourceFunction.collect
12.DataStream Transformation
12.1.数据流转换流程与Spark类似
12.2.从HDFS读取数据到DataStream中
12.3.接下来进行相关算子操作 如flatMap,Map,keyBy
12.4.接下来是窗口操作或算子操作
12.5.最后处理结果sink到HDFS
13.Flink应用运行流程 - 关键角色
13.1.TaskManager
13.2.负责实际计算工作 一个应用会分拆给多个TaskManager来进行计算。
13.3.Yarn的ResourceManager
13.4.资源管理部门 负责整个集群的资源统一调度和分配。
13.5.JobManager
13.6.负责应用的资源管理 根据应用的需要
13.7.向资源管理部门 ResourceManager 申请资源
13.8.Client
13.9.需求提出方 负责提交需求 应用 构造流图
14.Flink作业运行流程
14.1.Client Flink Client主要给用户提供向Flink系统提交用户任务 流式作业 的能力。
14.2.TaskManager Flink系统的业务执行节点 执行具体的用户任务。TaskManager可以有多个 各个TaskManager都平等。
14.3.JobManager Flink系统的管理节点 管理所有的TaskManager 并决策用户任务在哪些Taskmanager执行。JobManager在HA模式下可以有多个 但只有一个主JobManager。
14.4.TaskSlot 任务槽 类似yarn中的container用于资源隔离 但是该组件只包含内存资源 不包含cpu资源。每一个TaskManager当中包含3个Task Slot TaskManager最多能同时并发执行的任务是可以控制的 那就是3个,因为不能超过slot的数量。 slot有独占的内存空间 这样在一个TaskManager中可以运行多个不同的作业 作业之间不受影响。slot之间可以共享JVM资源, 可以共享Dataset和数据结构 也可以通过多路复用 Multiplexing 共享TCP连接和心跳消息 Heatbeat Message 。
14.5.Task任务执行的单元。
15.Flink on YARN
15.1.Flink YARN Client首先会检验是否有足够的资源来启动YARN集群 如果资源足够的话 会将jar包、配置文件等上传到HDFS。
15.2.Flink YARN Client首先与YARN Resource Manager进行通信 申请启动ApplicationMaster 以下简称AM 。在Flink YARN的集群中 AM与Flink JobManager在同一个Container中。
15.3.AM在启动的过程中会和YARN的RM进行交互 向RM申请需要的Task ManagerContainer 申请到Task Manager Container后 在对应的NodeManager节点上启动TaskManager进程。
15.4.AM与Fink JobManager在同一个container中 AM会将JobManager的RPC地址通过HDFS共享的方式通知各个TaskManager TaskManager启动成功后 会向JobManager注册。
15.5.等所有TaskManager都向JobManager注册成功后 Flink基于YARN的集群启动成功 Flink YARN Client就可以提交Flink Job到Flink JobManager 并进行后续的映射、调度和计算处理
16.Flink原理 (1)
16.1.用户实现的Flink程序是由Stream数据和Transformation算子组成。
16.2.Stream是一个中间结果数据 而Transformation是算子 它对一个或多个输入Stream进行计算处理 输出一个或多个结果Stream。
17.Flink原理 (2)
17.1.Source操作符载入数据 通过map()、keyBy()、apply()等Transformation 操作符处理stream。数据处理完成后 调用sink写入相关存储系统 如hdfs、hbase、kafka等。
17.2.Flink程序执行时 它会被映射为Streaming Dataflow。一个Streaming Dataflow是由一组Stream和Transformation Operator组成 它类似于一个DAG图 在启动的时候从一个或多个Source Operator开始 结束于一个或多个Sink Operator。
17.3.Source 流数据源的接入 支持HDFS文件、kafka、文本数据等。
17.4.Sink 数据输出 支持HDFS、kafka、文本等。
17.5.Stream是Flink计算流程中产生的中间数据。Flink是按event驱动的 每个event都有一个event time就是事件的时间戳 表明事件发生的时间 这个时间戳对Flink的处理性能很重要 后面会讲到Flink处理乱序数据流时 就是靠时间戳来判断处理的先后顺序。
18.Flink并行数据流
18.1.一个Stream可以被分成多个Stream分区 Stream Partitions 一个Operator可以被分成多个Operator Subtask 每一个Operator Subtask是在不同的线程中独立执行的。一个Operator的并行度 等于Operator Subtask的个数 一个Stream的并行度等于生成它的Operator的并行度。
18.2.One-to-one模式
18.3.比如从Source[1]到map()[1] 它保持了Source的分区特性 Partitioning 和分区内元素处理的有序性 也就是说map()[1]的Subtask看到数据流中记录的顺序 与Source[1]中看到的记录顺序是一致的。
18.4.Redistribution模式
18.5.这种模式改变了输入数据流的分区 比如从map()[1]、map()[2]到keyBy()/window()/apply()[1]、keyBy()/window()/apply()[2] 上游的Subtask向下游的多个不同的Subtask发送数据 改变了数据流的分区 这与实际应用所选择的Operator有关系。 Subtask的个数 一个Stream的并行度总是等于生成它的Operator的并行度。
19.Flink操作符链
19.1.Flink内部有一个优化的功能 根据上下游算子的紧密程度来进行优化。紧密度高的算子可以进行优化 优化后可以将多个Operator Subtask串起来组成一个Operator Chain 实际上就是一个执行链 每个执行链会在TaskManager上一个独立的线程中执行。
19.2.上半部分表示的是将两个紧密度高的算子优化后串成一个Operator Chain 实际上一个Operator Chain就是一个大的Operator的概念。途中的Operator Chain表示一个Operator keyBy表示一个Operator Sink表示一个Operator 他们通过Stream连接 而每个Operator在运行时对应一个Task 也就是说图中的上半部分3个Operator对应的是3个Task。
19.3.下半部分是上半部分的一个并行版本 对每一个Task都并行华为多个Subtask 这里只是演示了2个并行度 sink算子是1个并行度。
20.Flink窗口
20.1.Flink支持基于时间窗口操作 也支持基于数据的窗口操作
20.2.按分割标准划分 timeWindow、countWindow。
20.3.按窗口行为划分 Tumbling Window、Sliding Window、自定义窗口。
20.4.窗口按驱动的类型分为时间窗口 timeWindow 和事件窗口 countWindow 。窗口可以是时间驱动的 Time Window 例如 每30秒钟 也可以是数据驱动的 Count Window 例如 每一百个元素 。
20.5.窗口按照其想要实现的功能分为 翻滚窗口 Tumbling Window 无时间重叠 固定时间划分或者固定事件个数划分 滚动窗口 Sliding Window 有时间重叠 和会话窗口 Session Window 将事件聚合到会话窗口中 由非活跃的间隙分隔开 。
21.Flink常用窗口类型 (1)
21.1.按照固定的时间来划分窗口 叫做时间滚动窗口。
21.2.按照固定的事件发生数量来划分窗口 叫做事件滚动窗口。
21.3.Tumbling Windows 滚动窗口 窗口之间时间点不重叠。
22.Flink常用窗口类型 (2)
22.1.滑动窗口 窗口之间时间点存在重叠
22.2.对于某些应用 它们需要的窗口是不间断的 需要平滑地进行窗口聚合。比如 我们可以每30秒计算一次最近一分钟用户购买的商品总数。这个就是时间滑动窗口。
22.3.比如我们可以每10个客户点击购买 计算一次最近100个客户购买商品的总和 这个就是事件滑动窗口。
23.Flink常用窗口类型 (3)
23.1.Session Windows 会话窗口 经过一段设置时间无数据认为窗口完成。
23.2.将事件聚合到会话窗口中 由非活跃的间隙分隔开
24.Flink容错功能
24.1.checkpoint机制是Flink运行过程中容错的重要手段。
24.2.checkpoint机制不断绘制流应用的快照 流应用的状态快照被保存在配置的位置 如 JobManager的内存里 或者HDFS上 。
24.3.Flink分布式快照机制的核心是barriers 这些barriers周期性插入到数据流中 并作为数据流的一部分随之流动。
24.4.barrier是一个特殊的元组 这些元组被周期性注入到流图中并随数据流在流图中流动。每个barrier是当前快照和下一个快照的分界线。
24.5.在同一条流中barriers并不会超越其前面的数据 严格的按照线性流动。一个barrier将属于本周期快照的数据与下一个周期快照的数据分隔开来。每个barrier均携带所属快照周期的ID barrier并不会阻断数据流 因此十分轻量。
25.Checkpoint机制 (1)
25.1.Checkpoint机制是Flink可靠性的基石 可以保证Flink集群在某个算子因为某些原因 如异常退出 出现故障时 能够将整个应用流图的状态恢复到故障之前的某一状态 保证应用流图状态的一致性。
25.2.该机制可以保证应用在运行过程中出现失败时 应用的所有状态能够从某一个检查点恢复 保证数据仅被处理一次 Exactly Once 。另外 也可以选择至少处理一次(at least once)。
26.Checkpoint机制 (2)
26.1.每个需要checkpoint的应用在启动时 Flink的JobManager为其创建一个CheckpointCoordinator CheckpointCoordinator全权负责本应用的快照制作。用户通过CheckpointConfig中的setCheckpointInterval()接口设置checkpoint的周期。
26.2.CheckPoint机制
26.3.CheckpointCoordinator周期性的向该流应用的所有source算子发送barrier。
26.4.当某个source算子收到一个barrier时 便暂停数据处理过程 然后将自己的当前状态制作成快照 并保存到指定的持久化存储中 最后向CheckpointCoordinator报告自己快照制作情况 同时向自身所有下游算子广播该barrier 恢复数据处理。
26.5.下游算子收到barrier之后 会暂停自己的数据处理过程 然后将自身的相关状态制作成快照 并保存到指定的持久化存储中 最后向CheckpointCoordinator报告自身快照情况 同时向自身所有下游算子广播该barrier 恢复数据处理。
26.6. 每个算子按照步骤3不断制作快照并向下游广播 直到最后barrier传递到sink算子 快照制作完成。
26.7.当CheckpointCoordinator收到所有算子的报告之后 认为该周期的快照制作成功 否则 如果在规定的时间内没有收到所有算子的报告 则认为本周期快照制作失败。
27.Checkpoint机制 (3)
27.1.多source源checkpoint机制 本页以双source源为例。
27.2.假设算子C有A和B两个输入源。
27.3.在第i个快照周期中 由于某些原因 如处理时延、网络时延等 输入源A发出的barrier先到来 这时算子C暂时将输入源A的输入通道阻塞 仅接收输入源B的数据。
27.4.当输入源B发出的barrier到来时 算子C制作自身快照并向CheckpointCoordinator报告自身的快照制作情况 然后将两个barrier合并为一个 向下游所有的算子广播。
27.5.当由于某些原因出现故障时 CheckpointCoordinator通知流图上所有算子统一恢复到某个周期的checkpoint状态 然后恢复数据流处理。分布式checkpoint机制保证了数据被处理且仅被处理一次 Exactly Once 。
28.Flink在FusionInsight产品的位置
28.1.FusionInsight HD 提供大数据处理环境 基于社区开源软件增强 按照场景选择业界最佳实践。Flink是批处理和流处理结合的统一计算框架 ,用于高并发pipeline处理数据 时延毫秒级的场景响应 且兼具可靠性。
29.Flink的WebUI呈现
29.1.FusionInsight HD平台为Flink服务提供了管理监控的可视化界面接口 通过Yarn的Web UI界面 可查看Flink任务运行。
30.Flink与其他组件交互
30.1.在FusionInsight HD集群中 Flink主要与以下组件进行交互
30.2.HDFS Flink在HDFS文件系统中读写数据(必选)。
30.3.YARN Flink任务的运行依赖Yarn来进行资源的调度管理(必选)。
30.4.Zookeeper Flink的checkpoint的实现依赖于Zookeeper(必选)。
30.5.Kafka Flink可以接收Kafka发送的数据流(可选)。
30.6.

\"\" \"\" \"\" 点赞 \"\" \"\" 评论

本文链接: http://finkpartner.immuno-online.com/view-786086.html

发布于 : 2021-03-26 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616