- 博客(64)
- 资源 (9)
- 收藏
- 关注

原创 目录 | Flink源码走读
Flink任务提交Flink源码篇 No.1-任务提交之入口及参数解析(per-job on yarn)Flink源码篇 No.2-任务提交之调用用户方法(per-job on yarn)Flink源码篇 No.3-任务提交之执行用户作业(per-job on yarn)Flink源码篇 No.4-任务提交之启动AppMaster(per-job on yarn)Flink源码篇 No.5-任务提交之启动JobManager(per-job on yarn)Flink源码篇 No.6
2021-10-07 22:37:12
277

原创 目录 | 大数据探索文章
理论篇大数据理论篇 No.1-浅谈Flink中的数据传输大数据理论篇 No.2-聊聊Flink流计算中的Timestamp和Watermark大数据理论篇 No.3-看看Flink如何实现端到端的Exactly-once语义大数据理论篇 No.4-聊聊Flink的状态管理大数据理论篇 No.5-聊聊Flink中的Checkpoint和Savepoint大数据理论篇 No.6-理解一下HDFS数据读写流程大数据理论篇 No.7-从NameNode聊起,介绍一下HDFS元数据的Che
2021-02-09 15:02:55
368
原创 Flink源码篇 No.10-任务提交之调度并执行Task(per-job on yarn)
第1章 简介经过前面几篇文章的介绍,TM已经申请到Slot,并且向JM提供了执行任务的Slot。本篇文章将继续走读源码,介绍JM向TM提交任务的流程。第2章 具体步骤2.1 启动JM我们回到之前JM启动的代码:org.apache.flink.runtime.jobmaster.JobMaster#startJobExecutionprivate Acknowledge startJobExecution(JobMasterId newJobMasterId) throws E
2021-10-31 14:49:59
1540
原创 Flink源码篇 No.8-任务提交之启动TaskManager(per-job on yarn)
第1章 注册回调在上一篇文章中,启动nodeManagerClient的时候,注册了一个CallbackHandler回调yarnContainerEventHandlerorg.apache.flink.yarn.YarnResourceManagerDriver#initializeInternal@Overrideprotected void initializeInternal() throws Exception { final YarnContainerEventHandler
2021-10-10 15:04:34
740
原创 Flink源码篇 No.7-任务提交之JobManager申请资源(per-job on yarn)
第1章 启动JobManager我们从jobManager启动的方法开始看org.apache.flink.runtime.jobmaster.JobMaster#startJobExecutionprivate Acknowledge startJobExecution(JobMasterId newJobMasterId) throws Exception { // 验证是否在主线程 validateRunsInMainThread(); checkNotNull(newJobM
2021-10-07 21:46:25
1244
原创 Flink源码篇 No.6-任务提交之启动ResourceManager(per-job on yarn)
第1章create创建并启动resourceManager回到最初创建resourceManager的地方:org.apache.flink.runtime.entrypoint.component.DefaultDispatcherResourceManagerComponentFactory#create@Overridepublic DispatcherResourceManagerComponent create( Configuration configuration, ..
2021-10-07 21:46:04
834
原创 Flink源码篇 No.4-任务提交之启动AppMaster(per-job on yarn)
第5章 启动AppMaster上面我们阅读到了org.apache.flink.client.deployment.executors.AbstractJobClusterExecutor#execute,下面看看在execute内部如何启动AppMaster。5.1createClusterDescriptor创建集群描述器createClusterDescriptor是接口内的方法,我们直接看Yarn相关的实现。org.apache.flink.yarn.YarnClusterCli..
2021-10-07 21:45:12
1535
原创 Flink源码篇 No.3-任务提交之执行用户作业(per-job on yarn)
第4章 执行用户程序4.1env.execute()执行用户程序org.apache.flink.streaming.api.environment.StreamExecutionEnvironment#execute(java.lang.String)public JobExecutionResult execute(String jobName) throws Exception { Preconditions.checkNotNull(jobName, "Streaming Job .
2021-10-07 21:44:39
428
原创 Flink源码篇 No.2-任务提交之调用用户方法(per-job on yarn)
3.2run方法运行org.apache.flink.client.cli.CliFrontend#runprotected void run(String[] args) throws Exception { LOG.info("Running 'run' command."); //TODO 获取用户配置 final Options commandOptions = CliFrontendParser.getRunCommandOptions(); final CommandLi..
2021-10-07 21:44:17
468
原创 Flink源码篇 No.1-任务提交之入口及参数解析(per-job on yarn)
第1章 简介本篇文章以一次任务提交为主线,介绍Flink源码中,任务是如何提交的。以下内容基于yarn以per-job模式为例。源码版本Apache Flink 1.12。第2章 详细步骤2.1 flink run 提交作业我们已flink命令提交job为入口,开始了解源码。通常我们使用flink提交作业时,在命令行输入如下命令:bin/flink run -t yarn-per-job /.../***.jar ...查看flink脚本文件,此脚本文件最后exec就是作业提交
2021-10-07 21:43:45
1177
原创 Kafka源码篇 No.4-Producer消息封装
第1章 简介本篇文章从源码的角度,介绍Kafka生产者如何封装消息,细节详见代码中注释。第2章 详细步骤2.1 消息大小的校验在封装前会先进行数据大小的校验org.apache.kafka.clients.producer.KafkaProducer#doSend//TODO 校验消息大小int serializedSize = AbstractRecords.estimateSizeInBytesUpperBound(apiVersions.maxUsableProduce
2021-08-30 16:39:00
534
原创 大数据实操篇 No.18-Flink 处理函数介绍和使用(ProcessFunction)
第1章 简介第2章 处理函数类型Flink提供了8种不同的处理函数:ProcessFunction:处理函数KeyedProcessFunction:键值分区的处理函数CoProcessFunction:双流处理函数ProcessJoinFunction:多流join处理函数BroadcastProcessFunction:广播流处理函数KeyedBroadcastProcessFunction:键值分区的广播流处理函数ProcessWindowFunction:
2021-07-01 07:59:23
664
原创 Kafka源码篇 No.3-Producer分区分配规则
第1章 简介Kafka生产这端分区分配规则,第2章根据qian元数据信息,确定数据发往哪个partition
2021-06-20 14:36:15
300
原创 Kafka源码篇 No.2-Producer如何获取元数据
第1章 简介经过上一篇文章的讲解,大致了解了Producer发送消息的流程,本篇文章我们阅读以下Producer获取元数据的详细步骤。第2章 详细步骤2.1 sender线程拉取元数据sender线程启动以后,会执行run()=>runOnce()=>client.poll()执行kafka client的网络请求开始执行如下代码。@Overridepublic List<ClientResponse> poll(long timeout, long now)
2021-04-24 16:59:09
506
原创 Kafka源码篇 No.1-Producer发送消息的流程设计
第1章 简介Kafka为什么能被广泛使用?为什么吞吐量能这么大?他既能在OLTP场景系统中做消息队列,又能在OLAP系统中做大数据实时消息流的暂存。这个强大的一个框架,源码必须得学习学习!笔者Kafka源码文章使用Kafka版本v2.7.0进行编写,不妥之处欢迎留言指点,感激不尽!Kafka源码是Java和Scala语言编写,生产者部分主要是Java语言。下面我们先看看整体的流程,再一步一步剖析细节。第2章 源码结构Kafka源码结构如下:生产者和消费者主要再clients下,而服.
2021-04-24 16:55:26
595
原创 大数据实操篇 No.17-Flink State介绍和使用(Datastream API)
第1章 Flink State介绍Flink有两种基本类型的状态:Managed State(托管状态)、Raw State(原生状态)。Managed State是Flink Runtime托管,支持了常见的数据结构:ValueState、ListState、MapState等等;Raw State则是由用户自己管理,只支持字节数组的数据结构。任何上层的数据结构需要序列化为字节数组。使用时,需要用户进行序列化。以下完整代码请查阅github:https://github.com/zihao
2021-02-18 22:00:37
688
转载 转载 | 年度盘点!Flink 社区全年的精华内容都在这里啦
转眼间,2020年悄然落幕。这一年,Flink 社区高速发展繁荣,我们发布了三个版本,举办了40+线上线下活动,推送了100+技术干货与最佳实践。新的一年开启之时,社区从年度最佳实践、核心技术解析、实时数仓实践、开源技术生态、机器学习应用等多个维度盘点了过去一年的成果,并向社区所有贡献者致敬。2021年,我们还将迎来哪些高光时刻,到达多远的远方,依旧期待您与我们共同前行!2020年度发版回顾 官宣 | Apache Flink 1.10.0 重磅发布,年度最大规模版本升级! ...
2021-02-10 14:30:57
167
原创 大数据实操篇 No.16-记一次完整的Flink流计算案例(DataStream API)
第1章 简介本篇文章采用Flink DataStream API完成一次端到端的完成流计算案例,将数据从Kafka抽取,写入Elasticsearch中,并且用kibana动态的展示出来。(客户端=>Web API服务=>Kafka=>Flink=>Elasticsearch=>Kibana)。第2章 案例设计先定一个简单的需求(就根据当下的疫情情况来做吧):统计各地区新冠疫情风险等级。我们假定每个地区确诊病例(0-10]例为低风险地区,(10-50]例为中风险地区,
2021-02-09 13:53:20
2203
3
原创 大数据实操篇 No.15-Elasticsearch集群高可用部署(含Elasticsearch head+Kibana)
第1章 ELK简介ELK(Elasticsearch、Logstash、Kibana)提供了一整套日志分析解决方案,其中elasticsearch是开源分布式搜索引擎。Logstash是一个开源的日志采集工具。Kibana也是开源的数据分析可视化工具。三者结合,Logstash采集系统日志信息后,上传到Elasticsearch中,kibana在利用Elasticsearch分布式高效的检索引擎,将数据可视化的展示到Web界面上。对于一些中小型的系统,可以用ELK快速搭建一套日志分析系统。本篇文章为
2021-01-20 23:47:09
1913
6
转载 转载 | 如何优雅地重试
背景在微服务架构中,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。重试的风险重试能够提高服务稳定性,但是一般情况下大家都不会轻易去重试,或者说不敢重试,主要是因为重试有放大故障的风险。首先,重试会加大直接下游的负载。如下图,假设 A 服务调用 B 服务,重试次数设置为 r(包括首次请求),当 B 高负载时很可能调用不成功,这时 A 调用失败重试 B
2021-01-12 09:22:41
213
转载 转载 | 2020年腾讯技术工程十大热门文章
2020 年马上就要过去了,相信这绝对会是让每个人印象最深刻的一年。今年我们发布了 100+ 篇技术干货文章,这里汇总成一篇合集分享给各位,方便收藏阅读学习。(以下蓝色字体可直接点击跳转)十大热文1、万字详解:腾讯如何自研大规模知识图谱 Topbase摘要:Topbase 是由 TEG-AI 平台部构建并维护的一个专注于通用领域知识图谱,其涉及 226 种概念类型,共计 1 亿多实体,三元组数量达 22 亿。本文主要梳理 Topbase 构建过程中的技术经验,从 0 到 1 的介绍了..
2021-01-07 23:13:34
302
原创 大数据理论篇 No.7-从NameNode聊起,介绍一下HDFS元数据的Checkpoint
NameNodeNameNode是HDFS(Hadoop分布式文件系统)的元数据管理进程,是整个HDFS的Master节点,管理HDFS命名空间、数据块映射的节点、副本策略等等。而这些数据是已文件的形式存在磁盘上的,他们分别是:fsimage和editslog。 fsimage:镜像,namenode元数据文件,存在磁盘;是NameNode内存元数据对应磁盘上的映射。 editslog:文件操作日志,也是存在磁盘,只有追加操作,效率很高。 fsImage 文件和 editslog 文件
2020-11-28 17:30:27
506
原创 大数据理论篇 No.6-理解一下HDFS数据读写流程
第1章 写数据 Client向NameNode发起上传请求。 NameNode检查文件是否存在等信息(权限、目录等),检查通过后,返回给Client允许上传。 Client将数据切分成n个block块,block大小默认128M。***文件缓存到本地的临时文件当中。并向NameNode发起RPC请求,请求上传第一个block块。 NameNode根据文件配置的副本数、机架感知,来计算并返回DataNode列表。(详见:第3章副本策略) Clie...
2020-11-27 23:44:16
204
原创 大数据理论篇 No.5-聊聊Flink中的Checkpoint和Savepoint
第1章 CheckpointFlink作为分布式流计算处理引擎,而分布式处理引擎必须面对的问题就是故障,例如:进程被强制关闭、服务器宕机、网络连接中断等等。Flink为了解决故障问题,保证在发生故障时能够完好的恢复,并且不丢失状态数据,定义了checkpoint机制。在checkpoint机制中不得不提的一个东西就是:checkpoint barrier。他是一个特殊标记分隔符。barrier不通过数据源算子注入到数据流当中。为了标记所属的checkpoint范围,每个barrier会带有一个c
2020-11-15 19:40:26
503
原创 大数据理论篇 No.4-聊聊Flink的状态管理
第1章 有状态的流计算State(状态)是流式应用中普遍存在的一种对象,在流计算整个过程中,算子会不断的对状态进行读取和更新。在Flink当中既有内置的状态,也支持用户自定义状态。算子计算结果保存在state当中,下一笔数据到来时采用上一次计算结果和本次数据一起进行计算。而Flink流计算的状态数据是以state形式存在state backends中。在Flink当中,提及State与Checkpoint和Savepoint息息相关,它们产生的快照的数据就来源于各个算子产生的Stat..
2020-11-08 19:59:03
218
原创 大数据理论篇 No.3-看看Flink如何实现端到端的Exactly-once语义
第1章 流计算语义1.1 最多一次At-most-once当流数据发生异常时,重启策略进行恢复时,不在对错误的数据进行重新计算,恢复过程中流过的数据也可能不被计算,所有数据最多只计算一次,At-most-once可能会丢失数据。1.2 至少一次At-least-once当流计算发生异常时,重启策略进行恢复时,之前错误的数据可能会被重新计算,所有数据至少都要被计算一次,At-least-once语义可能会有数据重复。不等待barrier对齐,已经流经算子的数据,在上次成功cp和下一次cp之
2020-10-31 22:30:44
394
1
原创 大数据理论篇 No.2-聊聊Flink流计算中的Timestamp和Watermark
第1章 时间语义Flink里定义了三种时间语义:Event Time、Ingestion Time、Processing Time。在整个流计算过程中,他们分别代表事件发生的时间、数据最早进入Flink的时间和数据被Flink算子处理时算子本地的时间。Event Time:事件发生时间,现实世界中数据真实产生的时间。无论数据流在传输和计算过程中花了多少时间EventTime是不会变的,它在时间发生时就已经确定。Ingestion Time:数据最早进入Flink的时间,也就是数据到达So
2020-10-24 08:39:06
1931
11
原创 【重复文章】大数据流计算 Flink 端到端的完整案例
第1章 简介在前面的文章中,介绍了Flink相关环境的准备,并且完成了一个简单的Flink开发环境的搭建;本篇文章介绍一个完整的端到端涵盖Flink计算的案例:客户端=>Web API服务=>Kafka=>Flink=>MySQL。本次仍然以Flink Table API/SQL为例,采用docker-compose的方式进行部署。(文章中只给出关键部分代码,完整代码详见后续笔者上传的github)。第2章docker-compose2.1 添加docker-..
2020-10-23 22:50:20
895
windbg-x64 dump分析工具
2022-01-16
ANTS Performance Profiler 8 安装包
2022-01-16
.net memory profiler 4.0.114 内存分析工具
2022-01-16
flink-hive-jar.zip
2022-01-16
mysql-jdbc-connector-java-5.1.44
2020-08-02
Flink1.11.0源码手动编译包
2020-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人