自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (1)
  • 收藏
  • 关注

原创 Flink从入门到放弃—Stream API—Join实现(即多流操作)

Flink DataStream API 为用户提供了3个算子来实现双流 join,分别是:1、join();3、intervalJoin(), 另外其实还有两个算子,connect()和union()

2022-11-12 10:43:56 1633

原创 Flink从入门到放弃——开篇

鉴于之前已经有粗略的看过,大量知识点可能是复习一下,并且下钻深度,所以给自己规划做完下面脑图中的工作量的时间截止日期为2023年的1月1日,如果中途有不可抗力因素阻碍,时间按照耽误的时间往后推,但是最晚时间截止到春节。之前也写了很多关于Flink的文章,但是总是“瞎写”,为了更加充分的利用好业余时间,花了一晚上的时间,专门整理了一份关于Flink的知识点脑图,图中写到的知识点,计划着深入理解一下。凛冬散尽,星河长明。凡是过往,皆为序章。以梦为马,不负韶华。文章难免会有纰漏,若发现问题,欢迎指正与批评!

2022-10-26 21:35:37 753

原创 Flink1.15 DataSream 连接器 —— FileSystem源码阅读及代码示例

最后,提醒一下看源码的小伙伴们,最好看下test目录下的测试类,flink源码中提供了很多测试类,可以细节到具体的方法,所以值得一看。

2022-10-26 17:55:53 484

原创 Flink1.15 DataSream 连接器 —— FileSystem

这玩意,让我丢了一次面,搞它。

2022-10-25 08:14:25 570 3

原创 netstat命令你真的理解吗?

虽然草稿箱堆满了很大篇,就是没有动力继续写 ,回想起前几天被问到的问题《关于netstat的原理》,我确实未能回答到点子上,原来一直在用的命令仅仅就是适用,它的底层实现原理是什么,没有认真全面的想过。早上都想到这里了,捻转反侧,不会就学,来吧,让我一起重新认识一下netstat这个命令的巨大威力。

2022-10-24 08:51:01 951

转载 设计模式——桥接模式

这篇文章讲桥接模式 写的很好,转载一下。如果对桥接模式代码感兴趣的可以移驾到。有前辈大佬的好文章就不重复造了。

2022-10-09 16:57:26 77

原创 Flink1.16 发布新特性

广义的概念上,能够捕获数据变更的技术,我们都可以称为CDC (Change Data Capture)。通常我们说的CDC技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。其实我觉得数仓分为实时和离线最好的状态(个人想法)。meetup看了两遍,第一遍感觉听着讲change log那节,比较晦涩,今天又全部听了一遍,感觉对checkpoint的历史节点上优化又有了更深一步的理解。

2022-09-30 18:09:36 5651

原创 设计模式——原型模式

原型模式也被称为克隆模式,顾名思义,克隆分为浅克隆和深克隆浅克隆:我理解浅克隆就如同上图中的左边赋值一样,堆里面的内容只有一份,但是却被两个对象的引用指向;换句话说浅克隆只是拷贝本对象,它对象内部的日期、数组、引用对象都不拷贝,还是指向原生对象的内部元素地址。深克隆:和浅克隆的深层次克隆,不仅仅对象的本身会克隆一份,对象中的属性值也会拷贝一份,就如同上图中的右侧图一样。实现java浅克隆和深克隆的最关键的就是要实现Object中的clone()方法,并且两者对clone()的实现是不一样的。...

2022-08-31 23:56:23 747

原创 设计模式——建造者模式

建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。使用多个简单的对象一步一步构建成一个复杂的对象,有点像造房子一样一步步从地基做起到万丈高楼。1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。...

2022-08-29 22:49:31 540

原创 RPC学习——入门体验

看了flink-rpc之后,感觉rpc框架真的是太强大了,比如netty、akka,之前基于akka写过一个能够处理千万级实时数据量的处理系统,netyy的话之前也是了解一点,但是对于rpc思想理解上总是感觉差点什么,于是决定跟着老师们,详细的学习下rpc是什么,怎么用,如何能够用好,开始一步一步的手撸吧。...

