自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 flink cdc,读取datetime类型

需要注意的是,如果您使用的是Flink 1.13或以上版本,可以直接使用Flink的内置Debezium插件来实现CDC任务,无需安装其他插件。Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。- 使用 Flink DataStream API:如果你更喜欢使用 Flink DataStream API,可以通过创建 CDCSourceFunction 并配置相应的参数来创建 Flink CDC 数据源。

2024-05-10 11:41:22 1006 1

原创 shell脚本echo打印错位

Unix系统里,每行结尾只有“<换行>”,即“\n”,Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”,Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行,而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。因此,\r就是return回到本行行首,这就会把这一行以前的输出覆盖掉。经过测试,发现获取到的返回值是没问题的,但可能带了某些不可见的字符。

2024-04-11 13:40:34 754

原创 Hudi小文件压缩

为了避免这种情况的发生,flink离线压缩hudi表每次只压缩一个commit,这样可以保证每个commit的数据都被完整地压缩,同时也减小了故障发生的概率,提高了数据的可靠性。此外,这种方式还可以实现增量压缩,只压缩新增或者修改的数据,而不需要重新压缩整个数据集,可以提高压缩效率。当我们压缩多个commit时,会先将这些commit的数据合并到一个新的commit里面,然后再进行压缩,但是如果在合并的过程中发生了故障,就有可能导致合并后的数据丢失,这样就会导致数据不完整或者出现错误。

2024-03-07 10:01:17 933

原创 Hudi配置参数优化

3.数据去重:一批增量数据中可能会有重复的数据,Hudi会根据主键对数据进行去重避免重复数据写入Hudi 表。4.数据fileId位置信息获取:在修改记录中可以根据索引获取当前记录所属文件的fileid,在数据合并时需要知道数据update操作向那个fileId文件写入新的快照文件。8.hive元数据同步:hive 的元素数据同步这个步骤需要配置非必需操作,主要是对于hive 和presto 等查询引擎,需要依赖hive 元数据才能进行查询,所以hive元数据同步就是构造外表提供查询。

2024-02-28 10:34:28 604

原创 hudi系列- mor表写过程

每个分区下的桶数量为是bucket_assigner算子的并行度,每个桶始终由多个assigner中固定的一个生成和分配,桶(fileId)与assigner之间存在映射关系,通过fileId可以判断是否。基于状态索引的tagLocation过程,即确定第条记录应该写到哪个fileId。这个过程做了小文件优化,避免产生过多的小文件(重用fileId),判断文件。参考WriteProfile</id1,parition1>如何为记录分配Location?该assigner.

2024-02-27 18:39:35 913

原创 flink - sink - hive

hive的依赖,此依赖应该放在flink-shaded-hadoop后面,让工程优先访问flink-shaded-hadoop的依赖。dataStream转为flink table,再通过hive catalog写入到hive表中。以下依赖均可以放到flink lib中,然后在pom中声明为provided。没有hadoop环境时可以用此依赖代替。flink对hive的核心依赖。

2024-02-27 17:34:07 483

原创 Hudi程序导致集群RPC偏高问题分析

即根据提交的次数,默认为1,可以通过设置参数hoodie.clean.max.commits​进行修改,在flink job的每次checkpoint时都会进行触发策略的条件判断,所以在两次chekpoint之间发生过1次或n次提交,都会触发清理动作。清理旧文件需要考虑数据查询的情况,有些长查询会占用着旧版本的文件,需要设置合适的清理策略来保留一定数量的commit或者文件版本,以提高系统的容错性。清理逻辑的流程,主要包含有三个步骤:生成清理计划、刷新ActiveTimeline、执行清理计划。

2024-02-22 13:45:35 762

原创 数据湖Paimon入门指南

如果用户建表时指定'merge-engine' = 'partial-update',那么就会使用部分更新表引擎,可以做到多个 Flink 流任务去更新同一张表,每条流任务只更新一张表的部分列,最终实现一行完整的数据的更新,对于需要拉宽表的业务场景,partial-update 非常适合此场景,而且构建宽表的操作也相对简单。这种方式的成本相对较高,同时官方不建议这样使用,因为下游任务在 State 中存储一份全量的数据,即每条数据以及其变更记录都需要保存在状态中。流式查询将不断产生最新的更改。

2024-02-04 16:43:18 1105

原创 FlinkCDC中文乱码问题

flink-conf.yaml文件中添加两个参数。注意添加位置在最后,防止被覆盖。

2024-01-31 16:33:22 168

原创 Flink集成Hive之Hive Catalog

