2.flink技术概览
Posted mask哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.flink技术概览相关的知识,希望对你有一定的参考价值。
1.流处理引擎的演变
第一代,2011年,专注于毫秒级延迟处理数据并保证系统故障时事件不会丢。缺点:api非常底层,没对流式应用结果饿准确性和一致性提供内置保障,结果完全取决于事件到达的时间和顺序。 lamda架构
第二代,2013,提供了完善的故障处理机制,即便出现故障,能保证每条记录仅参与一次结果运算。缺点:通过增加延迟,保证高吞吐量和故障处理,结果仍然依赖事件到来的时间和顺序。
第三代,2015,解决了结果对事件到来时间以及顺序的依赖问题。
2.flink特点
- 事件时间语义:能针对无序事件提供一致性、精确的结果;
- 处理时间语义:能用在具有低延迟需求的应用中
- 提供精确一次(exactly-once)的状态一致性保障
- 低延迟,高吞吐
- 提供层次化api
flink关系型api
SQL
table api
dataset api
DataStream api
process function(处理函数)
- 存储系统连接器(connector)
kafka
cassandra
es
jdbc
kinesis
文件系统:hdfs/s3
- 允许在不丢失应用状态下进行作业程序代码更新
- 提供了可定制的系统&应用指标集合(metrics)
- 不仅支撑流处理,也支撑批处理
- 事件驱动
- 支持反压机制
- 支持自定义内存管理
- 支持基于分布式快照(checkpoint)机制实现的容错
3.有状态流处理应用
- 事件驱动型应用
实时推荐
模式识别或复杂事件处理(金融风控)
异常检测(网络入侵检测)
- 数据管道应用
系统之间数据同步
低延迟方式获取,转换并插入数据
- 数据分析应用
应用场景
手机网络监控
移动应用中的用户行为分析
消费者技术中的实时数据即席分析
4.行业应用
电商和市场营销:数据报表、广告投放、业务流程需要
物联网(IOT):传感器实时数据采集和显示、实时报警、交通运输
电信业:基站流量调配
银行和金融业:实时结算和通知推送、实时检测异常行为
5.flink vs spark streaming
- 架构不同
- spark是微批处理;数据模式是RDD,小批处理数据集合;运行时架构,spark将DAG划分为不同步stage,等stage处理完成,才到下个stage
- flink是流处理;数据模型是数据流以及事件;是标准的流处理模式,一个事件在在一个节点处理完成,直接发往下一个节点处理,不等待;
6.flink部署方式
- mesos
- k8s
- yarn
session-cluster模式
per-job-cluster模式
- standalone(集群模式:master/worker)
7.流的类型
有界流:离线数据处理->dataset
无界流:实时数据处理->datastream
8.流处理基础(Dataflow编程)
- 有向图
- 数据并行:将输入数据分组,让同一操作的多个任务并行执行在不同数据子集上
- 任务并行:让不同算子的任务并行计算
- 数据交换策略
转发(forward strategy):在发送端任务和接收端任务之间一对一的进行数据传输
广播(broadcast strategy):把每个数据项发往下游算子的全部并行任务。
基于键值(key-based strategy):根据键值属性对数据进行分区,并保证键值相同的数据项会交由同一任务处理
随机(random strategy):将数据均匀分配到算子的所有任务,以实现计算任务的负载均衡。
- 并行流处理
延迟:表示处理一个事件所需的时间;在流处理中延迟是以时间片为单位测量。
吞吐:衡量系统处理能力的指标;每个单位时间系统可以处理多少事件;
- 数据流上的操作
数据源:数据接入的操作;数据源可以是从tcp套接字、文件、kafka主题、传感器数据接口中获取的数据;
数据汇:数据输出操作;写入的目标可以是文件、数据库、消息队列或监控接口;
- 时间语义
- 状态和一致性模型
9.flink任务提交方式
- flink dashboard提交任务
访问:http://localhost:8081 - 命令提交: ./flink run -c com.test.StreamWordCount -p 3 /Users/mask/Downloads/scb-backend-super/target/scb-backend-0.0.1-SNAPSHOT.jar --host localhost --port 7777
取消任务命令:flink cancel 任务ID
以上是关于2.flink技术概览的主要内容,如果未能解决你的问题,请参考以下文章