2022-08-28 22:10:29 647

原创 设计模式——工厂模式

简单工厂抽象工厂工厂方法因为本篇涉及到的类比较多,代码量还行,小编尽量写条理一些,如发现问题,请指正。

2022-08-28 07:37:38 281

原创 设计模式——单例

首先介绍一下单例模式。也是最长用的。通常加载配置啊都会用到。源码地址:https://github.com/DeveloperZJQ/scalavsjava/tree/master/src/main/java/designpatterns/singleton。

2022-08-28 00:07:06 155

转载 Apache Flink 1.15.2发布公告

如果1.15.0/1的行为是可以接受的,因为它是一个稳定的环境。参见[FLINK-28861]https://issues.apache.org/jira/browse/FLINK-28861了解更多信息。有关所有更改的完整列表,请参见:[JIRA] https://issues.apache.org/jira/secure/ReleaseNote.jspa?您可以在更新的下载页面上找到[二进制文件]https://flink.apache.org/downloads.html。.........

2022-08-26 12:57:18 476

原创 Flink1.15源码阅读——执行图executiongraph

执行图是在JobManager生成的,且在创建JobMaster的过程中创建的。本篇是基于per job模式client生成JobGraph之后,就通过submitJob提交给JobManager,JobManager会根据JobGraph生成对应的ExecutionGraph。ExecutionGraph 是Flink作业调度时使用到的核心数据结构,它包含每一个并行的task,每一个intermediate stream以及它们之间的关系。

2022-08-21 10:49:51 593

原创 Flink1.15源码阅读——JobGraph作业图

接上面接着往下面看jobgraph是如何生成的?又经历了哪些转换?

2022-08-14 10:13:29 813

原创 Flink1.15源码阅读——StreamGraph流图

StreamGraph 经过优化后生成了JobGraph,提交给Jobmanager的数据结构,主要的优化为,将多个符合条件的节点 chain在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。JobManager根据Execution对job进行调度后,在各个TaskManager上部署Task后形成的图,并不是一个具体的数据结构。JobManager根据JobGraph生成的。是根据用户代码通过Stream API编写的代码生成的最初的图。用来表示程序的拓扑结构。...

2022-08-07 16:37:59 908

原创 Flink1.15 组件RPC通信过程概览图

Flink 组件通信 RPC通信过程概览图

2022-08-07 14:43:17 432

原创 Flink1.15源码阅读——PER_JOB vs APPLICATION执行流程

根据官网和源码中可知,目前PER_JOB模式已经被官悬弃用,后面可能会被完全剔除,替代的是APPLICATION模式两种模式好处都是资源隔离,APPLICATION模式把main方法的初始化放到了集群组件的jobmanager,这样有对于客户端来说,从性能上有了很大的优化。通过比较看两者的源码,才更能体会到APPLICATION模式替代PER_JOB的优点。从execute方法开始读源码。如果想读StreamExecutionEnvironment#execute之前的部分,请参照另一篇Flink1.15

2022-07-30 22:38:14 1383

原创 Flink1.15源码阅读flink-clients——flink命令行帮助命令

上面介绍了flinkrun相关的命令,下面是客户端模式,分为三种GenericCLI、FlinkYarnSessionCLI和DefaultCLI。

2022-07-30 13:09:34 313

原创 Flink1.15源码阅读flink-clients之GenericCLI、flinkYarnSessionCLI和DefaultCLI

for循环中顺序的取出之前存到集合中的三个客户端,根据cli.isActive(commandLine)这个方法检查,第一个活跃的客户端并立即返回,因为默认的客户端active总是true,从下面代码可以看出。configuration.getOptional(DeploymentOptions.TARGET).isPresent()TARGET是否存在。DefaultCLI#isActive总是true,所以默认客户端总是兜底的。从上面注释中,很容易看出该方法是干什么的,获取活跃的命令行客户端;.....

2022-07-29 15:32:05 696

原创 Flink1.15源码阅读flink-clients客户端执行流程(阅读较枯燥)