流程流程:Flink消费Kafka,逻辑处理后将实时流转换为表视图,利用HiveCataLog创建Hive表,将实时流 表insert进Hive,注意分区时间字段需要为 yyyy-MM-dd形式,否则抛出异常:java.time.format.DateTimeParseException: Text '20240111' could not be parsed。

2024-01-12 09:34:10 1289

原创 Canal采集配置

2、common参数定义,比如可以将instance.properties的公用参数,抽取放置到这里,这样每个instance启动的时候就可以共享. 【instance.properties配置定义优先级高于canal.properties】aliyun账号的ak信息 (如果不需要在本地binlog超过18小时被清理后自动下载oss上的binlog,可以忽略该值)2、instance.properties (instance级别的配置文件,每个instance一份)是否开启binlog并行解析模式。

2024-01-10 09:15:49 910

原创 FlinkOnYarn 监控 flink任务

通俗的说就是一个能够接受json,处理json,输出json的程序,反正很好用。获取线运行job任务,记录到日志文件。这里shell脚本也只记录,flink-on-yarn 这种部署方式任务监控。只需要监控实时yarn 任务有没有处于RUNNING,达到监控的目的。Flink任务一般为实时不断运行的任务,如果没有任务监控,Flink任务监控(基于API接口编写shell脚本)这里通过调用API接口方式来获取参数,实现任务监控。shell脚本水平有限,大家多多谅解,欢迎指导。获取这个任务单个信息。

2024-01-08 14:06:19 878

原创 FlinkRestAPI

如果输出结果为空,则说明 Flink 客户端没有安装在系统路径中。在这种情况下,您可以通过设置。which flink 找到Flink客户端地址。环境变量来指定 Flink 客户端的路径。

2024-01-08 10:10:02 741

原创 FlinkSQL处理Canal-JSON数据

在正常的操作环境下,Canal能够以exactly-once的语义投递每条变更事件,Flink能够正常消费Canal产生的变更事件。此时,Canal可能会投递重复的变更事件到Kafka中,当Flink从Kafka中消费的时候就会得到重复的事件,可能导致Flink query的运行得到错误的结果或者非预期的异常。ISO-8601:解析yyyy-MM-ddTHH:mm:ss.s{precision}格式的输入时间戳,例如2020-12-30T12:13:14.123,并以相同的格式输出时间戳。

2024-01-04 10:06:09 1379

原创 Hudi介绍

在数据不断写入 Hudi 期间,Hudi 会不断生成 commit、deltacommit、clean 等 Instant 记录每一次操作类型、状态及详细的元数据,这些 Instant 最终都会存到 .hoodie 元数据目录下,为了避免元数据文件数量过多,ActiveTimeline 越来越长,需要对比较久远的操作进行归档(archive),将这部分操作移到 .hoodie/archive 目录下,单独形成一个 ArchivedTimeline。Clean文件的存在可以确保数据的清理操作被记录和跟踪。

2023-12-16 16:26:59 130

原创 Flink-Hudi连接器

hudi连接器_实时计算Flink版-阿里云帮助中心 (aliyun.com)

2023-10-24 10:20:21 83

原创 Hive的文件合并

背景:Flink数据写入到stage层,然后再入ods层,中间导致hive数据实时性不强,随后做优化,Flink之间以orc格式写入到hive。3.stg 和 ods 的 tb_bu_dc_monitor_day 是外部表,其他层的表都是内部表;/_SCRATCH0 这些目录是sqoop 把mysql数据导入hive时生成的临时目录,可以删除。使用hive concatenate (外部表不可用,内部表可用,orc可用,分桶表不可用)1.stg层是把flink应用程序写入的数据load进入的;

2023-10-11 17:06:24 625

原创 HBase表更改压缩方式后的数据大合并

major_compact会重新读写数据,在这个流程中,对原有的数据进行压缩,但是如果表数据很大执行major_compact对hbase集群会有比较大的影响。alter 'table', NAME => 'info', COMPRESSION => 'SNAPPY' //修改表属性,指定压缩方式为SNAPPY。1.在执行alter之后,hbase表已经启用压缩,但是对于原来表里已有的数据并不会进行压缩,后续再写入的数据才会执行压缩(可以到hdfs验证)enable 'table' //启用表。

2023-08-10 09:15:42 207

原创 hdfs中的租约机制及Flink写hdfs文件未关闭及ORC

主租约是由文件的创建者持有的,它控制着文件的写入和编辑权限。主租约的持有者可以选择将租约延长,以延续对文件的写入和编辑权限。在HDFS中,租约机制的主要目的是确保并发写入时的数据一致性和文件的完整性。通过租约机制,HDFS可以保证在同一时间只有一个用户可以对文件进行写入或编辑操作,从而避免了数据冲突和一致性问题的发生。3、文件资源限制,hdfs系统对同时打开的文件数量有限制,如果某个任务没有关闭文件,会占用文件资源位置,当文件资源达到。上限,其他任务无法打开新的文件进行写入,只能等待上一个文件的租约释放。

