研磨Flink
研究Flink的实时流框架
zuodaoyong
这个作者很懒,什么都没留下…
展开
-
Flink内存模型
flink官网上 的内存分布图如下:1、processMemory是分配的总大小,比如yarn分配的container的总大小。2、framework memory与 task memoryframework不属于slot内存,而task是slot内的使用的内存heap memory内存主要是java对象和stateBackend内存framework heapmemory+task heap memory=jvm堆内存总大小(-Xmx)framework off..翻译 2020-07-20 10:58:34 · 1726 阅读 · 0 评论 -
自定义OperatorState
自定义OperatorState实现恰好一次读取文件内容public class FileSourceWithState extends RichParallelSourceFunction<Tuple2<String,String>> implements CheckpointedFunction { private String path; public FileSourceWithState(String path){ this.path.翻译 2020-06-21 22:35:15 · 210 阅读 · 0 评论 -
Flink复杂事件(CEP)详解
一、定义复杂事件处理(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的事件关系序列库,并利用过滤,关联,聚合等技术最终由简单事件产生高级事件,并通过模式匹配规则的方式对重要信息进行跟踪和分析。从实时数据中发掘有价值的信息。复杂事件处理主要应用于防范网络欺诈、设备故障检测、风险规避和智能营销等领域。Flink基于DataStream API提供了FlinkCEP组件栈,专门用于复杂事件处理。二、事件分类1、简单事件处理单一事件,事件的定义可以翻译 2020-05-28 22:35:23 · 3311 阅读 · 0 评论 -
Flink并行度和Slot详解
一、概念1、Task:一个阶段多个功能相同的subTask的集合,类似Spark的TaskSet2、SubTask:是任务最小的执行单元,是一个Java类的实例,完成具体的计算逻辑3、Slot:计算资源的隔离单元,一个Slot可以运行多个SubTask,但是这些SubTask必须是来自同一个application的不同阶段的subTask。注意:Flink划分Task主要有四种情况:(1)类似keyBy,broadcast,rebalance等算子产生shuffer(2)Parall原创 2020-05-17 20:01:32 · 7428 阅读 · 0 评论 -
keyBy多字段分组
如果keyBy时需要按照多个字段分组,该如何写?1、使用元组查看keyBy源码,可见当使用元组时可以传入多个索引下标public KeyedStream<T, Tuple> keyBy(int... fields) { return !(this.getType() instanceof BasicArrayTypeInfo) && !(this....原创 2020-03-14 11:28:37 · 3384 阅读 · 0 评论 -
Flink大状态的优化
Flink 支持多种 StateBackend,当状态比较大时目前只有 RocksDBStateBackend 可供选择。RocksDB 是基于 LSM 树原理实现的 KV 数据库,LSM 树读放大问题比较严重,因此对磁盘性能要求比较高,强烈建议生产环境使用 SSD 做为 RocksDB 的存储介质。但是有些集群可能并没有配置 SSD,仅仅是普通的机械硬盘,当 Flink 任务比较大,且对状态访问...翻译 2020-03-03 12:48:11 · 3612 阅读 · 0 评论 -
Flink重启策略
Flink支持不同的重启策略,可以控制在发生故障时如何重新启动作业。默认重启策略是通过Flink的配置文件设置的flink-conf.yaml。配置参数restart-strategy定义采用的策略如果未启用检查点(checkpoint),则使用“无重启”策略(即不开启重启策略)。如果激活了检查点并且尚未配置重启策略,则固定延迟策略将用于Integer.MAX_VALUE重启尝试。...翻译 2020-02-29 12:30:55 · 554 阅读 · 0 评论 -
Flink窗口详解
一、Window类型1、时间窗口(TimeWindow)(1)滚动时间窗口(Tumbling Window)将数据依据固定的窗口长度对数据进行切分特点:时间对齐,窗口长度固定,没有重叠(2)滑动时间窗口(Sliding Window)滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成特点:窗口长度固定,可以有重叠(3)会话窗口(Se...翻译 2020-02-23 11:43:14 · 3647 阅读 · 0 评论 -
Flink多流转换
1、split和selectpublic static void main(String[] args) throws Exception { StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment(); DataStreamSource<Long&...原创 2020-01-11 20:18:22 · 1519 阅读 · 0 评论 -
Flink的广播变量和广播状态
1、dataStreaming中的broadcast把元素广播给所有的分区,数据会被重复处理dataStream.broadcast()2、机器级别的广播广播变量允许编程人员在每台机器上保持1个只读的缓存变量,而不是传送变量的副本给tasks。广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个...翻译 2020-01-11 15:36:49 · 2201 阅读 · 0 评论 -
Flink数据类型和序列化
序列化就是将一个内存对象转换成二进制串,形成网络传输或者持久化的数据流。反序列化将二进制串转换为内存对象,这样就可以直接在编程语言中读写和操作这个对象。在Java和大数据生态圈中,已有不少序列化工具,比如Java自带的序列化工具、Kryo等。一些RPC框架也提供序列化功能,比如最初用于Hadoop的Apache Avro、Facebook开发的Apache Thrift和Google开发的Prot...翻译 2020-01-04 19:20:37 · 2964 阅读 · 1 评论 -
Flink状态一致性
一、状态一致性分类(1)最多一次(at most once)当故障发生,什么都不干,既不恢复丢失状态,也不重播丢失的数据。(2)至少一次(at least once)所有事件都处理了,有的事件可能被处理多次(3)精确一次(exactly once)所有事件仅仅被处理一次二、端到端的状态一致性(1)内部保证(checkpoint)(2)source端(可重设数据的...原创 2019-12-21 19:28:22 · 751 阅读 · 0 评论 -
Flink底层API之ProcessFunction
一、Flink转换算子是无法访问事件的时间戳和watermark,因此DataStream提供了一套底层API,用于访问事件时间戳,watermark和注册的定时事件。Flink SQL是基于ProcessFunction实现的。Flink提供了8个ProcessFunctionProcessFunctionKeyedProcessFunctionCoProcessFunction...原创 2019-12-20 20:07:08 · 514 阅读 · 0 评论 -
Flink时间语义和watermark
一、时间语义Event Time:事件创建的时间Ingestion Time:数据进入Flink的时间Processing Time:执行算子操作的本地系统时间,与机器相关设置时间语义StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();...原创 2019-12-18 23:28:07 · 528 阅读 · 0 评论 -
研磨Flink之运行时组件
一、作业管理器(JobManager)1、控制一个应用程序执行的主进程,每个应用程序都会被一个不同的JobManager所控制。2、JobManager会先接收到应用程序,应用程序包括:作业图(JobGraph)、逻辑数据流图和打包的所有类库和其他资源的Jar包。3、JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”(ExecutionGrap...原创 2019-11-09 13:57:19 · 329 阅读 · 0 评论 -
Flink状态管理和容错机制
一、状态管理的基本概念1、什么是状态 (1)无状态计算 举例:一个生产者不断生产数据到消息队列,三个消费者不断消费队列的消息,但是消费者的消费能力不一样。需要统计出各消费者消费的offset与当前生产者最新生产的offset差值。生产者和消费者处理消息的信息:我们定义它为消息A{ "timestramp":1569081600000, "off...翻译 2019-09-22 08:59:31 · 598 阅读 · 0 评论 -
Flink核心概念和编程模型
Flink核心组件原创 2019-09-12 00:32:24 · 249 阅读 · 1 评论 -
Flink初探
一、Flink是什么Apache Flink是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。二、Flink前世今生Flink诞生于2009年,原来叫StratoSphere,是柏林工业大学的一个研究性项目,早期专注于批计算。2014年孵化出Flink并捐给Apache2015年开始引起大家注意20...翻译 2019-09-07 20:08:58 · 272 阅读 · 0 评论