接上一篇讲到flink-clients调试,接着阅读更详细的源码,很枯燥,慢慢读。参考链接https//blog.51cto.com/u_13870740/5321778,讲解的很好。

2022-07-25 07:20:17 1317

原创 hadoop——突然的想手写一下WordCount程序了,好久没写过了

map端处理逻辑,写了多个mr程序,也写了很多spark、flink程序,基本上套路都是这样的,先是把数据切片,作业的每个task拉取切片,处理一个拉一个,达到缓存设定的临界值,会触发写到磁盘,这个阶段会产生排序,其实就是先把数据进行etl,方便后续的更多类型的操作,一般广义上在reduce阶段就是聚合了。突然的想手写一下WordCount程序了,好久没写过了,就写官网上的那个吧,手写调试最后通过了,但是为了不耽误别人以及传播正确知识点,呈现在大家面前的是能够运行的。看一下reduce程序。...

2022-07-24 14:52:48 384

原创 Flink1.15源码阅读——flink-annotations

本文将详细介绍下flink中的自定义注解模块,了解flink注解的作用与使用。主要围绕flink源码中的 flink-annotations模块,与docs 相关的注解有@ConfigGroup和@ConfigGroups , 通常作用于配置类上;@Documentation.OverrideDefault、@Documentation.Section、@Documentation.TableOption、@Documentation.SuffixOption,@Documentation.ExcludeF

2022-07-19 18:31:58 655

原创 hbase shell启动报错

在客户端执行hbase org.apache.hadoop.hbase.mapreduce.ImportTsv命令的时候报如下错误:尝试直接执行hbase shell命令,依然报上面的错误,找问题吧。起初是以为服务器的jdk版本的问题,因为开发环境和测试环境的jdk版本的确不一样,一顿操作之后不生效,试着调整之后依然报这个错误,不是这个问题所导致的。度娘-直接百度查询,知道是hbase.tmp.dir设置的路径,hbase没有读写权限。具体的配置文件为/etc/hbase/conf/hbase-s

2022-07-12 18:59:25 2319

原创 Flink1.15源码阅读flink-clients——提交作业程序入口调试

在flink的bin目录下找到一个flink脚本,使用vim命令打开如下内容CliFrontend(客户端启动类)从上面客户端启动脚本,紧接着去代码中查看org.apache.flink.client.cli.CliFrontend 这个类。如果没有编译成功,请自行操作,也可参考小编之前写过的两篇文章(地址就不贴了)。这一节有参考博客。根据上面截图,提交flink app程序入口找到了,我们先来调试下,ide基于idea version2021.1直接debug main方法,如下图所示退出co

2022-07-10 23:39:18 1628

原创 Flink开发——导入 Flink 到 IDE 中

以下章节描述了如何将 Flink 项目导入到 IDE 中以进行 Flink 本身的源码开发。有关 Flink 程序编写的信息,请参阅 Java API 和 Scala API 快速入门指南。每当你的 IDE 无法正常工作时,请优先尝试使用 Maven 命令行(mvn clean package -DskipTests),因为它可能是由于你的 IDE 中存在错误或未正确设置。要开始,请首先从我们的库中下载Flink源代码,例如。以下指南是为IntelliJ IDEA 2020.3编写的。一些细节在其他版本中

2022-07-07 15:36:19 1415

原创 Flink技术内幕——文件系统

Flink通过org.apache.flink.core.fs.FileSystem类拥有自己的文件系统抽象。这种抽象提供了一组通用操作,并为各种类型的文件系统实现提供了最低限度的保证。为了支持广泛的文件系统,FileSystem的可用操作集非常有限。例如,不支持追加或修改现有文件。文件系统由文件系统方案来标识,如File://, hdfs://等。Flink直接实现文件系统,其文件系统方案如下:文件,它表示机器的本地文件系统。其他文件系统类型通过连接到Apache Hadoop支持的文件系统套件的实现来

2022-07-03 22:45:49 994

原创 Flink技术内幕——Task 生命周期