2023-07-14 16:11:37 1107

原创 HBase写入性能太低

HBase 是基于 LSM tree 数据结构实现的,在写入时需要进行数据排序、合并等操作,相比 HDFS 的追加写入来说,延迟会更高。可以通过优化 HBase 的配置或者选择其他的 NoSQL 数据库来提升性能,同时也可以考虑在 Flink 中增加缓存等方式,提高写入效率。而 HBase 是分布式数据库,每个 RegionServer 只负责一部分数据,写入时可能存在热点问题,导致性能较差。Flink 在写入 HBase 时,默认只有一个并发度,如果数据量较大,可能会导致写入过慢。

2023-04-18 17:01:56 849 1

原创 数字化转型

【数字化转型之路】深度解析中国联通的“四天”体系 - 知乎 (zhihu.com)

2023-02-09 09:35:04 95

原创 Kafka生成者/消费组详解

什么是KafkaKafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。

2023-02-06 15:01:28 2860

原创 Flink天级别窗口聚合的时区问题

比如首先,我们的时区是东八区,在我们的视野中时间应该减去8小时的offset,才是我们看到的时间,所以在使用flink的窗口的时候往往比我们当前的时间少8小时。也是1970年1月1日,实际上时分秒是0点0分0秒,这里打印出来的时间是8点而非0点,原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我们的电脑时区设置为东8区,故打印的结果是8点。时区的问题是,在处理数据的时候我们是东八区,要对当前要处理的时间加上8小时,才是符合我们预期的。说java纪元跟本文将的flink时间问题有啥关系呢?

2023-01-31 11:10:00 765

原创 HBase的site.xml配置(分区策略)

flush:将写缓存中的数据,上传到hdfs上,每次flush后,每个写缓存中的列族文件都会在hdfs上产生一个存储文件。MemStore 刷写时机:1.当某个 memstroe 的大小达到了hbase.hregion.memstore.flush.size(默认值 128M),其所在 region 的所有 memstore 都会刷写。当 memstore 的大小达到了。

2022-10-27 10:02:53 882

原创 有关flink数据消费速度的问题

1、反压产生的场景反压经常出现在促销、热门活动等场景。短时间内流量陡增造成或者。Flink会因为数据堆积和处理速度变慢超时,而checkpoint是Flink保证数据一致性的关键所在,最终会。

2022-10-12 10:11:13 4530

原创 性能优化:一个 Flink 参数节省了 50% 的 CPU 消耗

Flink 大并发任务(超过 500 并发)在使用 keyBy 或者 rebalance 的情况下,将 bufferTimeout 设置为 1s 可以节省 30~50% 的 CPU 消耗。中等并发任务也会有不少收益。

2022-09-26 17:23:53 1913

原创 HBase shell常用命令

scan '表名',{STARTROW=>'start_row_key',STOPROW=>'stop_row_key'}scan '表名', { COLUMNS => [ 'info:regioninfo'] }在扫描的时候在stoprow=>rowkey前缀后面加一个z。根据rowkey模糊查询。

2022-09-16 11:05:11 1574

原创 CkeckPoint优化

如果在配置的 Checkpoint 时间间隔之内,一个 Checkpoint 正在生产,另一个 Checkpoint 也需要开始生产,那么,第二个 Checkpoint 将会等到第一个 Checkpoint 生产完成才会开始。比如,你配置最小停顿时间是一分钟,那么在一个 Checkpoint 生产完成之后的头一分钟,不会有新的 Checkpoint 被拉起,这仅限于同时最多只有一个 Checkpoint 生产的情况。Checkpoint 的配置需要随着 Flink 应用程序的不同而不同。

2022-09-08 14:43:23 756

原创 JobManager 内存简介

Flink JobManager 内存模型相关配置参数说明。组成部分配置参数描述JVM 堆内存JVM 堆内存堆外内存JobManager 的堆外内存(直接内存或本地内存)默认值:128MBFlink JVM 进程的 Metaspace默认值256mbJVM 开销用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分。

2022-09-07 17:31:42 1787

原创 Flink集群报错误:akka.pattern.AskTimeoutException: Ask timed out on

akka.ask.timeout 默认为10 s,如果你加长了这个超时时长,会发现仍然解决不了,你得修改 web.timeout 为大于10000才行。

2022-09-06 11:10:57 2798

原创 Flink reduce详解

