- 博客(23)
- 问答 (2)
- 收藏
- 关注
原创 FlinkSQL源码笔记
Apache Calcite是一个动态的数据管理框架,它可以实现SQL的解析,验证,优化(和执行)。Calcite的目的是为各类数据存储系统,计算系统等,构建SQL访问的框架/SQL访问层;注:“动态”是因为Calcite的模块化和插件式的,上述任何一个步骤在Calcite都对应着一个相对独立的模块。用户可以选择使用其中的一个或多个模块,也可以对任意模块进行定制化的扩展。
2025-03-11 00:01:27
857
原创 读书笔记:分布式系统原理介绍
WARO牺牲了更新服务的可用性,最大程度的增强读服务的可用性。其实,Quorum的本质就是对WARO的条件进行了松弛。举例:某系统有5个副本,W=3,R=3,最初5个副本的数据一致,都是v1,某次更新操作w2在前3个副本上成功,副本情况变成(v2,v2,v2,v1,v1)。此时,任意3个副本的组合中一定包括v2。(W=N,R=1)就得到WARO,即WARO是Quorum机制的一种特例。总结:1、仅仅依赖Quorum机制是无法保证强一致性的。因为仅有Quorum机制时无法确定最新已提交的版本号,
2025-01-09 20:13:49
822
原创 Flink源码剖析
执行环境 ExecutionEnvironment数据抽象 DataSet DataStream逻辑操作 Source Transformation Sink1. 获取执行环境2. 通过执行环境对象,注册数据源Source,得到数据抽象3. 调用数据抽象的各种Transformation执行逻辑计算4. 将各自Transformation执行完毕之后得到的计算结果数据抽象注册Sink5. 提交Job执行。
2024-10-04 03:40:27
2058
1
原创 k8s核心知识总结
容器和镜像的关系可以理解为对象和类,或者java代码和java进程build:通过dockerfile 创建一个镜像tag:镜像本身可以进行版本迭代push/pull:类似git的中央仓库,可以用来提交镜像文件(包括公有和私有)load/save:拥有本地传输镜像文件run/commit:镜像运行一个容器实例,或者提交一个镜像文件start/stop:运行或停止一个容器。
2024-07-25 01:20:49
2290
4
原创 Flink core知识点总结
五月份,重新整理了flink的相关概念,这次终于从基础逻辑入手,对整个flink job的整体运行过程有了认识,不得不说,flink真的很强;剩下对于窗口这部分概念后续看情况补充吧,感觉应该问题不大6月份,争取运用上flink,对于基础问题能够debug解决,干!!!参考连接:Flink 架构用户代码:定义了Flink应用程序的行为Task(任务):任务是Flink程序执行的最小单位。将用户代码中的算子进行切分,组成一个个Task,一种最常见的划分方式是根据是否shuffle。subTask:子任务
2024-06-10 01:50:15
1155
1
原创 Flink WebUI解析(待更新)
对于flink webUI的查看,首先还是根据先整体观看一下Task的划分,然后根据Exception去寻找对应的TaskManager相关信息,然后双向确定是什么原因造成的;作为metrics,虽然看起来花里胡哨,本质上对flink底层实现机制的基本逻辑弄懂,应该还是比较容易看的;注:由大佬有这块比较好的分享,跪求评论区共享一下;
2024-05-26 18:13:26
1834
原创 kafka源码学习(三)消费者源码
通过前面对producer、服务端源码的剖析,consumer很多地方和前面类似,这里简单概述即可kafka版本:kafka-0.10.0.1。学习计划:四月份完成kafka源码的分析,也算对kafka的基础知识点有了简单的回顾。五月份:回到Flink篇章,这次重点了解资源调度、webui等相关基本的知识点,目的为后面自己编写Flink代码,如何分析调优,观察执行情况准备;一个小的任务:Flink从kafka写入Redis,数据一致性保证的测试。
2024-05-06 00:27:20
1199
1
原创 kafka源码学习(二)服务端源码
本篇主要说明了源码学习过程中服务端的相关知识点。通过本章节的学习,1、对服务端的网络、存储、副本同步、集群管理相关的细节又回顾了一篇,比之前死记硬背好很多。2、感觉很多架构的设计还是来源于实际需求,当然kafka的核心点就是:异步、削峰、解耦。注意:1、Kafka网络设计,理解超高并发的网络设计2、juc,跳表,log【存储】,内存映射写稀松索引,时间轮机制,后续需要持续跟进。
2024-05-03 17:47:59
1109
3
原创 kafka源码学习(一)Producer源码
以为例,异步调用send方法执行后,调用的doSend()方法,核心流程如下:同步等待,拉取元数据maxBlockTimeMs:最长等待时间this.maxBlockTimeMs - waitedOnMetadataMs:还剩余多长时间可以使用对消息的key和value进行序列化根据分区器选择消费应该发送的分区确认消息的大小是否超过了最大值,默认是1M,实际使用过程会修改根据元数据信息,封装分区对象给每一条消息都绑定回调函数,因为样例中使用的是异步调用的方式把消息放入。
2024-04-06 18:57:19
1083
2
原创 FlinkSQL学习笔记(四)常见表查询详解与用户自定义函数
1、本篇只列举一些特殊的查询方式,掌握这些查询语句的基本使用概念即可,实际用到的时候进行查询即可。2、通过对这些例子的编写,感觉Flink相比hive中常见的查询方式,更多地从时间角度进行了更新迭代,需要注意Lookup Join和Temporal Joins区别3、自定义函数,大致了解就行,后续用到直接套模板。
2024-03-24 15:36:34
1821
1
原创 FlinkSQL学习笔记(三)常用连接器举例
1、了解upsert kafka、JDBC、FileSystem、等连接器的使用场景,使用过程核心要点,2、掌握cdc连接器的使用要点,完成源码编译过程;3、问题:在flinkSQL中,端到端的一致性是通过什么方式保证的?答:1、upsert kafka本身是为了解决flink向kafka写数据是append-only的模式【只有+I这一种Changemode】,使用过程中注意需要制定key,作为update或者delete的标志。
2024-03-14 00:02:45
1157
1
原创 FlinkSQL学习笔记(二)表定义详解
表的表示结构catalog name:元数据空间,常用于标识不同的“源”,比如hive catalog,inner catalog等;使得Flink里面创建的表hive中能查到,但是不一定可以取数,原因在于这里不同的“源”的定义在hive中没有,不一定可以查到。更多细节参考补充说明。database name:通常语义中的“库”table name:通常语义中的“表”表与视图FlinkSQL中的表,可以是Virtual的(view视图)和regular的(table常规表)
2024-02-24 16:50:02
2505
原创 FlinkSQL学习笔记(一)快速入门
FlinkSQL是架构于 flink core 之上用 sql 语义方便快捷地进行结构化数据处理的上层库;(非常类似 sparksql 和 sparkcore 的关系)由于FlinkSQL建立在Flink core的基础之上,这里进行先对一个简单的FlinkSQL编程过程进行说明。FlinkSQL编程包括TableAPI和SQLAPI,运用中更多地使用SQLAPI,这里对于TableAPI不做详细介绍,后续用到的时候再进行详细介绍。此外,在编程方式上,两种SQL可以进行混合使用。
2024-02-03 20:39:50
2667
1
原创 Flink应用学习笔记(六)End-to-end Exactly Once
基于前面对Flink基础的学习,本章在对基础知识点的了解基础上,开始尝试使用Flink进行更进一步的应用。本周在工作中,同事遇到了使用Flink中两阶段提交的机制,因此,在应用篇中对两阶段提交进实现端到端的Exactly Once进行介绍。。当然,本帖子只作为学习用,实际应用场景会更加复杂,关于实践过程中的问题欢迎留言交流。
2023-12-31 13:30:50
1008
原创 Flink基础学习笔记(五)time+watermark+window
时间不是绝对的,不同“世界”中的时间语义各不相同。本流处理中的时间本质上可以是一个普通的递增字段,不一定表示真实的时间。Ingestion Time:事件-数据进入Flink的时间,一般不用。:表示的是真实世界的时间,执行操作算子的本地系统时间,与机器相关。Processing Time在使用时是直接调取系统的时间,考虑到多线程或分布式系统的不确定性,所以它每次运行的结果可能是不确定的。Event Time:是数据当中包含的时间。
2023-12-17 18:37:19
163
1
原创 Flink基础学习笔记(四)Checkpoint与重启策略
Checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保证应用流图状态的一致性。检查点的两种实现:(1)检查点算法的简单实现–暂停应用,保存状态到检查点,在重新恢复应用(2)Flink基于检查点算法的优化实现–基于Chandy-Lamport算法的分布式快照,将检查点的保存和数据分开处理,不需要暂停整个应用,这里引入State Backend的概念。
2023-12-10 02:35:56
1559
1
原创 Flink基础学习笔记(三)State
State:一般指一个具体的task/operator的状态。KeyedState。state是task级别的state,说白了就是每个task对应一个state,上图就是一个OperatorState,keyedstate记录的是每个key的状态,相比OperatorState用Key作为区分,OperatorState工作中相对少用。原始状态(raw state)和托管状态(managed state)。托管状态:由Flink框架管理的状态,我们通常使用的就是这种。原始状态。
2023-12-04 00:14:41
133
原创 Flink基础学习笔记(二)常用算子
单并行度数据源:SourceFunction;多并行度数据源:ParallelSourceFunction。此外,一般带RichXXXFunction里面可以实现更多的方法(包括初始化…等操作)。ParallelSourceFunction举例说明每秒产生一个number@Overridenumber++;@Override注意这些算子本身底层实现存在相互调用过程,这里的大部分算子和Spark中都是类似的,平时使用过程中注意灵活运用。
2023-12-03 17:06:00
217
1
原创 LLM与数据分析
本文主要以LLM的应用为基础,说明LLM与数据开发、数据分析领域的相关工作以及未来可能存在的发展。搜索在传统数据库,搜索功能都是基于不同的索引方式(B Tree、倒排索引等)加上精确匹配和排序算法(BM25、TF-IDF)等实现的。本质还是基于文本的精确匹配,这种索引和搜索算法对于关键字的搜索功能非常合适,但对于语义搜索功能就非常弱。
2023-11-06 21:32:23
1891
1
原创 Doris笔记(一)调研综述
2、独特的数据模型。在百度内部支持超过200个产品线,集群规模上千台,数据规模超过10PB,经受长期的生产验证。查询时,无需加载全部列,减少不必要的开销。1、key-value系统只能读取全key,全value,分析报表并不需要全列,因此带来不必要的开销。2、列存储结构,使得可以通过向量化执行引擎进行优化,同时更好地进行数据压缩,提搞压缩比。不过需要注意的是,在Doris的架构设计中,并不是简单地进行了整合,底层也进行了修改。2、扩展性差:业务数据分配到了不同的节点,节点过多,元数据的管理则相对困难。
2023-10-16 16:38:47
609
1
原创 Flink源码分析(一)RPC通信和JobManager启动
Flink使用Akka+Netty框架实现RPC通信,之前在spark框架源码剖析过程中已经对Akka实现RPC通信过程有所介绍,这里不做过多描述。是管理Actor生命周期的组件,Actor是负责进行通信的组件。每一个Actor都有一个MailBox,别的Actor发送给它的消息都首先存储在MailBox中,通过这种方式可以实现异步通信。每个Actor都是单线程的处理方式,不断地从MailBox中拉取消息进行执行处理,所以对于Actor的消息,不适合调用会阻塞的处理方法。
2023-10-02 00:36:44
390
1
原创 hive笔记(一)
Hive作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率。影响Hive效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、Job或I/O过多、MapReduce分配不合理等等。对Hive的调优既包含Hive的建表设计方面,对HQL语句本身的优化,也包含Hive配置参数和底层引擎MapReduce方面的调整。Hive的建表设计HQL语法和运行参数层面Hive 架构层面Hive 数据倾斜总之,Hive调优作用:在保证业务结果不变的前提下,降低资源的使用,减少任务的执行时间。
2023-09-05 21:34:49
114
1
学习kafa的笔记,可以看看目录选择下载
2023-06-01
C语言(一般没人知道的问题)
2016-12-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人