Task 是 Flink 的基本执行单元。算子的每个并行实例都在 task 里执行。例如,一个并行度为 5 的算子,它的每个实例都由一个单独的 task 来执行。StreamTask 是 Flink 流式计算引擎中所有不同 task 子类的基础。本文会深入讲解 StreamTask 生命周期的不同阶段,并阐述每个阶段的主要方法。因为 task 是算子并行实例的执行实体,所以它的生命周期跟算子的生命周期紧密联系在一起。因此,在深入介绍 StreamTask 生命周期之前,先简要介绍一下代表算子生命周期的基本方

2022-07-03 22:34:15 991

转载 Flink技术内幕——作业调度

这篇文档简要描述了 Flink 怎样调度作业, 怎样在 JobManager 里描述和追踪作业状态。Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot,每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成,比如并行度为 n 的 MapFunction 和 并行度为 n 的 ReduceFunction。需要注意的是 Flink 经常并发执行连续的 task,不仅在流式作业中到处

2022-07-01 07:16:04 433

原创 Flink——监控

Flink的web界面提供了一个选项卡来监视作业的检查点。这些统计数据在作业终止后也可用。有四个不同的选项卡显示关于检查点的信息:Overview, History, Summary, and Configuration。以下部分将依次介绍所有这些内容。概览选项卡列出了以下统计信息。请注意,这些统计数据不会在JobManager丢失后继续存在,并且在JobManager故障转移时将被重置为。检查点历史记录保存关于最近触发的检查点的统计信息,包括当前正在进行的检查点。注意,对于失败的检查点,度量标准是在最佳

2022-06-30 23:18:04 4197

原创 Flink部署——Debugging(开发实用,建议收藏)

Flink 的事件时间和 watermark 支持对于处理乱序事件是十分强大的特性。然而,由于是系统内部跟踪时间进度,所以很难了解究竟正在发生什么。可以通过 Flink web 界面或指标系统访问 task 的 low watermarks。Flink 中的 task 通过调用 currentInputWatermark 方法暴露一个指标,该指标表示当前 task 所接收到的 the lowest watermark。这个 long 类型值表示“当前事件时间”。该值通过获取上游算子收到的所有 waterma

2022-06-30 14:01:52 1529

原创 Flink操作——Batch - Blocking Shuffle

Flink DataStream API 和 Table / SQL 都支持通过批处理执行模式处理有界输入。此模式是通过 blocking shuffle 进行网络传输。与流式应用使用管道 shuffle 阻塞交换的数据并存储,然后下游任务通过网络获取这些值的方式不同。这种交换减少了执行作业所需的资源,因为它不需要同时运行上游和下游任务。总的来说,Flink 提供了两种不同类型的 blocking shuffles:Hash shuffle 和 Sort shuffle。对于 1.14 以及更低的版本,Ha

2022-06-29 23:06:33 848

原创 Flink操作——状态与容错

Checkpoint 使 Flink 的状态具有良好的容错性,通过 checkpoint 机制,Flink 可以对作业的状态和计算位置进行恢复。参考 Checkpointing 查看如何在 Flink 程序中开启和配置 checkpoint。要理解检查点和保存点之间的区别,请参阅检查点和保存点。Checkpoint 在默认的情况下仅用于恢复失败的作业,并不保留,当程序取消时 checkpoint 就会被删除。当然,你可以通过配置来保留 checkpoint,这些被保留的 checkpoint 在作业失败或取

2022-06-28 23:20:18 2096

原创 Flink部署——自定义KafkaLog4jAppender

官网日志地址本章内容基于flink1.7 ,log4j1.x依赖

2022-06-28 13:19:15 1140

原创 Flink部署——Metric Reporters

通过在 conf/flink-conf.yaml 中配置一个或多个报告器,可以向外部系统公开指标。这些报告器将在启动时在每个作业和任务管理器上实例化。所有报告者必须至少具有类或工厂.class属性。可以/应该使用哪个属性取决于报告器实现。有关详细信息,请参阅各个报告器配置部分。某些报告器(称为“计划”)允许指定报告间隔。下面将列出特定于每个报告器的更多设置。指定多个报告器的示例报告器配置要点:当Flink启动时,包含reporter程序的jar必须是可访问的。支持factory.class属性的记者可以作