等到整个窗口触发的时候,才把reduce计算的结果发送出去。从代码中可以看到reduce是跟在keyBy后面的,这时作用于reduce的类是一个KeyStream的类,reduce会保存之前计算的结果,然后和新的数据进行累加,所以每次输出的都是历史所有的数据的总和。2、window算子之后的reduce,其实计算的是window窗口内的数据和,每次窗口触发的时候,才会输出一次结果。的方式,一种是正常的reduce,一种是windows窗口的reduce,本文主要介绍两种reduce方式的区别。......

2022-08-30 17:24:17 1202

原创 服务器宕机了,数据会丢失吗

对于Kafka有三个问题:数据丢失、数据重复、数据顺序。

2022-08-30 15:57:39 688

原创 Pulsar与Kafka中消息保留策略

通过保留的消息字节数来判断小是否过期,它的值通过参数log.retention.bytes来指定,作用在每一个分区上,也就是说如果一个包含8个分区的主题,并且log.retention.bytes被设置为1GB,那么这个主题最多可以保留8GB的数据,所以,当主题的分区个数增加时,整个主题可以保留的数据也随之增加。实际上,我们应该避免存在大量未确认消息的情况,因为这可能意味着对磁盘空间的巨大压力。在配置的时间范围之后,Pulsar 会自动确认这些消息,强制移动光标。这也意味着这些消息已准备好被删除。

2022-08-24 16:30:45 539

原创 Flink任务调度原理之TaskManager 与Slots

每一个worker(taskmanager)为了控制能接受多少个Task,worker会通过task slot来进行控制,一个worker至少有一个task slot,那么怎么处理呢?总结:1、Flink中每一个TaskManager都是一个JVM进程,它可能会在独立的线程上执行一个或多个subtask;2、为了控制一个TaskManager能接收多少个task,TaskManager会通过task slot来进行控制,一个TaskManager至少有一个slot。

2022-08-24 13:47:31 1297

原创 HDFS查看文件行数及大小

利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。第二列标示该目录下所有文件在集群上的总存储大小和你的副本数相关,我的副本数是3 ,所以第二列的是第一列的三倍 (第二列内容=文件大小*副本数)-c或–bytes或——chars:只显示Bytes数;第一种方式:查看当前目录下的各级目录分别大小。hdfs dfs -du -s -h /目录。-l或——lines:只显示列数;-w或——words:只显示字数。

2022-08-23 17:48:48 7878

原创 Flink测试资源异常总结及checkpoint机制

各个算子(或者说Task) 做完 Checkpoint 之后,再上报 JobManager,JM收到所有算子的ACK,则认为这次CP。解决 1,增加超时时间 2,增加机器性能 3,减少数据处理量 :source并行度 和窗口数据量减少,sink 并行度增加。各个Source 算子一旦收到 Barrier 之后,开始Init自身的State,并同时向下游发送 Barrier;2、failover的节点对应TM的内存设置太小,GC严重导致心跳超时,建议调大对应节点的内存值。解决办法:重新设置并行度;...

2022-08-18 15:43:56 1319

原创 Flink中ExactlyOnce与AtleastOnce

理解这两种语义,首先要了解Barrier流的barrier是Flink的Checkpoint中的一个核心概念.多个barrier被插入到数据流中,然后作为数据流的一部分随着数据流动(有点类似于Watermark),这些barrier不会跨越流中的数据每个barrier会把数据流分成两部分:一部分数据进入当前的快照,另一部分数据进入下一个快照.每个barrier携带者快照的id.barrier不会暂停数据的流动,所以非常轻量级。...

2022-08-12 09:16:17 1011 1

原创 Pulsar中游标的工作原理

由于代理是无状态的,而游标是有状态的,因此 Pulsar 将消费位置信息存储在 BookKeeper 中。当代理收到来自使用者的确认时,它会更新使用者绑定到的订阅的游标分类账。在使用者失败的情况下,消息消耗和确认信息仍然是安全的,并且在重新开始使用时不会重新计算任何消息。这是因为游标分类帐数据根据配置的副本策略(即 Ensemble Size、Write Quorum 和 Ack Quorum 的值)安全地存储在 bookies 上。为了提供这种能力,消息系统需要一个精确的跟踪机制来用于消息消费和确认。..

2022-08-09 10:08:29 669

原创 聊聊flink的BoundedOutOfOrdernessTimestampExtractor

本文研究一下Flink中的BoundedOutOfOrdernessTimestampExtractor。

2022-08-01 11:15:26 798

原创 pulsar起client客户端时(client,producer,consumer)各个配置

pulsar2.3版本支持多url。可这样配置serviceURL;//设置消息发送超时时间,*consumer配置。client配置信息。//设置集群路由策略。

2022-07-28 09:18:17 1406

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除