阿华田512
小红书 搜索阿华田512 即可获取所有专栏博客内容
展开
-
flink实战--metrics监控与rest api
Flink metrics简介 Flink的metrics是Flink公开的一个度量系统,允许收集flink程序的公开指标到外部系统,我们也可以自定义指标通过metric收集,实际开发时经常需要查看当前程序的运行状况,flink 提供了 UI 界面,有比较详细的统计信息。但是 UI 界面也有不完善的地方,比如想要获取 flink 的实时吞吐。本文将详细介绍如何通过metric......原创 2019-05-24 17:39:13 · 15556 阅读 · 7 评论 -
flink实战--flink原理解析
Flink出现的背景 我们知道目前流处理的主要流行的计算引擎有,Storm,SparkStreaming。但是这个两个计算引擎都有自己的局限性。Storm实现了低延迟,但是目前还没有实现高吞吐,也不能在故障发生的时候准确的处理计算状态(将数据从一个事件保存到另一个事件的,这些保留下来的是数据较计算状态),同时也不能实现exactly-once。SparkStreaming通过微批处理方法............原创 2018-09-30 15:40:22 · 21342 阅读 · 6 评论 -
flink实战--水印(watermark)终极总结
水印(waterMark) 了解水印前需要了解事件时间(eventTime)和处理时间(processTime)的概念,参考博客:https://blog.youkuaiyun.com/aA518189/article/details/82908993了解事件时间。 Flink通过水印来推进事件时间。水印是嵌入在流中的常规记录。计算程...原创 2018-12-24 15:12:23 · 7660 阅读 · 2 评论 -
flink实战--flinkSQL入门大全
FlinkSQL概念介绍Table API & SQL Apache Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。Table API是Scala和Java的语言集成查询API,允许以非常直观的方式组合来自关系运算符的查询,Table API和SQL接口彼此紧密集成,以及Flink的DataStream和DataSet A...原创 2018-11-12 18:07:03 · 25102 阅读 · 3 评论 -
flink实战--flink on yarn
Flink on yarn 配置如果我们打算把flink任务提交到yarn上,那么只需要一台flink客户机即可,但是需要有如下的配置第一步:设置HADOOP_CONF_DIR环境变量export HADOOP_CONF_DIR=/usr/local/service/hadoop/etc/hadooop/注意:如果在flink的配置文件中设置Hadoop的环境变量,......原创 2018-10-31 14:59:53 · 5875 阅读 · 6 评论 -
flink实战 -- flink SQL 如何解析复杂(嵌套)json
在日常的开发中,最常用的数据格式是 JSON ,并且有的时候 JSON 的格式是非常复杂的(嵌套的格式),那在 Flink SQL 中进行解析的时候也会相当麻烦一点,下面将会演示如何在 DDL 里面定义 Map、Array、Row 类型的数据,以及在 SQL 里面如何获里面的值。目前,JSON 模式总是从表模式派生。下表列出了从 Flink 类型到 JSON 类型的映射。说明数据都可以正常的解析出来,如果遇到更加复杂的 JSON 格式的数据,只需要比葫芦画瓢就可以了,在复杂的格式都不是问题.原创 2024-11-11 16:33:33 · 577 阅读 · 0 评论 -
flink实战 -- flink SQL 实现列转行
WITH ('connector' = 'kafka', -- 使用 kafka connector'properties.bootstrap.servers' = 'master:9092,storm1:9092,storm2:9092', -- broker连接信息'properties.group.id' = 'jason_flink_test', -- 消费kafka的group_id'scan.startup.mode' = 'latest-offset', -- 读取数据的位置。原创 2024-11-11 16:30:13 · 595 阅读 · 0 评论 -
flink实战-- flink任务的火焰图如何使用
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。如果某个方法调用在其中一个并行任务中占用了100%的资源,但在其他任务中没有占用,则可能会被平均化而掩盖住瓶颈。选择一个对应的子任务,您可以看到相应子任务的火焰图。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。混合模式的火焰图是由处于所有可能状态的线程的堆栈跟踪构建而成。级别上进行的, 即该算子的所有。原创 2024-11-05 21:12:01 · 508 阅读 · 1 评论 -
flink实战--如何基于java-agent技术增强Flink功能
一个Flink程序的运行,会依赖到一个或多个Connector(连接器),而这些连接器分为Source(主要用于读)和Sink(主要用于写),那么如果要监听到Flink作业流动的数据,我们这里可以简单尝试去查看支持Sink的Connector(例如:flink-connector-jdbc),看看 是否有实现一个公共的接口,然后对这个接口做监听,即可“读取”写入前的数据?接下来可以开始编写一个Agent类了,这里直接上代码。原创 2024-09-13 16:13:17 · 416 阅读 · 0 评论 -
paimon实战 --核心原理和Flink应用进阶
Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。原创 2024-05-15 15:15:38 · 927 阅读 · 0 评论 -
flink实战--⼤状态作业调优实践指南-Flink SQL 作业篇
作为一种特定领域语言,SQL 的设计初衷是隐藏底层数据处理的复杂性,让用户通过声明式语言来进行数据操作。而Flink SQL 由于其架构的特殊性,在实现层面通常需引入状态后端 配合 checkpoint 来保证计算结果的最终一致性。目前 Flink SQL 生成状态算子的策略由优化器根据配置项 + SQL 语句来推导,想要在处理有状态的大规模数据和性能调优方面游刃有余的话,用户还是需要对 SQL 状态算子生成机制和管理策略有一定了解。原创 2024-06-04 20:27:10 · 676 阅读 · 1 评论 -
flink实战--大状态任务调优指南-DataStream作业
在 Flink 中,状态管理是流处理应用的核心概念之一,它允许算子(operators)在处理事件时保持和操作状态信息。在 Flink 中,状态可以被视为算子的“记忆”,它使得算子能够在处理无界流数据时保持对历史数据的跟踪。状态可以是简单的键值对,也可以是更复杂的数据结构,如列表、集合或自定义对象。状态的更新和查询对于实现复杂的流处理逻辑至关重要。具体说来,首先,Checkpoint 是 Flink 的一种容错机制。原创 2024-06-03 21:11:39 · 284 阅读 · 1 评论 -
flink实战--Flink任务资源自动化优化
想要对 Flink 任务的消息处理能力进行分析,第一步便是获取该实时任务的 Kafka 数据源 Topic,目前如果数据源不是 Kafka 的话,我们不会进行分析。我们实时平台每天会定时扫描所有正在运行的 Flink 任务,在任务内存方面,我们能够结合 实时任务 GC 日志,同时根据内存优化规则,计算出 Flink 任务推荐的堆内存大小,并与实际分配的 Flink 任务的堆内存进行比较,如果两者相差的倍数过大时,我们认为 Flink 任务的内存配置存在浪费的情况,接下来我们会报警提示到平台管理员进行优化。原创 2024-03-08 14:52:04 · 418 阅读 · 0 评论 -
flink实战--flink的job_listener使用解析
自定义listener,只需要实现对应的接口。并将您的逻辑写入重写的函数中。Flink JobListener 接口有两种方法,一种是提交,一种是完成。接口的定义如下。两种方法都有两个参数。一个常见的参数是 Throwable。Throwable 参数是进程抛出的错误(如果有)。让我们分别看看这两种方法。Flink JobListener接口:onJobSubmitted顾名思义,只要提交作业以供执行,就会调用此函数内的代码,并调用该方法。原创 2024-02-04 10:49:47 · 763 阅读 · 0 评论 -
flink实战--FlinkSQl实时写入hudi表元数据自动同步到hive
为了实现hive, trino等组件实时查询hudi表的数据,可以通过使用Hive sync。在Flink操作表的时候,自动同步Hive的元数据。Hive metastore通过目录结构的来维护元数据,数据的更新是通过覆盖来保证事务。但是数据湖是通过追踪文件来管理元数据,一个目录中可以包含多个版本的文件。这一点和Hive元数据管理是不同的。所以说为了兼容Hive metastore,Hudi需要实时从Timeline同步元数据到Hive metastore。原创 2023-03-31 15:42:40 · 1546 阅读 · 1 评论 -
hudi实战-- hudi on flink 参数配置大全
1.设置单个主键2.设置联合主键。原创 2023-01-05 10:31:37 · 1141 阅读 · 0 评论 -
flink实战--flinkSQL写入hudi的四种方式
hudi官方提供了下面四种方式写入hudi,可以根据不通的业务需求选择合适的方式。原创 2023-01-04 15:05:56 · 2273 阅读 · 0 评论 -
flink实战--flinksql从基础到进阶必会知识点终极总结
随着社区FlinkSQL功能越来越完善,处理实时\离线数据相比于DataStream更加简单高效。因此FlinkSQL已经成为学习Flink中最重要的模块之一。虽然FlinkSQL相比DataStream使用起来简单高效,但是很多语法(DML,DDL,UDF,窗口聚合,实时topN等)还是需要一定学习成本,为了让大家快速全面的掌握FlinkSQL,本文将从全局视角梳理FlinkSQL中必学的知识点。.....................原创 2022-07-24 17:06:30 · 890 阅读 · 0 评论 -
flink实战--开发中常见的错误与问题
常见错误集1.Checkpoint失败:Checkpoint expired before completing env.enableCheckpointing(1000L) val checkpointConf = env.getCheckpointConfig checkpointConf.setMinPauseBetweenCheckp...原创 2019-12-19 20:55:02 · 21843 阅读 · 3 评论 -
flink实战--资源分配与并行度(runtime)
简介 Flink运行时主要角色有两个:JobManager和TaskManager,无论是standalone集群,flink on yarn都是要启动这两个角色。JobManager主要是负责接受客户端的job,调度job,协调checkpoint等。TaskManager执行具体的Task。TaskManager为了对资源进行隔离和增加允许的task数,引入了slot的.........原创 2019-01-17 19:13:30 · 11849 阅读 · 10 评论 -
flink实战--窗口与窗口函数终极解析
本文主要介绍flink窗口的操作,相关窗口基础概念参考博客:https://blog.youkuaiyun.com/aA518189/article/details/82908993Flink的windows类型按照行为划分可分为三类:翻滚窗口(Tumbling Window,无重叠) 滚动窗口(Sliding Window,有重叠) 会话窗口(Session Window,活动间隙)按...原创 2018-12-25 18:42:26 · 5503 阅读 · 6 评论 -
flink实战--flink整合kafka (kafka source 与 kafka sink)
简介 Flink提供的Kafka连接器,用于向Kafka主题读取或写入数据。Flink Kafka Consumer集成了Flink的检查点机制,可提供一次性处理语义。为实现这一目标,Flink并不完全依赖kafka的消费者群体偏移跟踪,而是在内部跟踪和检查这些偏移。Maven 依赖 支持到的版本 生产者和消费者类的名成 Kafka version...原创 2018-12-26 22:06:30 · 15233 阅读 · 4 评论 -
flink实战--CheckpointedFunction 自定义带有状态的算子
简介CheckpointedFunction是stateful transformation functions的核心接口,用于跨stream维护state snapshotState在checkpoint的时候会被调用,用于snapshot state,通常用于flush、commit、synchronize外部系统 initializeState在parallel function初始...原创 2020-12-09 16:06:37 · 1358 阅读 · 0 评论 -
flink实战 -- flink on yarn 任务日志收集与监控
背景 在 Flink on yarn 的模式下,taskManager的日志会存储到所在的DataNode上,当 Flink 任务发生异常,产生异常日志时,需要我们第一时间感知任务已经出现异常,避免影响业务。因此我们需要将Flink任务的日志实时收集起来,出现异常日志立刻报警,做的真正意义上的实时报警,而不是等flink任务掉线了在发出报警。收集到了任务日志,即使任务掉线了也方便我们通过日志定位问题。日志收集方案 在 Flink 1.1...原创 2021-09-02 21:00:03 · 3959 阅读 · 1 评论 -
flink实战--flink on k8s (Kubernetes)
Flink on Kubernetes 的发展历史 在 Flink 的早期发行版 1.2 中,已经引入了 Flink Session 集群模式,用户得以将 Flink 集群部署在 Kubernetes 集群之上。随着 Flink 的逐渐普及,越来越多的 Flink 任务被提交在用户的集群中,用户发现在 session 模式下,任务之间会互相影响,隔离性比较差,因此在 Flink 1.6 版本中,推出了 Per Job 模式,单个任务独占一个 Flink 集群,很大的程度上...原创 2020-10-19 17:40:34 · 4868 阅读 · 3 评论 -
flink实战--flinksql窗口提前触发参数解析
正常线上业务计算设置的window窗口比较大,比如1个小时,甚至1天,一周。那么是不是只能在窗口结束之后才能看到数据呢?是否看到中间数据?对于实时的任务,每天或者一周结束的时候,才输出计算的结果,没有任何意义,我们需要的是实时更新的中间结果数据。比如实时的PV,UV等指标计算。下面介绍一下FlinkSQL如何提前触发窗口计算。在代码中设置如下两个参数:不开启提前触发窗口如下 demo,从 kafka 读取数据, 窗口聚合,输出一天的 pv、uv注:为了方便测试,1 天的窗口改为 1 分钟的窗原创 2022-06-21 15:40:40 · 1705 阅读 · 0 评论 -
flink实战--flinksql 窗口TVF
表值函数(, TVF),就是指返回值是⼀张表的函数,其实z在Oracle、SQL Server等数据库中屡⻅不鲜。⽽在Flink的上⼀个稳定版本1.13中,社区通过FLIP-145提出了窗⼝表值函数(window TVF)的实现,⽤于替代旧版的窗⼝分组(group window)语法。本文将从 Window TVF 语法、近实时累计计算场景、 Window 性能优化、多维数据分析,来介绍TVF使用。对比发现:TVF 语法更加灵活。............原创 2022-08-11 21:19:43 · 1375 阅读 · 0 评论 -
flink实战--读写Hive( hive on flink )
Flink onHive 介绍 Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表,Hive 是大数据领域最早出现的 SQL 引擎,发展至今有着丰富的功能和广泛的用户基础。之后出现的 SQL 引擎,如 Spark SQL、Impal...原创 2019-08-28 15:01:16 · 10732 阅读 · 6 评论 -
flink实战--flinksql使用Streaming Sink将数据流写入文件系统
扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦Streaming Sink简介 Streaming Sink支持流的写操作,基于Flink的流文件接收器将数据写入文件。行编码格式是csv和json。批量编码的格式有parquet, orc和avro。极大的方便了我直接编写SQL,将流数据插入到非分区表中。如果是分区表,则可以配置分区相关的操作,本篇文章将详细介绍Streaming Sink相关的概念和使用方式。滚动策略 ...原创 2020-09-22 18:29:33 · 1578 阅读 · 0 评论 -
flink实战--反压机制与背压指标计算原理
简介 流处理系统必须能优雅地处理反压(backpressure)问题,因为实时流处理必然会遇到产这样的场景:短时负载高峰导致系统接收数据的速率远高于它处理数据的速率。反压如果不能得到正确的处理,可能会导致资源耗尽甚至系统崩溃,目前主流的流处理系统Storm/Spark Streaming/Flink 都已经提供了反压机制,不过其实现各不相同。spark的反压机制参考...原创 2020-03-12 11:52:46 · 3359 阅读 · 2 评论 -
flink实战--flinksql自定义table source
自定义FlinkSQL流程总结与案例原创 2022-07-24 16:39:33 · 1126 阅读 · 2 评论 -
flink实战--状态管理(State TTL、Operator state、Keyed state)
简介 使用flink进行实时计算中,会遇到一些状态数不断累积,导致状态量越来越大的情形。例如,作业中定义了超长的时间窗口,或者在动态表上应用了无限范围的 GROUP BY 语句,以及执行了没有时间窗口限制的双流 JOIN 等等操作。对于这些情况,经常导致堆内存出现 OOM,或者堆外内存(RocksDB)用量持续增长导致超出容器的配额上限,造成作业的频繁崩溃。从 ...原创 2020-03-13 10:07:27 · 2479 阅读 · 1 评论 -
flink实战-- 生产环境flink程序注意事项
简介 正常情况下Flink 社区已尝试为每个配置提供合理的默认值,但是特殊应用场景需要我们设置具体配置项确保我们线上程序可以高性能的运行,重启等。本篇文章将详细介绍一下线上环境flink程序注意事项,避免入坑。1. application未来能扩展到的最大parallelism默认的值由application第一次启动时决定:如果所有operator的最大parallelism小于等于128,则默认值等于128 否则默认值 = MIN(nextPowerOfTwo(para...原创 2022-05-27 10:19:43 · 468 阅读 · 1 评论 -
flink实战--CDC (Change Data Capture )终极总结
CDC简介 CDC,Change Data Capture,变更数据获取的简称,用于从数据库中捕获已提交的更改并将这些更改传播到下游使用者。这些变更可以包括INSERT,DELETE,UPDATE等.在Flink社区中,能够轻松地将这些变更日志提取并解释为Table API / SQL的功能是Flink社区中非常需要的功能-现在Flink 1.11可以实现这一功能。 为了将Table API / SQL的范围扩展到CDC之类的用例,Flink 1..........原创 2020-08-12 15:49:55 · 4506 阅读 · 0 评论 -
flink实战--StreamGraph,JobGraph,ExecutionGraph生成流程解析
简介 Flink在执行用户的任务时,会涉及到StreamGraph,JobGraph,ExecutionGraph,物理执行图。其中StreamGraph和JobGraph是在client端生成的,ExecutionGraph是在JobMaster中执行的,本文将详细介绍这些Graph的生成流程,方便大家对Flink内部执行流程有一个清晰的认识。StreamGraph是根据用户代码生成的最原始执行图,也就是直接翻译用户逻辑得到的图 JobGraph是对StreamGraph进行优化.....原创 2022-03-26 18:03:01 · 878 阅读 · 0 评论 -
flink实战--flinksql连接器(jdbc-connector)添加对clickhouse的支持
简介 在目前的所有的flink版本中,flinksql原生还不支持直接ddl的当时创建clickhouse表,进行业务开发。需要我们自己实现clickhouse的connector。本文将详细介绍通过改造原生flink-connector-jdbc添加对clickhouse的支持。步骤 第一步:模仿MySQLDialect编写自己的ClickHouseDialect,代码如下:public class ClickHouseDialect extends.........原创 2021-02-04 20:31:49 · 3648 阅读 · 0 评论 -
flink实战--数据写入clickhouse(自定义ClickHouseSink 与jdbc sink)
简介 Clickhouse 支持http协议的web方式进行访问,也支持JDBC或者ODBC的驱动程序的客户端进行访问,我们使用Flink操作Clickhouse ,可以想操作mysql一样通过JDBC的方式进行访问,本文将具体介绍flink实时写入Clickhouse的实现方式,对于flink自定义sink,参考上篇博客:https://blog.youkuaiyun.com/aA518189/article/details/86544844。Flink数据写入Clickhouse步骤...原创 2020-06-06 18:24:56 · 8011 阅读 · 4 评论 -
flink实战--flink读取hdfs目录下多个文件(递归、正则匹配)
简介 在日常开发中读取hdfs文件是很频繁的操作,并且在这个过程中我们可能会有如下需求: 读取某个目录下的所有的文件,也就是递归读取hdfs的目录 按条件读取hdfs,也就是正则表达式读取目录下的文件看到这些需求,我们可能想到spark都支持的不错,Flink支持的怎么样呢?本篇文章详细介绍一下Flink如何实现,递归,正则表达式等方式读取hdfs的目录。Flink递归读取hdfs上多路径文件 比如,读取如下dat...原创 2020-05-29 16:23:28 · 7773 阅读 · 5 评论 -
flink实战--如何自定义具有Exactly-Once语义的sink(TwoPhaseCommitSinkFunction)
Exactly-Once 语义 指的是每个输入的事件只影响最终结果一次。即使机器或软件出现故障,既没有重复数据,也不会丢数据。Flink一次性语义实现原理 说到flink的Exactly-Once,要区分实现的范围。在 Flink 1.4.0 之前,Exactly-Once 语义仅限于 Flink 应用程序内部,并没有扩展到 Flink 数据处理...原创 2020-04-21 09:56:13 · 2404 阅读 · 0 评论 -
flink实战--延迟监控 metrics.latency.interval
背景 流处理系统进行数据计算时,数据延迟是不可接受的,但是又不可避免的。因此延迟监控在流处理框架中ji'wei原创 2021-06-05 17:55:20 · 2222 阅读 · 1 评论