Flink
文章平均质量分 69
小小平不平凡
这个作者很懒,什么都没留下…
展开
-
Flink中的容错机制
一、检查点1.1 一致性检查点(Checkpoints)概念Flink故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候1.2 从检查点恢复状态在执行流应用程序期间,Flink会定期保存状态的一致检查点如果发生故障,Flink将会使用最近的检查点来一致恢复应用程序的状态,并重新启动处理流程处理流程:(1)遇到故障之后,第一步就是重启应用(2)第原创 2021-04-28 21:33:27 · 74 阅读 · 0 评论 -
Flink中的ProcessFunction API
一、背景介绍之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的,而这些信息在一些应用场景是比较重要的。例如,MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间针对上述问题,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以及注册定时事件。还可以输出特定的一些事件,例如超时事件等,Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之前的window函数和转换算子无法实现)。例如,原创 2021-04-28 16:01:36 · 219 阅读 · 0 评论 -
Flink中的状态管理
一、状态定义由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态可以认为状态就是一个本地变量,可以被任务的业务逻辑访问Flink会进行状态管理,包括状态一致性、故障处理以及高效存储和访问,以便开发人员可以专注于应用程序的逻辑二、状态管理在Flink中,状态始终与特定算子相关联。为了使运行时的Flink了解算子的状态,算子需要预先注册其状态总的来说,有两种类型的状态:算子状态(Operator State):算子状态的作用范围限定为算子任务键控状态(Keyed Stat原创 2021-04-26 22:57:05 · 172 阅读 · 0 评论 -
Flink中的Window API
一、基本概念1.1 Window概念一般真实的流都是无界的,如何处理这种无界的数据呢?可以把无限的数据流进行切分,得到有限的数据集进行处理(就可以转换成有界流啦)。窗口(Window) 就是将无限流切割成有限流的一种方式,它会将流数据分发到有限大小的桶(bucket) 中进行分析1.2 Window类型1.2.1 滑动窗口(Sliding Windows)滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成。窗口长度固定,可以有重叠1.2.2 滚动窗口1.2.3 会原创 2021-04-23 11:31:19 · 193 阅读 · 0 评论 -
Flink中的时间语义与Watermark概念
一、时间语义Event Time:事件创建的时间Ingestion Time:数据进入Flink的时间Processing Time:执行操作算子的本地系统时间,与机器相关原创 2021-04-22 20:58:08 · 288 阅读 · 0 评论 -
Flink之Sink
Flink没有类似于spark中的foreach方法,让用户进行迭代的操作。对外的输出操作要利用Sink完成。最后通过类似如下方式完成整个任务最终输出操作。stream.addSink(new MySink(XX))官方提供了一部分的框架的sink。除此之外,需要用户自定义实现sink。一、输出到Kafka1.1 代码public class SinkTest1_Kafka { public static void main(String[] args) throws Exception原创 2021-04-21 10:59:14 · 3287 阅读 · 0 评论 -
Flink中的数据重分区操作
示例1:public class TransformTest6_Partition { public static void main(String[] args) throws Exception{ StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// env.setParallelism(1); // 从文件中读取数据原创 2021-04-21 10:24:10 · 637 阅读 · 0 评论 -
Flink中的UDF函数类
实现UDF函数----更细粒度的控制流一、函数类(Function Classes)Flink暴露了所有的UDF函数的接口(实现方式为接口或者抽象类)。例如MapFunction,FilterFunction,ProcessFunction等等。举例:实现FilterFunction接口DataStream<String> flinkTweets = tweets.filter(new FlinkFilter());public static class FlinkFilter im原创 2021-04-19 10:24:17 · 459 阅读 · 0 评论 -
Flink支持的数据类型
一、简介Flink流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些对象。它们需要被序列化和反序列化,以便通过网络传送它们;或者从状态后端、检查点和保存点读取它们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型。Flink使用类型信息的概念来表示数据类型,并且为每个数据类型生成特定的序列化器、反序列化器和比较器。Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获取序列化器和反序列化器。但是,在某些情况下,例原创 2021-04-13 10:27:42 · 664 阅读 · 0 评论 -
Flink 流处理API
一、Environment1.1 getExecutionEnvironment创建一个执行环境,表示当前执行程序的上下文。如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境。也就是说,getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvi原创 2021-04-06 22:22:58 · 365 阅读 · 0 评论 -
Flink安装部署
一、独立进程模式(Standalone)1.1 官网下载https://flink.apache.org/downloads.html1.2 修改flink-conf.yamlcd ./confvim flink-conf.yaml1.3 修改masterscat masters1.4 修改workerscat workers1.5 执行脚本,启动flinkcd .../bin/start-cluster.sh...原创 2021-03-29 18:41:58 · 348 阅读 · 0 评论 -
Flink运行架构
一、Flink运行时的组件1.1 作业管理器(JobManager)控制一个应用程序执行的主进程,也就是说,每一个应用程序都会被一个不同的JobManager所控制执行JobManager会先接收到要执行的应用程序,这个应用程序会包括:作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包的所有的类、库和其他资源的Jar包JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”(ExecutionGraph),包含了所有原创 2021-03-29 18:05:48 · 150 阅读 · 0 评论 -
Flink入门
一、Flink是什么Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算二、为什么选择Flink流数据能够反映我们真实的生活方式,但是传统的数据架构是基于有限数据集的。我们期望的数据处理框架是:(1)低延迟(2)高吞吐(3)结果的准确性和良好的容错性图一:传统事务处理架构图二:传统分析处理架构图三:有状态的流式处理图四:lambda流处理架构图五:Flink事件驱动架构Flink vs Spark Streaming1、数据模型spark原创 2021-03-21 19:12:44 · 207 阅读 · 2 评论