自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pezynd的专栏

持续更新,欢迎关注,欢迎指点!!

  • 博客(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 227

原创 目录 | 大数据探索文章

理论篇大数据理论篇 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 319

原创 记一次Netty堆外内存溢出OutOfDirectMemoryError

netty网络通讯项目,内存溢出问题排查

2022-09-25 14:49:41 5110 1

原创 Hive将csv数据导入parquet格式动态分区表

Hive数据导入

2022-04-05 16:33:52 2952

原创 Elasticsrarch修改字段类型和属性

如何修改ES索引中的字段类型和属性

2022-03-20 16:01:55 1373

原创 基于Netty实现TCP服务和HTTP服务

基于netty实现tcp和http服务

2022-03-20 15:27:48 1618

原创 Flink Forward Asia 2021 资料整理-下

Flink Forward Asia 2021 大会资料整理

2022-01-16 15:23:00 1563

原创 Flink Forward Asia 2021 资料整理-上

Flink Forward Asia 2021 大会资料整理

2022-01-16 14:56:00 1072

原创 Flink状态后端RocksDBStateBackend的使用

介绍Flink中,RocksDBStateBackend的使用

2021-12-26 20:57:45 3407

原创 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 1443

原创 Flink源码篇 No.9-任务提交之注册Slot(per-job on yarn)

第1章

2021-10-31 14:13:32 4346

原创 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 632

原创 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 1120

原创 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 686

原创 Flink源码篇 No.5-任务提交之启动JobManager(per-job on yarn)

第7章 启动JobManager

2021-10-07 21:45:41 488

原创 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 1404

原创 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 350

原创 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 401

原创 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 1057

原创 Kafka源码篇 No.5-Producer消息发送

第一章 简介

2021-09-01 09:41:40 592

原创 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 425

原创 大数据实操篇 No.18-Flink 处理函数介绍和使用(ProcessFunction)

第1章 简介第2章 处理函数类型Flink提供了8种不同的处理函数:ProcessFunction:处理函数KeyedProcessFunction:键值分区的处理函数CoProcessFunction:双流处理函数ProcessJoinFunction:多流join处理函数BroadcastProcessFunction:广播流处理函数KeyedBroadcastProcessFunction:键值分区的广播流处理函数ProcessWindowFunction:

2021-07-01 07:59:23 576

原创 Kafka源码篇 No.3-Producer分区分配规则

第1章 简介Kafka生产这端分区分配规则,第2章根据qian元数据信息,确定数据发往哪个partition

2021-06-20 14:36:15 255

原创 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 423

原创 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 523

原创 大数据实操篇 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 596

转载 转载 | 年度盘点!Flink 社区全年的精华内容都在这里啦

转眼间,2020年悄然落幕。这一年,Flink 社区高速发展繁荣,我们发布了三个版本,举办了40+线上线下活动,推送了100+技术干货与最佳实践。新的一年开启之时,社区从年度最佳实践、核心技术解析、实时数仓实践、开源技术生态、机器学习应用等多个维度盘点了过去一年的成果,并向社区所有贡献者致敬。2021年,我们还将迎来哪些高光时刻,到达多远的远方,依旧期待您与我们共同前行!2020年度发版回顾 官宣 | Apache Flink 1.10.0 重磅发布,年度最大规模版本升级! ...

2021-02-10 14:30:57 129

原创 大数据实操篇 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 2079 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 1751 6

转载 转载 | 如何优雅地重试

背景在微服务架构中,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。重试的风险重试能够提高服务稳定性,但是一般情况下大家都不会轻易去重试,或者说不敢重试,主要是因为重试有放大故障的风险。首先,重试会加大直接下游的负载。如下图,假设 A 服务调用 B 服务,重试次数设置为 r(包括首次请求),当 B 高负载时很可能调用不成功,这时 A 调用失败重试 B

2021-01-12 09:22:41 160

转载 转载 | 2020年腾讯技术工程十大热门文章

2020 年马上就要过去了,相信这绝对会是让每个人印象最深刻的一年。今年我们发布了 100+ 篇技术干货文章,这里汇总成一篇合集分享给各位,方便收藏阅读学习。(以下蓝色字体可直接点击跳转)十大热文1、万字详解:腾讯如何自研大规模知识图谱 Topbase摘要:Topbase 是由 TEG-AI 平台部构建并维护的一个专注于通用领域知识图谱,其涉及 226 种概念类型,共计 1 亿多实体,三元组数量达 22 亿。本文主要梳理 Topbase 构建过程中的技术经验,从 0 到 1 的介绍了..

2021-01-07 23:13:34 268

原创 大数据理论篇 No.8-聊聊Flink中TaskManager默认的G1垃圾回收器

第1章

2020-12-20 22:37:10 1786 2

原创 大数据理论篇 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 429

原创 大数据理论篇 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 167

原创 大数据理论篇 No.5-聊聊Flink中的Checkpoint和Savepoint

第1章 CheckpointFlink作为分布式流计算处理引擎,而分布式处理引擎必须面对的问题就是故障,例如:进程被强制关闭、服务器宕机、网络连接中断等等。Flink为了解决故障问题,保证在发生故障时能够完好的恢复,并且不丢失状态数据,定义了checkpoint机制。在checkpoint机制中不得不提的一个东西就是:checkpoint barrier。他是一个特殊标记分隔符。barrier不通过数据源算子注入到数据流当中。为了标记所属的checkpoint范围,每个barrier会带有一个c

2020-11-15 19:40:26 438

原创 大数据理论篇 No.4-聊聊Flink的状态管理

第1章 有状态的流计算State(状态)是流式应用中普遍存在的一种对象,在流计算整个过程中,算子会不断的对状态进行读取和更新。在Flink当中既有内置的状态,也支持用户自定义状态。算子计算结果保存在state当中,下一笔数据到来时采用上一次计算结果和本次数据一起进行计算。而Flink流计算的状态数据是以state形式存在state backends中。在Flink当中,提及State与Checkpoint和Savepoint息息相关,它们产生的快照的数据就来源于各个算子产生的Stat..

2020-11-08 19:59:03 182

原创 大数据理论篇 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 327 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 1840 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 817

原创 大数据实操篇 No.14-记一次Flink端到端的完整流计算案例(Table API/SQL)

第1章 简介第2章

2020-10-19 07:54:10 474

windbg-x64 dump分析工具

Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。

2022-01-16

ANTS Performance Profiler 8 安装包

ANTS Performance Profiler 8 内存分析工具,性能调优工具。监控应用程序、iis进程、windows服务等等。

2022-01-16

.net memory profiler 4.0.114 内存分析工具

.Net Memory Profiler(以下简称Profiler):专门针对于.NET程序,功能最全的内存分析工具,最大的特点是具有内存动态分析(Automatic Memory Analysis)功能。

2022-01-16

azkaban-3.86.0安装包

azkaban-3.86.0 源码编译安装包,可直接放到服务器进行部署。注意配合自己相应的mysql版本驱动使用。

2022-01-16

flink-sql-client.zip

flink sql依赖jar包整理

2022-01-16

flink-hive-jar.zip

Flink写入Hive相关依赖jar包,解压后可直接放置到flink lib目录下。包含:flink-connector-hive,flink-shaded-hadoop-3-uber,flink-hadoop-compatibility,hive-exec等等。

2022-01-16

实时计算在字节跳动的发展与展望.pdf

实时计算在字节跳动的发展与展望.pdf

2022-01-16

mysql-jdbc-connector-java-5.1.44

mysql jdbc连接驱动mysql-connector-java-5.1.44.zip 注意版本。许多框架需要连接mysql管理元数据信息,都需要这个依赖jar才能进行使用,解压后将相应的jar包放到自己框架的使用目录下即可。

2020-08-02

Flink1.11.0源码手动编译包

Flink1.11.0源码手动编译包 编译步骤详见:https://blog.csdn.net/dzh284616172/article/details/107571972

2020-07-25

空空如也

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

TA关注的人

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