![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flink
文章平均质量分 92
Quinto0
Learning is the highest
展开
-
Flink的异步I/O及Future和CompletableFuture
1 概述 Flink在做流数据计算时,经常要外部系统进行交互,如Redis、Hive、HBase等等存储系统。系统间通信延迟是否会拖慢整个Flink作业,影响整体吞吐量和实时性。 如需要查询外部数据库以关联上用户的额外信息,通常的实现方式是向数据库发送用户a的查询请求(如在MapFunction中),然后等待结果返回,返回之后才能进行下一次查询请求,这是一种同步访问的模式,如下图左边所示,网络等待时间极大的阻碍了吞吐和延迟。 Flink从1.2版本开始就引入了Async I/O(https:/原创 2021-02-03 16:27:52 · 1695 阅读 · 0 评论 -
Flink的Table API 与SQL的流处理
1 流处理与SQL的区别 Table API和SQL,本质上还是基于关系型表的操作方式;而关系型表、SQL本身,一般是有界的,更适合批处理的场景。所以在流处理的过程中,有一些特殊概念。SQL流处理处理对象字段元组的有界集合字段元组的无限序列查询对数据的访问可以访问完整的数据输入无法访问所有数据,必须持续等待流式输入查询终止条件生成固定大小的结果集后终止永不停止,根据持续收到的数据不断更新查询结果 尽管存在这些差异,使用关系查询和SQL处理流并不是不原创 2020-08-07 22:57:15 · 4878 阅读 · 0 评论 -
Flink的Table API 与SQL介绍及调用
1 概述 DataSetAPI和DateStreamAPI是基于整个Flink的运行时环境做操作处理的,Table API和SQL是在DateStreamAPI上又包了一层。对于新版本的Blink在DateStream基础上又包了一层实现了批流统一,上层执行环境都是基于流处理,做批流统一的查询。Table API是流处理和批处理通用的关系型API,与常规SQL语言中将查询指定为字符串不同,Table API查询是以Java或Scala中的语言嵌入样式来定义。 是一套内嵌在 Java 和 Scala 语原创 2020-08-02 16:18:21 · 3097 阅读 · 0 评论 -
Flink的状态一致性
1 状态的一致性1.1 一致性级别 流处理操作一般分为at-most-once,at-least-once和exactly-once这3个级别。 at-most-once:至多一次,发生故障恢复后数据可能丢失 at-least-once:至少一次,发生故障恢复后数据可能多算,绝对不会少算 exactly-once:精确一次,发生故障恢复后数据不会丢失也不会多算1.2 端到端的状态一致性1.2.1 Spark Streaming的exactly-once 对于 Spark Strea原创 2020-08-01 23:28:24 · 1848 阅读 · 0 评论 -
Flink中的容错机制
1 checkpoint Flink 故障恢复机制的核心,就是应用状态的一致性检查点checkpoint。 在Spark Streaming中仅仅是针对driver的故障恢复做了数据和元数据的Checkpoint,处理的是当前时间点所有分区当前数据的状态。在Flink中不能把当前所有分区的数据直接存下来,因为是有状态的流式计算所以除了当前处理的数据之外还应该有当前的状态。因为在状态编程中,我们可能会自定义状态,所以直接保存当前的数据和他的状态是不行的,还要知道在具体的操作流程里面到底执行到哪了,这原创 2020-08-01 23:27:24 · 1900 阅读 · 0 评论 -
Flink中的状态管理
1 Flink中的状态 当数据流中的许多操作只查看一个每次事件(如事件解析器),一些操作会跨多个事件的信息(如窗口操作)。这些操作称为有状态。状态由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态。可以简单的任务状态就是一个本地变量,可以被任务的业务逻辑访问。 有些算子有些任务是没有状态的,如map操作,只跟输入数据有关。像窗口操作不管是增量窗口函数还是全窗口函数都要保持里面的信息的,一开始在窗口到达结束时间之前是不输出数据的,所以最后输出数据的时候,他的计算是要依赖之前的,全窗原创 2020-08-01 23:23:18 · 7133 阅读 · 3 评论 -
Flink的ProcessFunction API
1 ProcessFunction ProcessFunction是一个低阶的流处理操作,可以访问事件(event)(流元素),状态(state)(容错性,一致性,仅在keyed stream中),定时器(timers)(event time和processing time, 仅在keyed stream中)。也就是说可以访问普通的转换算子无法访问事件的时间戳信息和Watermark的。 ProcessFunction可以看作是一个具有keyed state 键控状态和 timers定时器访问权原创 2020-07-28 00:03:33 · 1335 阅读 · 0 评论 -
Flink的时间语义和Watermark
1 时间语义 数据迟到的概念是:数据先产生,但是处理的时候滞后了 在Flink的流式处理中,会涉及到时间的不同概念,如下图所示: Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通过时间戳分配器访问事件时间戳。 Ingestion Time:是数据进入Flink的时间。 Processing Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是Process原创 2020-07-28 00:02:18 · 1506 阅读 · 0 评论 -
Flink的Window
1 Window概述 streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为有限块进行处理的手段。 Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。 注意:window一般在keyBy(KeyedStram)后。如果实在DataStream后的话是windowAll(不建议使用,会将所有数据汇原创 2020-07-27 23:57:20 · 1302 阅读 · 0 评论 -
Flink常见流处理API
Flink 流处理API的编程可以分为environment,source,transform,sink四大部分1 Flink支持的数据类型 在Flink底层因为要对所有的数据序列化,反序列化对数据进行传输,以便通过网络传送它们,或者从状态后端、检查点和保存点读取它们。所以Flink要有一套自己的类型提取系统,就是TypeInformation机制。Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器、反序列化器和比较器。这里其实就是说在转换过程中必须是他支持的数据类型才能转原创 2020-07-27 23:53:14 · 1745 阅读 · 0 评论 -
Flink运行时架构
1 运行时相关的组件 Flink运行时架构主要包括四个不同的组件:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher) (1)资源管理器(ResourceManager) 主要负责TaskManager的slot(插槽),slot是Flink中处理资源的单元。Flink为不同的环境和资源管理工具提供了不同资源管理器。当JobManager申请插槽资源的时候,ResourceManager会将原创 2020-07-27 23:50:32 · 1901 阅读 · 1 评论 -
Flink简介
初识Flink1 什么是Flink Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。2 Flink的特点2.1 事件驱动 事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。 事件驱动型应用是在计算存原创 2020-07-27 23:43:13 · 1554 阅读 · 1 评论