Flink
文章平均质量分 75
ss
稳哥的哥
babe babe babe wowowowowowoow~!
寒江孤影、江湖故人
展开
-
FlinkSQL-Join打宽案例
Flink Temporal Join Versioned Table DemoKeyword: [Temporal Join, Versioned Table, mysql-cdc]1. Flink standalone 环境准备(基于 Flink 1.12.2 版本)(a) 下载 flink 安装包Flink 安装包: https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.12.2/flink-1.12.2-bin-scala原创 2021-08-20 10:48:22 · 775 阅读 · 1 评论 -
Flink - 之Kafka Avro序列化格式转Json序列化格式(⭐⭐⭐)
Flink - 之Kafka Avro序列化格式转Json序列化格式(⭐⭐⭐)参考网址:apache avro官网1 背景TODO 后续补充,晚间12点了不想搞了~2 mvn依赖<!-- flink的avro format的依赖 --><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-avro</artifactId>原创 2021-08-04 00:32:20 · 2234 阅读 · 0 评论 -
Flink1.12-之JobManager&TaskManager内存管理
Flink1.12-之内存管理1、前言flink为了让用户更好的调整内存分配,达到资源的合理分配,在Fllink1.10引入了TaskManager的内存管理,后续在Flink1.11版本引入了JobManager的内存管理,用户可以通过配置的方式合理的分配资源。不管是TaskManager还是JobManager都是单独的JVM进程,他们共用一套内存模型抽象(TaskManager的内存模型更加复杂),如下。该模型由heap和off-heap内存组成,这里有以下3种调整内存的方式,3种方式必原创 2021-06-26 17:32:01 · 5515 阅读 · 0 评论 -
Flink-1.12 - 之Flink SQL 与 kafka connector实践
Flink-1.12 - 之kafka connector实践1 前言(消息更新模式)阅读之前可以先了解一下,动态table抓换成data stream的3种模式,这个在动态Table转换成DataStream或者写入外部系统的时候是有严格的约束的。Append Mode一个只有Insert操作的动态表,才能转换成Append-only stream(或写入到支持AppendMode的外部系统如:文件、Kafka、Hive等)Retract Mode这种模式有2种类型的消息:add 和原创 2021-06-09 00:01:45 · 6279 阅读 · 2 评论 -
Flink-1.12 - 之如何构建一个简单的TopN应用
Flink-1.12 - 之如何构建一个简单的TopN应用本文主要介绍通过Flink-1.12如何构建一个简单的TopN应用,这里介绍DataStream API构建Flink SQL构建1 maven依赖如下 <!--当前版本的控制~~--> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compile原创 2021-06-08 21:20:04 · 1081 阅读 · 0 评论 -
Flink-1.12 - 之 DataStream Join 类型
Flink-1.12 - 之 DataStream Join本文主要以flink-1.12来讲述Flink DataStream Api中支持的Join。DataStream Api提供2种类型的join方式。Window JoinTumbling Window JoinSliding Window JoinSession Window JoinInterval Join下面分别讲解不同Join的使用与特点。1 Window Joinwindow join 有固定的语原创 2021-06-05 23:40:24 · 309 阅读 · 1 评论 -
Flink-之如何使用Table&SQL API
Flink-之如何使用Table&SQL API1 maven依赖首先通常需要引入以下依赖。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven原创 2021-05-24 20:27:42 · 304 阅读 · 0 评论 -
flink-之各种集群模式的运行时架构
flink-之各种集群模式的运行时架构NOTE : flink的运行时架构是以flink application或者job为单位的,比如每个flink application都会有自己独立的运行时架构,但是不同的运行时架构可能可以共用公共集群资源。本文参考文献如下。flink客户端操作flink开发环境搭建和应用的配置、部署及运行flink on yarn\k8s原理剖析与实践本文呢,主要讲解standalone cluster和yarn cluster的运行时架构,在客户端提交flink应原创 2021-05-22 20:51:13 · 479 阅读 · 12 评论 -
flink -之提交一个任务会占用几个slots
flink -之提交一个任务会占用几个slotsflink提交一个job,需要的slots数量与slot组有关1 不设置slotGroup如果不设置,那么所有的算子的操作共享一个slot组default;// 假如是提交以下逻辑的flink jobenv.readTextFile().setP(2) .map().setP(4) .print() //默认p.default=1 上述代码的job提交后所有任务占用的slots的总量为4,通常这个job的所有任务会占用所有算原创 2021-05-05 23:10:48 · 929 阅读 · 0 评论 -
Flink-之术语介绍
Flink-之术语介绍1 Gragh的概念StreamGragh:Flink中的数据结构,在Cluster客户端生成的Flink程序的拓扑结构,单纯的显示拓扑StreamEage:代表拓扑中2个算子处理之后的流的连接点StreamNode:每个StreamNode代表1个拓扑算子节点JobGrap:Flink中的数据结构,将可以形成Chain的算子进行合并,减少节点之间 的数据传输带来的性能消耗(序列化,反序列化)JobVertex:这是在JobGraph中的角色,每个JobVerte原创 2021-02-01 09:34:43 · 275 阅读 · 0 评论 -
Flink之 SavePoint & Checkpoint
SavePoint & Checkpointsavepoint和checkpoint都是flink为容错提供的强大功能特性,能够自动或手动保存job的运行状态两者区别checkpoint:应用定时触发,用户保存状态,会过期,内部应用失败重启的时候启用,但是手动cancel时,会删除之前的checkpointsavepoint:用户手动置顶,相当于状态的备份,可以在bin/fli...原创 2020-05-04 17:15:37 · 484 阅读 · 0 评论 -
Flink-kryo序列化方式&类型管理
Flink类型管理与序列化Flink作为一个强大的实时计算引擎,底层大部分源码都是Java编写的,所以flink对pojo有着很好的支持,类似于Spark中DataFrame引入的schema,Flink也能够很好的infer推断数据类型的schema,可以将推断出的schema当作一个database,所以TypeInformation中包含了一个类的很多基本信息。TypeInformatio...原创 2020-05-04 12:44:57 · 4076 阅读 · 1 评论 -
Flink分布式文件缓存实现数据共享
Flink分布式文件缓存类似于广播变量,都是用来广播共享数据的广播变量广播的是DataStream\DataSet,而分布式缓存广播的是一个文件分布式文件的基本概念可以在并行函数中很方便的共享包含静态外部数据的文件类似于广播变量,而不同的是分布式缓存可以广播一个文件可以在并行函数中很方便的读取本地文件,并把它放进taskmanager的节点内存中,方式task重复拉取,当程序执行fl...原创 2020-05-03 23:37:44 · 1674 阅读 · 0 评论 -
Flink重启策略Restart-Strategy
Flink重启策略为什么需要设置重启策略?当任务失败时,Flink需要重新启动失败的任务和其他受影响的任务,以将作业恢复到正常状态。重新启动策略和故障转移策略用于控制任务重新启动。重新启动策略决定是否以及何时可以重新启动失败/受影响的任务。故障转移策略决定应重新启动哪些任务以恢复作业。NOTE:重启策略需要配合Checkpoint启动,因为需要用到flink的内部State使用Res...原创 2020-04-27 14:54:00 · 3015 阅读 · 0 评论 -
Flink累加器Accumulator使用
Flink累加器Accumulator在Flink程序中如果需要对某些数值进行累加,我们可以用到累加器累加器也是在JobManager的内存中生成,同时传给TaskManager内存给tasks进行累加的只读数据结构,必须等task操作都操作完了之后才能在客户端读取到累加器的值。切记:数据在线程内存中传递需要实现序列化累加器分类IntCounterLongCounterDouble...原创 2020-04-25 16:58:36 · 1539 阅读 · 0 评论 -
FlinkKafkaConsumer offset读取优先级
FlinkKafkaConsumer offset读取优先级kafkaConusmer的offset优先级分为3个等级:Checkpoint&SavepointsetStartFromGroupOffsets等auto.offset.reset /** * Specifies the consumer to start reading from any committed...原创 2020-04-24 23:08:16 · 987 阅读 · 0 评论 -
FlinkKafkaConsumer构造参数解析
FlinkKafkaConsumer构造参数解析介绍FlinkKafkaConsumer的构造方法有7种:但是通用的参数有:topic/topicsvalueDeserializationSchema/keyedDeserializationSchemaconsumerProperties#1、topic/topics:用来传入一个或者多个topic信息#2、valueDese...原创 2020-04-24 18:02:01 · 2902 阅读 · 0 评论 -
Flink中的广播变量-简单应用
Flink中的广播变量Broadcast是一份存储在TaskManager内存中的只读的缓存数据使用场景:在执行job的过程中需要反复使用的数据,为了达到数据共享,减少运行时内存消耗,我们就用广播变量进行广播好处:1、从clinet端将一份需要反复使用的数据封装到广播变量中,分发到每个TaskManager的内存中保存2、TaskManager中的所有Slot所管理的线程在执行task...原创 2020-04-23 23:01:05 · 2793 阅读 · 0 评论 -
Flink-HighAviliability(高可用)
Flink-HighAviliableFlink可以部署在不同的集群管理器上,如:yarnk8sstandaloneMesos本篇主要简单介绍在standalone与yarn部署模式下的HA的简单实践,后续会持续添加其他模式的HA1-standalone第一步:修改flink-conf.yaml,masters,slaves配置文件masters#指定JobManager节...原创 2020-04-21 16:54:30 · 462 阅读 · 0 评论 -
Flink+kafka端到端状态一致性保证
Flink+kafka端到端状态一致性保证什么是状态一致性有状态的流处理,内部每个算子任务都有自己的状态对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确一条数据不用改丢失,也不应该重复计算在遇到故障时可以恢复状态,恢复以后的重新计算,结果也是完全正确的Flink内部状态一致性分类AT-LEAST-ONCE(至少一次)大多数真是应用场景,我们希望不...原创 2020-03-08 18:28:34 · 2979 阅读 · 0 评论 -
Flink-TableAPI & SQLAPI
Flink-TableAPI & SQLAPI如何使用TableAPI1.首先引入相关的table API依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table_2.11</artifactId> <versio...原创 2020-03-06 19:17:57 · 270 阅读 · 0 评论 -
Flink之checkpoint一致性检查点
Flink之checkpoint一致性检查点容错简介flink为了保证程序操作状态的容错性,flink在内部引入了checkpoint机制,检查点最终从datastream中以exactly once或者at least one进行状态映射,容错机制,持续的以一定时间间隔描绘整个分布式流的状态并保存在:MasterNode的内存或者HDFS文件系统,这是非常轻量级的,并不会对性能造成影响...原创 2020-03-06 18:20:37 · 714 阅读 · 0 评论 -
Flink之State状态编程
Flink中的状态State在flink中,状态始终与特定算子相关联,像reduce、sum等算子都是默认带状态的,而map、flatmap本身时不带状态的,如果需要用到状态,可以自定义为了使运行的flink了解算子的状态,算子需要预先注册其状态总的来说,有2种类型的状态算子状态(Operator State)算子状态的作用范围限定为算子任务键控状态(keyed State)...原创 2020-03-05 22:33:44 · 5751 阅读 · 0 评论 -
Flink之sideoutputStream
Flink之sideoutputStream侧输出流可以解决split过时的问题,将不同类别的数据分开成2个流「stream.process(ProcessFunction(if() out.collectelse cox.output(new OutputLag(“id”))))主数据通过out.collect()进行输出侧输出数据通过 ctx.output()进行输出通过主数...原创 2020-03-05 17:13:35 · 170 阅读 · 0 评论 -
Flink之processFunction
Flink之keyedProcessFunctionprocessFuntion是Flink的底层Api,我们可以更好的通过context来控制TimeService,还可以保存dataStream中的状态信息,并加入到逻辑使用中。Flink提供了8中ProcessFunction,这里用keyedProcessFunction来示例// processFunction的调用stream....原创 2020-03-05 17:12:57 · 270 阅读 · 0 评论 -
Flink的window操作&watermarks
Flink的window操作Flink中处理的都是流数据,窗口操作就是将无限流按照不同的规则截取成有限流放在bucket中进行操作window类型timewindow所有的时间窗口都有一个startTimeStamp和一个endTimeStamp,而一个窗口内的数据是左闭右开的:[elem1,elem2,…)-> 滚动时间窗口a.将数据依据固定的窗口长度对数据进行切分b.时间...原创 2020-03-05 10:27:15 · 269 阅读 · 0 评论 -
Flink-ScalaApi常规
常用的Flink算子操作Flink的所有聚合算子类似sum、reduce等都需要在keyby之后才能使用,因为Flink会讲相同的key进行hash,然后切分成不同的子任务进行并行执行,实际上是一种强制优化。所有的Flink的程序,都会有3个阶段的API:SourceTransformationSink案例分析:如果又个需求,需要统计一些简单数据的和 /**演...原创 2020-03-03 22:17:25 · 565 阅读 · 0 评论 -
自定义Flink-JDBCSink(RichSinkFunction)从Flink->MySQL
本文主要介绍怎么自定义JDBC-Sink让数据从Flink到MySQL,该代码中的addSource()方法中的SourceFuntion实例是我自定义的Source实例1.引入相关的依赖 <!--MySQL-java连接驱动--> <dependency> <groupId>mysql</grou...原创 2020-03-02 19:58:10 · 3404 阅读 · 0 评论 -
Flink的Redis-Sink
Flink的Redis-Sink具体实现步骤如下:可以参考Flink的官网RedisSink的具体实现:https://bahir.apache.org/docs/flink/current/flink-streaming-redis/1.引入官方的flink-redis-connector的maven依赖 <!-- https://mvnrepository.com...原创 2020-03-02 18:04:56 · 601 阅读 · 0 评论 -
Flink自定义Source
FlinkStream自定义Source前言Flink程序在客户端进行编译优化的时候Operator Chain减少了不同算子之间数据传输序列化与反序列话的开销,提升了性能。1.获取执行环境val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment#底层实际上是调用以下...原创 2020-03-02 11:36:17 · 697 阅读 · 0 评论 -
Flink的运行时架构
Flink的运行时架构Dispatcher (分发器,提供UI界面,将作业分发给JobManager)JobManager(作业管理器)TaskManager(任务管理器)JonManager每一个Flink应用程序都对应一个JobManager,JobManager是一个控制程序执行的主进程,我们提交的Job就是提交给Jobmanager;JobManager的主要作...原创 2020-03-01 22:05:20 · 643 阅读 · 0 评论 -
Flink的作业提交
Flink作业提交Flink作为一个分布式的计算引擎,类似于Spark,Flink有多重部署模式:standalone、k8s、yarn、mesosStandalone模式安装步骤:1.下载安装包,并分发配置好的2.配置flink-conf.yml & slave3.启动Flink集群4.确认Flink启动情况:http://localhost:8081/进程1 -Stan...原创 2020-03-01 14:53:58 · 900 阅读 · 0 评论 -
Flink介绍及简单实践
Flink介绍及简单实践Flink是一个分布式实时计算引擎的框架,主要用于对无界和有界数据流进行状态计算;由于被阿里等大厂广泛应用,所以现在在国内也是形成了一股热潮;Flink计算框架为什么这么火,得益于它的强大功能特征:低延迟高吞吐高扩展高可靠保证数据的准确性,良好的容错性状态管理复杂事件处理所以flink能保证发挥数据的最大价值学习建议:先实践,再深入笔记主要目的是...原创 2020-02-29 21:38:50 · 228 阅读 · 0 评论 -
Flink的kafka-connector(source\sink)简单实践
package com.shufang.sourceimport java.util.Propertiesimport org.apache.flink.api.common.serialization.SimpleStringSchemaimport org.apache.flink.streaming.api.scala._import org.apache.flink.strea...原创 2020-02-13 11:36:02 · 558 阅读 · 0 评论 -
初识Flink
FlinkFlink客户端的常用依赖 <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> ...原创 2019-09-24 16:33:31 · 117 阅读 · 0 评论