2022-06-27 13:00:42 3165 4

原创 Flink部署——高可用

JobManager 高可用(HA)模式加强了 Flink 集群防止 JobManager 故障的能力。 此特性确保 Flink 集群将始终持续执行你提交的作业。JobManager 协调每个 Flink 的部署。它同时负责 调度 和 资源管理。默认情况下,每个 Flink 集群只有一个 JobManager 实例。这会导致 单点故障(SPOF):如果 JobManager 崩溃,则不能提交任何新程序,运行中的程序也会失败。使用 JobManager 高可用模式,你可以从 JobManager 失败中恢复,

2022-06-26 23:32:32 4680

转载 Flink部署——文件系统

具体参考官网地址

2022-06-26 21:24:00 140

原创 Flink部署——细粒度资源管理

本页介绍细粒度资源管理的用法、适用场景及其工作原理。注意:此功能目前是 MVP(“最小可行产品”)功能,仅适用于 DataStream API。可能受益于细粒度资源管理的典型方案包括:在如何提高资源效率中,深入探讨了细粒度资源管理如何提高上述场景的资源效率。如 Flink 架构中所述,任务管理器中的任务执行资源被拆分为多个槽。该槽是 Flink 运行时中资源调度和资源需求的基本单位。通过细粒度资源管理,槽请求包含用户可以指定的特定资源配置文件。Flink 将尊重用户指定的资源要求,并从 TaskManag

2022-06-26 21:18:47 766

原创 Flink部署——弹性扩缩容

这个文档描述了那些可以使 Flink 自动调整并行度的选项。Reactive 模式是一个 MVP (minimum viable product,最小可行产品)特性。目前 Flink 社区正在积极地从邮件列表中获取用户的使用反馈。请注意文中列举的一些局限性。在 Reactive 模式下,Job 会使用集群中所有的资源。当增加 TaskManager 时,Job 会自动扩容。当删除时,就会自动缩容。Flink 会管理 Job 的并行度,始终会尽可能地使用最大值。当发生扩缩容时,Job 会被重启,并且会从最新的

2022-06-26 20:12:01 2503

原创 Flink部署——命令行界面

Flink 提供了一个命令行界面 (CLI) bin/flink 来运行打包为 JAR 文件的程序并控制其执行。CLI 是任何 Flink 设置的一部分,可在本地单节点设置和分布式设置中使用。它连接到在conf/flink-conf.yaml中指定的正在运行的JobManager。本节中列出的命令工作的先决条件是运行 Flink 部署,如 Kubernetes、YARN 或任何其他可用的选项。您可以随意在本地启动 Flink 集群,在您自己的机器上尝试这些命令。提交作业意味着将作业的 JAR 和相关依赖项上

2022-06-26 18:21:00 1869

一个3D旋转的圣诞树,有以下特点: 1. 树由三个绿色三角形组成 2.顶部有一个闪烁的黄色星星 3.底部有棕色树干 4.树上装饰有不同颜色的圣诞球 5.整棵树会缓慢旋转 6.星星和圣诞球都有闪烁效果

这段代码创建了一个3D旋转的圣诞树,包含以下特点: 1. 树由三个绿色三角形组成 2.顶部有一个闪烁的黄色星星 3.底部有棕色树干 4.树上装饰有不同颜色的圣诞球 5.整棵树会缓慢旋转 6.星星和圣诞球都有闪烁效果 7.深色背景让圣诞树更加突出 你可以直接将这段代码保存为HTML文件并在浏览器中打开查看效果。如果你想要调整树的大小、颜色或动画效果,可以修改相应的CSS属性值。

2024-12-26

sbt+scala+idea安装配置创建导入sbt项目

基于windows10和jdk1.8的scala+sbt+idea的开发环境的详细安装教程,希望对您有用,后期还会更新,请关注,一起进步,谢谢!

2017-11-25

空空如也

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

TA关注的人

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