全部文章Ta的评论
- hudi表的数据一直在演变过程中,存储在文件系统中的数据文件也在不断增加和版本迭代,hudi提供了表级别的文件系统视图(filesystem view)来简单、直观地了解表中的数据分布情况、数据文件的状态和变化,以及数据的版本控制信息矛始2024-05-0730
- hudi使用mvcc来实现数据的读写一致性和并发控制,基于timeline实现对事务和表服务的管理,会产生大量比较小的数据文件和元数据文件。大量小文件会对存储和查询性能产生不利影响,包括增加文件系统的开销、文件管理的复杂性以及查询性能的下降。对于namenode而言,当整个集群中文件数到了几千万,就已经会变得很不稳定了矛始2024-05-06430
- 矛始2024-05-06210
- 矛始2023-03-281220
- 矛始2023-02-18402
- hudi有很多种写入流程,使用不同的表类型、写类型(WriteOperationType)、索引类型(IndexType),流程上都会有所差异。使用flink流式写MOR表场景比较多,顺道梳理一下这个流程的细节矛始2023-05-17150
- 做数据同步受存储引擎和采集工具的限制,经常都是全量定时同步,亦或是以自增ID或时间作为增量的依据进行增量定时同步,无论是哪种,都存在数据延时较大、会重复同步不变的数据、浪费资源等问题。后来刚接触canal时还大感惊奇,基于mysql的binlog可以这么方便实时同步最新数据,然而历史数据的初始化仍然得使用第三方ETL工具来全量同步。直到flink cdc项目诞生,完全解决了前面的痛点。实时技术的发展已经不能满足于数据只能实时采集,还需要实时地进行数据建模和数据分析,即全链路实时。矛始2023-05-17220
- 矛始2023-05-1770
- 直至flink cdc 2.3,只有mysql全面支持了无锁的增量快照和动态加表等高级特性,有部分其它connector也集成了增量快照框架,很遗憾准备使用的postgres还停留在1.x,都知道1.x有很多使用限制矛始2023-05-17520
- 矛始2023-03-06940
- 矛始2023-03-28870
- hudi支持多种数据写入方式:insert、bulk_insert、upsert、boostrap,我们可以根据数据本身属性(append-only或upsert)来选择insert和upsert方式,同时也支持对历史数据的高效同步并嫁接到实时流程。矛始2023-03-141550
- 矛始2023-02-221581
- hudi的文件布局是能实现增量查询、数据更新等特性的基础,每个hudi表有一个固定的目录,存放元数据(.hoodie)以及数据文件,其中数据文件可以以分区方式进行划分,每个分区有多个数据文件(基础文件和日志文件),这些数据文件在逻辑上被组织为文件组、文件分片矛始2023-02-151370
- 一般来说在使用Streaming Api编程时都建议给算子自定义uid,特别有些转换涉及到状态,因为算子ID是算子和状态之间的纽带,一直都认为指定的uid就是最终的算子ID。但是在基于flink sql层次编程时,很多时候并不清楚整个job最由多少个算子组成,也不知道每个算子的ID是怎么生成的,以及如果进行个修改会不会不能从状态中恢复。矛始2023-03-282860
- 矛始2022-12-161050
- 在生产环境中肯定不能随意暴露明文密码,经过查找,还没发现可以支持配置加密密码,在使用时解密的处理方案。但是可以通过 Hadoop Credential Providers 功能把密码保存到密钥库中,然后移除配置文件中的密码项矛始2022-12-291030
- hudi的两大特性:流式查询和支持upsert/delete,hudi的数据变更是基于timeline的,所以时间点(Instant)就成为了实现增量查询的依据。在与flink集成中,当开启了流式读,其实就是一个持续的增量查询的过程,可以通过配置参数read.start-commit和read.end-commit来指定一个无状态的flink job的初始查询范围。矛始2022-12-10900
- hudi提供三种查询方式:读优化、快照读、增量读,无论是哪种方式,由于hudi的文件组织是有版本的概念(FileGroup,FileSlice),旧版本的文件持续在执行清理,如果被清理的文件正在读取或者即将被读取到,那岂不是很影响使用,所以我们需要设置合理的清理策略保障上层数据处理任务的平稳运行,提高系统的容错性。矛始2022-12-113470
- 矛始2022-12-112880
- flink可以以local或cluster方式运行job,一般来说在本地开发调试时就以local在idea中运行,完成后就提交到cluster.根据资源管理器不同又可以分为standalone,yarn,k8s等,从命令参数也可以看出,flink对yarn和k8s的支持是最好的。矛始2022-12-111400
- hudi会不断生成commit、deltacommit、clean等类型的Instant从而形成活跃时间轴(ActiveTimeline),随着时间增长,时间轴变长,.hoodie元数据目录下的文件不断累积,为了限制元数据文件数量,需要对一些比较久远的元数据文件进行归档,保存到.hoodie/archived目录下,可以称之为归档时间轴(ArchivedTimeline)。矛始2022-12-112070
- 压缩(compaction)仅作用于MergeOnRead类型表,MOR表每次增量提交(deltacommit)都会生成若干个日志文件(行存储的avro文件),为了避免读放大以及减少文件数量,需要配置合适的压缩策略将增量的log file合并到base file(parquet)中。矛始2022-12-113030
- 矛始2022-12-11230
- 矛始2022-12-101020
- UnsafeRow是InternalRow的子类,它表示一个可变的基于原始内存(raw-memory)的二进制行格式,简单来说UnsafeRow代表一行记录,用于替代java对象(属于Tungsten计划的一部分,可以减少内存使用以及GC开销)矛始2022-12-10160
- SparkSql并不使用kryo或java序列化,Dataset使用的是Encoder将jvm对象转换为二进制(《spark数据格式UnsafeRow》),类似于序列化过程,但是Encoder是动态生成代码,并使用标准的InternalRow格式,使得spark可以直接基于字节上做很多操作(不需要反序列化过程),比如filtering,sorting和hashing;Encoder比kryo和java序列化更轻量级,因为它不用额外保存类的描述信息。矛始2022-12-10570
- 矛始2022-12-10120
共 28 条
- 1
页
没有更多了
个人简介
天翼云
好记性 + 烂笔头
大数据,实时数仓,spark,flink,hudi
广东工业大学计算机科学与技术
个人成就
共发表过 28 篇文章
文章获得 3 次赞同
文章被浏览 3035 次
获得 0 人关注
个人荣誉查看规则
有目共赏
有识之士
笔底生花
初出茅庐