
Flink
爱吃甜食_
一点点进步,让编程更有趣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
flink on yarn工作提交流程及三层图概述
flink on yarn工作提交流程示意图flink三层图概述示意图流程如下:Client向Dispatch而发起请求,Dispatch而向yarn提交jobYarn的NN创建一个container,启动Application Master(AM)ApplicationMaster在本地启动一个Resource Manager和Job ManagerJob manager根据StreamGraph生成的ExecutionGraphy以及物理执行计划向Flink Resource Ma原创 2020-11-10 23:21:16 · 980 阅读 · 0 评论 -
flink SQL浅析
flink SQL解析Flink table/SQL架构演变flink SQL的工作机制SQL实现详述:Flink table/SQL架构演变Flink1.9之前,批处理和流处理有以下几点不同各自独立的API(流处理DataStream,批处理DataSet)各自不同的执行计划解析过程各自不同的错的跟过程因此,没有批流一体的概念,面向用户不友好。如下图所示:Flink1.9引入了blink planner将批SQL处理作为流SQL处理的特例。Flink Planner用来兼容原创 2020-11-09 23:26:45 · 750 阅读 · 0 评论 -
flink实现exactly-once
flink实现exactly-once前言前言exactly-once,即实现一次且仅一次。可分为框架内实现和端对端实现。原创 2020-11-08 19:43:33 · 858 阅读 · 0 评论 -
flink CEP示例
CEP示例三分钟时间内,出现三次及以上的温度高于40度就算作是异常温度,进行报警输出创建订单之后15分钟之内一定要付款,否则就取消订单三分钟时间内,出现三次及以上的温度高于40度就算作是异常温度,进行报警输出场景介绍现在工厂当中有大量的传感设备,用于检测机器当中的各种指标数据,例如温度,湿度,气压等,并实时上报数据到数据中心,现在需要检测,某一个传感器上报的温度数据是否发生异常。异常的定义三分钟时间内,出现三次及以上的温度高于40度就算作是异常温度,进行报警输出测试数据原创 2020-10-01 21:54:35 · 1119 阅读 · 0 评论 -
flink-22 flink复杂事物处理机制CEP
flink复杂事物处理机制CEPCEP概念CEP的主要特点Pattern API输入流的创建Pattern的定义设置循环次数定义触发条件模式序列注意Pattern检测选取结果通过select抽取正常事件通过flatSelect抽取正常事件通过select抽取延迟事件CEP示例使用state实现使用CEP编程实现官网CEP概念CEP是Complex Event Processing三个单词的缩写,表示复杂事件处理,是一种基于流处理的技术,CEP是Flink专门为我们提供的一个基于复杂事件监测处理的库,C原创 2020-09-30 11:29:02 · 857 阅读 · 0 评论 -
flink-21 flink之table和SQL
flink之table和SQLtable与SQL的基本介绍为什么需要SQL开发环境构建TableEnvironmentTable API创建 Table从文件中创建 Table(静态表)从DataStream中创建 Table(动态表)**table与SQL的基本介绍在Spark中有DataFrame这样的关系型编程接口,因其强大且灵活的表达能力,能够让用户通过非常丰富的接口对数据进行处理,有效降低了用户的使用成本。Flink也提供了关系型编程接口 Table API 以及基于Table API 的原创 2020-09-28 20:43:03 · 2153 阅读 · 0 评论 -
flink-20 watermark机制
watermark机制watermark概念watermark作用watermark原理watermark使用的三种情况watermark概念通常情况下由于网络或者系统等外部因素影响下,事件数据往往不能及时传输至FLink系统中,导致系统的不稳定而造成数据乱序到达或者延迟达到等问题,因此需要有一种机制能够控制数据处理的进度。具体来讲,在创建一个基于时间的window后,需要确定属于该window的数据元素是否已经全部到达,确定后才可以对window中的所有数据做计算处理(如汇总、分组),如果数据并没原创 2020-09-25 22:49:52 · 424 阅读 · 0 评论 -
flink-19 flink之Time概念
flink之Time概念flink中Time的概念EventTimeIngestTimeProcessingTime(默认时间)三种时间的综合比较设置 Time 类型示例:ProcessWindowFunction实现时间确定flink中Time的概念对流失数据处理,最大的特点是数据上具有时间的属性特征flink根据时间产生的位置不同,可以将时间区分为三种时间概念Event Time(事件生成时间)事件产生的时间,它通常由事件中的时间戳描述Ingestion time(事件接入时间)原创 2020-09-24 20:04:08 · 212 阅读 · 0 评论 -
flink-18 flink之windows窗口
flink之windows窗口概念窗口的类型滚动窗口(tumbling windows)滑动窗口(sliding windows)会话窗口窗口(session windows)窗口应用示例窗口数据的集合统计增量聚合统计7.3.2 全量聚合统计概念把数据想象成一种流,窗口在流上滑动,显示指定时间段或指定个数的数据。即windows是一种可以把无限无数据切割为有限数据块的手段应用场景对于流式处理,如果我们需要求取总和,平均值,或者最大值,最小值等,是做不到的,因为数据一直在源源不断的产生,即数据是没有原创 2020-09-24 16:24:08 · 377 阅读 · 0 评论 -
flink-17 flink集成kafka
flink集成kafka前言kafka作为flink的sourcekafka作为flink的sinkpom依赖官网前言Flink提供了一个特有的kafka connector去读写kafka topic的数据。flink消费kafka数据,并不是完全通过跟踪kafka消费组的offset来实现去保证exactly-once的语义,而是flink内部去跟踪offset和做checkpoint去实现exactly-once的语义,而且对于kafka的partition,Flink会启动对应的并行度去处理ka原创 2020-09-24 01:44:14 · 1003 阅读 · 0 评论 -
flink-16 checkpoint
checkpointcheckpoint概念checkpoint的前提checkpoint步骤配置checkpoint重启策略从checkpoint恢复数据checkpoint保存多个历史版本save checkpoint保存数据checkpoint概念为了保证state的容错性,flink需要对state进行checkpointcheckpoint是flink实现容错机制最核心的功能,它能根据配置周期性的基于Stream各个operator/task的状态来生成快照,从而将这些状态数据定期持久化存储原创 2020-09-23 22:18:58 · 889 阅读 · 1 评论 -
flink15 flink状态管理之state backend
flink状态管理之state backendState Backend设置方法:MemoryStateBackendFsStateBackendRocksDBStateBackend3种方式小结修改state-backend的两种方式State Backend默认情况下state会保存在TaskManager的内存中checkpoint会存储在JobManager的内存中state的存储和checkpoint的取决于State Backend的配置。Flink提供了3种State Backe原创 2020-09-23 11:57:21 · 1398 阅读 · 1 评论 -
flink-14 flink之State类型
flink之Statestate概述state类型operator statekey statestate概述state一般指一个具体的task/operator的状态,state数据默认保存在java的堆内存中。flink通过state和checkpoint更容易实现At -least-once 和 Exactly-oncestate流程state类型flink有两种基本类型的stateoperator statekeyed state每种类型的state都可以以两种形式存在原创 2020-09-22 22:50:30 · 2333 阅读 · 1 评论 -
flink-13 Flink之Counter(计数器/累加器)
Flink之Counter概念用法示例概念Accumulator即累加器,与Mapreduce counter的应用场景差不多,都能很好地观察task在运行期间的数据变化,可以在Flink job任务中的算子函数中操作累加器,但是只能在任务执行结束之后才能获得累加器的最终结果。Counter是一个具体的累加器(Accumulator)实现IntCounter, LongCounter 和 DoubleCounter用法1.创建累加器private IntCounter numLines =原创 2020-09-21 20:59:52 · 2415 阅读 · 0 评论 -
flink-12 flink分布式缓存
flink分布式缓存概念用法概念Flink提供了一个类似于hadoop分布式缓存,可以使用户在并行函数中很方便的读取本地文件。广播变量是将一些共享的数据放在TaskManager内存中而Distribute cache是从外部加载一个文件/目录(例如hdfs),然后分别复制到每一个TaskManager的本地磁盘中。用法1.使用Flink运行环境调用registerCachedFile注册一个分布式缓存env.registerCachedFile("hdfs:///path/to/your原创 2020-09-21 20:45:26 · 843 阅读 · 1 评论 -
flink-11 dataSet之集成HBASE读写数据
dataSet之connector文件系统connectorflink集成Hbase数据读取flink读取数据,然后写入HBase官网地址文件系统connectorfink内置支持从如下文件系统读取数据文件系统Schema备注HDFShdfs://Hdfs文件系统S3s3://通过hadoop文件系统实现支持MapRmaprfs://需要用户添加jarAlluxioalluxio://通过hadoop文件系统实现注意Flink允许用户原创 2020-09-21 19:58:26 · 1288 阅读 · 0 评论 -
flink-10 DataSet算子
dataset转换算子常见的DataSet转换算子算子mapPartitiondistinct链接操作joinleftOuterJoin、rightOuterJoincrossfirst-N和sortPartitionpartition官网地址常见的DataSet转换算子算子Map输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作FlatMap输入一个元素,可以返回零个,一个或者多个元素MapPartition类似map,一次处理一个分区的数据【如果在进行map原创 2020-09-21 14:47:34 · 459 阅读 · 0 评论 -
flink-9 广播变量
flink广播变量概念用法示例概念广播变量允许编程人员在每台机器上保持一个只读的缓存变量,而不是传送变量的副本给tasks广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的一句话解释,可以理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。如果不使用broadcast,则在每个节点中的每个t原创 2020-09-21 00:44:47 · 195 阅读 · 0 评论 -
flink-8 重分区算子
重分区算子重分区算子种类Random PartitioningRebalancingRescaling示例:对filter后的数据进行重分区定义分区广播变量重分区算子种类重分区算子用来对数据进行重新分区,可以用来解决数据倾斜问题Random Partitioning根据均匀分布随机分配元素,(类似于random.nextInt(3),0 - 3 在概率上是均匀的)dataStream.shuffle()Rebalancing分区元素循环,每个分区创建相等的负载。数据发生倾斜的时候可以原创 2020-09-20 19:29:10 · 1663 阅读 · 0 评论 -
flink-7 DataFrame转换算子
DataFrame转换算子前言map、filterflatMapflatMap、keyBy、Sumreduce流的合并和拆分流的合并unionconnect流的拆分split、select官网地址前言通过从一个或多个 DataStream 生成新的 DataStream 的过程被称为 Transformation 操作。在转换过程中,每种操作类型被定义为不同的 OperatorFlink 程序能够将多个 Transformation 组成一个 DataFlow 的拓扑map、filterim原创 2020-09-20 16:11:58 · 750 阅读 · 0 评论 -
flink-6 flinksink目标和写数据到Redis中
flink写数据到RedisFlink的Sink数据目标Flink写数据到Redis中pom依赖Flink的Sink数据目标writeAsText():将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString()方法来获取print() / printToErr():打印每个元素的toString()方法的值到标准输出或者标准错误输出流中自定义输出addSink【kafka、redis】我们可以通过sink算子,将我们的数据发送到指定的地方去,例如kafka或者redis或者hb原创 2020-09-19 18:08:27 · 713 阅读 · 0 评论 -
flink-5 flink的DataSource数据源
flink的DataSource数据源基于文件基于socket基于集合自定义输入基于文件object txt { def main(args: Array[String]): Unit = { //构建流处理的环境 val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment //从socket获取数据 val sourceStream: DataSt原创 2020-09-18 12:43:30 · 371 阅读 · 0 评论 -
flink 单词计数demo
单词计数demo单词计数实时统计-scala实时统计-java离线统计pom依赖单词计数实时统计每隔1秒统计最近2秒单词出现的次数实时统计-scala代码/导入scala版本的import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}import org.apache.flink.streaming.api.windowing.time.Timeobject onLine {原创 2020-09-17 22:05:16 · 663 阅读 · 0 评论 -
flink-4 并行度
flink并行度flink并行度并行度的设置并行度代码示例flink并行度一个Flink程序由多个任务组成(source、transformation和 sink)。 一个任务由多个并行的实例(线程)来执行, 一个任务的并行实例 (线程) 数目就被称为该任务的并行度。不同任务的并行度可以不同不同算子的并行度可以不同默认情况下:相邻的并行度相同的transformation算子的task会自动组成一个任务链所以,在不涉及宽依赖的时候,相邻的算子最好并行度相同。涉及到数据的本地性,并行度不同,会原创 2020-09-17 20:17:37 · 381 阅读 · 0 评论 -
flink-3 flink on yarn
flink on yarn前言第一种模式yarn session模式任务的提交第二张模式yarn-cluster模式下任务的提交指令参数flink on yarn运行原理flink on yarn部署前言flink可以提交都不同集群,提交到yarn上只是其中一种比较常见的选择。flink on yarn有两种模式yarn sessionyarn cluster其区别主要资源的申请和释放第一种模式内存集中管理模式(yarn session)在Yarn中初始化一个Flink集群,开辟指原创 2020-09-17 18:55:31 · 875 阅读 · 0 评论 -
flink-2 task之间传输数据方式、操作链和任务槽
操作链和任务槽操作链任务链的关闭任务槽操作链操作链即任务链(不同场景下称呼不同)是将相关性很强的transformation操作绑定在一起,这样能够让转换过程中上下游的 Task 在同一个 Pipeline 中执行,进而避免因为数据在网络或者线程间传输导致的开销,提高整体的吞吐量和延迟。如下图所示:将身处同一个TaskManager的key agg和sink绑定到一起。从而使原来的4个task变为2个task任务链类似于spark中的管道,spark将同一分区、同一债依赖的task分配给一个tas原创 2020-09-17 17:48:41 · 1892 阅读 · 0 评论 -
flink-1 flink简介
flink简介有界数据和无界数据flink应用场景flink优势flink基本技术栈flink基本架构有界数据和无界数据有界数据通常被称为批处理既定义了数据流的开始,也定义了数据流的结束。处理有界数据时,既可以等所有数据都接收完再处理,也可以处理此刻前的所有数据。有界流数据可以被排序,所以处理的时候不需要有序的提取无界数据有数据流的开始,但是没有数据流的结束。处理无界数据时,不能等到所有数据都接收完再处理,数据会无休止的产生,需要立即处理无界数据处理时一般需要根据特定的顺序提取数据原创 2020-09-17 17:24:01 · 268 阅读 · 0 评论