自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JasonLee实时计算

Stay hungry Stay foolish

  • 博客(212)
  • 收藏
  • 关注

原创 Flink on yarn 实时日志收集到 kafka 打造日志检索系统

点击上方"JasonLee实时计算",选择"设为星标"再也不用担心错过重要文章后台回复"监控",获取 grafana 监控 Flink最...

2021-08-15 17:35:11 899 9

原创 【Flink 监控系列】Flink on yarn 任务实时监控最佳实践(Prometheus + Grafana)打造企业级监控方案

我们都知道 Flink 任务是一个 7*24 小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存...

2021-08-08 19:14:14 1949 2

原创 【Flink实战系列】Flink 各种报错汇总以及解决方案(持续更新中)

这篇文章主要用来记录平时使用 Flink 过程中遇到的问题以及解决方案,其实前面已经有一篇这样的文章了,但是那篇文章里面的问题已经很多了,不太方便浏览,所以新开了一篇文章,后面的问题都会更新到这篇文章中....

2021-02-06 21:02:33 2801 1

原创 【Flink实战系列】自定义通用的 flatmap 实现数据预聚合功能(keyby + countWindow)

需求有时候我们需要对数据做预聚合操作,比如下游需要批量写入或者批量请求访问的时候,关于预聚合大概有两种解决方案,一种是使用 keyby + countWindow 的方式,第二种就是今天要介绍的 flatmap 的方式.并且还要实现一个通用的 flatmap .思路实现过程非常的简单,定义一个泛型类实现 FlatMapFunction 接口,然后定义一个成员变量 List 重写 flatMap 方法,每次把数据缓存到 List 里面攒一个 batch 然后发送到下游,并清空 List 的数据.

2021-01-23 11:56:20 1307 7

原创 【Flink实战系列】通用的反序列化类把 JSON 转成 POJO 对象

背景 & 痛点1, Flink 在消费到 kafka 的数据后,我们经常会把数据转成 POJO 对象,方便后面对数据的处理,但是每个人 POJO 类型是不一样的,每次都需要新开发一个反序列化的类,这样会带来大量的重复代码.能不能实现一个通用的反序列类来解决这个问题?2, 如何获取到 kafka 的元数据信息? 比如我有这样的需求,一个 Flink 任务消费了多个 topic 的数据后面要根据不同的 topic 名称做不同的处理逻辑,再比如我需要获取到数据写入 kafka 的时间戳,做全链路的

2021-01-21 19:40:12 3089 16

原创 【Flink实战系列】为什么不建议用 JSONKeyValueDeserializationSchema 反序列化

为什么不建议用JSONKeyValueDeserializationSchema?上一篇文章中在反序列化kafka的数据时候用的是KafkaDeserializationSchema,因为我要获取kafka的元数据信息,有同学问我说为什么不直接用Flink自带的JSONKeyValueDeserializationSchema呢? 这个也可以获取到kafka的元数据信息啊,而且使用起来也非常的简单,JSONKeyValueDeserializationSchema 确实可以获取到kafka的元数据信息,但

2020-09-05 15:53:41 2160 1

原创 【Flink实战系列】Flink 晚到(迟到)的数据怎么更新之前窗口计算结果

最近有一个朋友问我,Flink使用窗口计算的时候,如果设置了允许数据晚到时间,这个时候又来了一条属于前面窗口的数据,但是前面窗口的计算结果已经写到mysql了,怎么更正之前的结果,而不是在写入一条数据呢?今天这篇文章就来介绍一下怎么使用Flink的窗口函数更新之前计算的不完全的(不准确的结果)对于晚到的数据,一般有几种常用的处理方式:1,直接丢弃掉(这个也是窗口的默认做法,也就是说一个迟到的元素不会创建一个新的窗口)2,用测流输出的方式,拿到晚到的元素,可以进行,相关的逻辑处理,或者保存起.

2020-05-08 20:54:54 1690 1

原创 Flink项目实战系列(Spark项目实战系列)

本人的知识星球内发布了大量的Flink和Spark的项目实战,文章的目录如下:初识FlinkFlink读取Kafka源码解读Flink的状态后端Flink的runtimeFlink系列之数据流编程模型Flink系列之checkpointFlink系列之savepointFlink系列之checkpoint和savepoint的区别Flink系列之部署Standalone模式...

2019-08-08 10:09:21 5105 1

原创 scala的模式匹配

scala提供了一个非常强大的模式匹配机制,那什么是模式匹配呢?模式匹配是检查某个值(value)是否匹配某一个模式的机制,一个成功的匹配同时会将匹配值解构为其组成部分。它是Java中的switch语句的升级版,同样可以用于替代一系列的 if/else 语句。语法一个模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式。箭头符号=>...

2019-04-10 20:54:44 668

原创 【Spark实战系列】spark 各种报错汇总以及解决方案(持续更新中)

这篇文章主要记录下spark中遇到的各种问题,以及解决方法(以后会持续的更新)1.File does not exist. Holder DFSClient_NONMAPREDUCE_-67513653_1 does not have any open files今天早上发现程序报了一个这个错误,目前还没找到报错的原因,先记录一下吧.2.org.apache.kafka.clients...

2019-01-30 15:12:25 4487

原创 hive2.2.0安装与配置(元数据保存在mysql中)

Hive有3中运行模式,今天主要来介绍一下把元数据保存在mysql中的配置方法.mysql的详细安装步骤(1)内嵌模式将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。(2)本地模式这种模式是将元数据保存在本地独立的数据库中(一般是 M...

2019-01-12 01:27:56 521

原创 centos7安装mysql5.6.38史上最详细的安装步骤

最近由于要用到mysql,就想着装一个mysql,但是因为我的虚拟机是centos7的,centos7将默认数据库mysql替换成了Mariadb安装起来就比较的麻烦,遇到各种各样的问题,网上的教程很多,但是基本没有好使的,按照他们的步骤到最后没有一个成功的,搞了很长时间才装好,我记得之前在centos6.5上面安装也没那么复杂啊,但是在7上面不管是用yum方式,还是安装包的方式都搞了好几遍,最后...

2019-01-12 00:14:17 1537 2

原创 carbondata1.5.1编译

What is CarbonData?Apache CarbonData is an indexed columnar data format for fast analytics on big data platform, e.g. Apache Hadoop, Apache Spark, etc.因为我的spark是2.3.1的版本,而最新版的carbondata1.5.1才支持,但是...

2018-12-08 18:55:25 480

原创 hbase的常用命令

现在做的项目用到了hbase,今天就记录一下hbase的一些常用的命令,只是一些比较常用的,当然还有很多命令.1.进入hbase shell console2.查看所有的表: list3.创建表: create 't1', {NAME => 'f1', VERSIONS => 5, TTL => 2592000, BLOCKCACHE => true},创建表...

2018-07-29 13:10:00 549

原创 【Flink 实战系列】Flink CDC 实时同步 Mysql 全量加增量数据到 Hudi

Flink CDC 是基于 Flink 开发的变化数据获取组件(Change data capture),简单的说就是来捕获变更的数据,Apache Hudi 是一个数据湖平台,又支持对数据做增删改查操作,所以 Flink CDC 可以很好的和 Hudi 结合起来,打造实时数仓,实时湖仓一体的架构,下面就来演示一下同步的过程。

2022-11-30 13:40:29 45

原创 【Spark 实战系列】Spark 使用 BulkLoad 同步数据到 hbase 排序优化

最近群里有同学问我 spark 用 bulk 写入 hbase 的时候报错,因为 rowkey 排序的问题,今天带大家分析一下这个问题,先看下面的 demo。

2022-11-20 14:49:28 607

原创 【Spark 实战系列】sparkstreaming 任务出现堆积如何优化?(流量突然大增资源不够怎么办?)

在日常的生产中,什么情况下会出现数据堆积呢?

2022-11-18 15:39:02 449

原创 【Spark 实战系列】Phoenix 整合 spark 进行查询分析

Phoenix 是一个开源的 HBASE SQL 层。它不仅可以使用标准的 JDBC API 替代 HBASE client API 创建表,插入和查询 HBASE,也支持二级索引、事物以及多种 SQL 层优化。

2022-11-17 22:20:01 254

原创 【Spark 实战系列】sparkstreaming 中使用 StreamingListener 完成程序的异常报警功能

上一篇文章中说了 StreamingListener 的使用,可以自己获取到很多的信息,比如程序的处理延迟,调度延迟,在流式的任务中,报警是非常重要的,比如程序运行延迟太大,或者调度延迟变大,都会对程序的稳定性造成影响,我们需要及时的知道这些信息,做出相应的处理,下面就来看一下如何基于 StreamingListener 完成对 sparkstreaming 程序异常的监控报警功能(代码还是之前的)。

2022-11-17 22:00:35 371

原创 【Spark 实战系列】SparkStreaming 累加器的使用

累加器(accumulator)是Spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变。如果你想知道处理成功了多少条,失败了多少条,可以定义两个累计器,一个放在程序处理的最后面,失败的在catch里面进行累计,就可以了,需要注意的是,如果你把程序停了,在启动后,累计器会初始化,不会从上次的结果出接着累计,如果你想要让他接着累计的话,可以把每个批次的结果保存到第三方存储,然后第二次启动的时候,直接把第一个批次的累计器的结果和之前保存的结果相加就好了。

2022-11-17 21:47:31 492

原创 【Flink 实战系列】如何给 Flink 任务设置合理的并行度?

最近看到很多朋友都在问这个问题,当我在开发 Flink 实时计算任务的时候,如何给每个算子设置合理的并行度呢?如果设置多了可能会出现资源浪费的情况,如果设置少了任务可能会出现反压,所以给 Flink 任务设置一个合理的并行度就显得尤为重要,那今天就针对这个问题做一个详细的分析。一个 Flink 任务通常是由三个部分组成的,Source,Transformation,Sink,下面就分别说一下每一部分如何设置。

2022-10-18 14:57:50 709

原创 【Flink 实战系列】Flink 使用 ParameterTool 动态加载外部配置文件

直接在代码里面写死。把配置信息维护在一个类里面,所有用到的地方直接引用即可。把配置信息放在项目 resource 下面的一个配置文件中,然后从这个配置文件中加载配置。把配置文件放在外部,启动任务的时候传入一个路径参数,在代码里面解析配置文件。

2022-10-15 13:28:10 485

原创 【Flink 实战系列】Flink SQL 实时同步 Kafka 数据到 Hudi(parquet + snappy)并且自动同步数据到 Hive

本文主要介绍了 Flink 实时同步数据到 Hudi,然后再把数据加载到 Hive 的流程,加载数据可以通过手动的方式也可以配置让 Hudi 自动创建 Hive 表完成加载数据,以及这两种方式的区别,和使用过程中遇到问题的解决方案。

2022-10-06 18:47:40 672

原创 【Flink 实战系列】Flink SQL 使用 filesystem connector 同步 Kafka 数据到 HDFS(parquet 格式 + snappy 压缩)

我们用 datastream API 实现了从 Kafka 读取数据写到 HDFS 并且用 snappy 压缩,今天这篇文章我们来实现一个 Flink SQL 版本的,为了方便我直接采用 sql-client 提交任务的方式来演示。可以看到分区正常生成了,数据也都正常,_SUCCESS 文件也生成了,这里我就不在把数据加载到 hive 表里测试了,上一篇文章中有测试,大家可以自己测一下。在这里面会把所有需要用到的 parquet 相关的依赖都打进来,所以我们不需要添加其他 parquet 相关的包了。

2022-10-05 14:57:13 443

原创 【Flink 实战系列】Flink 同步 Kafka 数据到 HDFS parquet 格式存储 snappy 压缩

这里使用的是 bulk encoding 格式,这个方法有两个参数,第一个表示的是数据存储的路径,第二个表示的是数据的存储逻辑。这个消费 Kafka 用的是 KafkaSource 也是实现了新的接口 Source,在反序列的时候还是用的我们自定义的通用反序列化类 PoJoDeserializationSchema 直接把 JSON 格式的数据转成 JasonLeePOJO 对象。提交任务这里就省略了,我们直接在 hive 创建个表,然后把 HDFS 上的数据加载进来,看看能否正常读取出来。

2022-10-04 17:19:11 607

原创 【Flink 实战系列】No Watermark (Watermarks are only available if EventTime is used)

本文主要是从一个简单的 DEMO 出发,通过分析底层的源码,让大家了解了为什么 Watermark 没有正常更新,这个在生产环境还是比较常见的,只要是窗口不触发计算的问题,基本上都是因为 Watermark 没有正常推进,如果遇到这种问题,直接就去找为什么 Watermark 没有推进,如果是上面的情况,可以选择上面三种方案中的任意一种解决,当然还是推荐第一种,第二种和第三种都会打破 operator Chain 会带来性能损耗。

2022-10-02 23:04:46 680

原创 【Flink 实战系列】Flink 消费多个 Topic 数据利用侧流输出完成分流功能

本文主要介绍了 Flink 消费多个 Topic 数据,实现分流的逻辑,通过自定义反序列类 PoJoDeserializationSchema 去获取 Topic 的元数据信息,然后通过侧流输出的方式实现一个流分成多个流的操作。

2022-10-01 14:32:42 613

原创 【Flink 源码系列】Flink Collector Output 接口源码解析

0在 Flink 中 Collector 接口主要用于 operator 发送(输出)元素,Output 接口是对 Collector 接口的扩展,增加了发送 WaterMark 的功能,在 Flink 里面只要涉及到数据的传递都必须实现这两个接口,下面就来梳理一下这些接口的源码。Output Collector UML 图WatermarkGaugeExposingOutputCollector...

2022-09-19 10:00:44 780

原创 【Flink 源码系列】Flink 侧流输出源码解析

Flink 的 side output 为我们提供了侧流(分流)输出的功能,根据条件可以把一条流分为多个不同的流,之后做不同的处理逻辑,下面就来看下侧流输出相关的源码。先来看下面的一个 Demo,一个流被分成了 3 个流,一个主流,两个侧流输出。SingleOutputStreamOperator<JasonLeePOJO>process=kafka_source...

2022-09-14 10:00:04 741

原创 【Flink 实战系列】Flink on yarn 为什么 Allocated CPU VCores 显示不正确?

任务的并行度也是 3,所以只需要一个 TM 即可,那么问题就来了,这个任务一共需要多少个 CPU VCores,很明显答案应该是 4 个,3(TM)+ 1 (JM) = 4 个,这里不要忘了,JM 也是需要一个 CPU 的,那我们再来看下 Yarn UI 上面显示的 CPU VCores 是多少个呢?这个问题被问到了好多次,今天就来详细的解释一下原因。但是在生产环境中可能会遇到一个问题,任务的 CPU 使用率比较低,可能会出现浪费 CPU 资源的情况,比如这个任务的 CPU 使用率。

2022-09-03 15:30:14 560

原创 【Flink 实战系列】Flink pipeline.operator-chaining 参数使用以及源码解析

当我们使用 Flink SQL 提交一个任务,没有给算子单独设置并行度的情况下,默认所有的算子会 chain 在一起,像下面的这样:此时,整个 DAG 图只会显示一个算子,虽然这样有利于数据的传输,可以提高任务的性能,但是缺点也很明显,我们无法看到数据的输入和输出,以及反压相关的 metrics。那在 datastream api 开发的任务中我们可以使用 disableChaining 方法来打断 operatorChain,但是在 SQL 开发的任务中怎么办呢?如果我们想要查看每一个算子的输入和输出的数

2022-08-28 14:35:11 600

原创 【leetcode】剑指 Offer II 008. 和大于等于 target 的最短子数组

定义两个指针 \textit{start}start 和 \textit{end}end 分别表示子数组(滑动窗口窗口)的开始位置和结束位置,维护变量 \textit{sum}sum 存储子数组中的元素和(即从 \text{nums}[\textit{start}]nums[start] 到 \text{nums}[\textit{end}]nums[end] 的元素和)。, numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]..

2022-08-15 12:38:41 49

原创 VMware 桥接模式下本机 PING 不通虚拟机的解决方法

当我们想在一台电脑上(A)连接另外一台电脑上(B)的虚拟机时,会选择使用桥接模式,可能会遇到 B 本机 PING 不通虚拟机,虚拟机也 PING 不通 B 本机,当然在 A 上也 PING 不通 B 上虚拟机的问题,这篇文章就教大家如何解决。,然后可以看到有三个默认生成的网卡,VMnet 0/1/8 分别代表 桥接模式,仅主机模式,NAT模式。这里的 WMware Bridge Protocol 要勾选上,其实默认就是勾选的,可以检查一下是否勾选。第一步就是要把本机 B 和 B 上虚拟机的防火墙都关闭了。.

2022-08-06 11:55:46 1294 1

原创 【Flink 监控系列】Flink 自定义 kafka metrics reporter 上报 metrics 到 kafka

直接在 Flink Web UI 上面查看。通过 Flink 提供的 Metric Reporters 上报到外部系统,最终在 Grafana 上面展示。通过 Flink Rest API 接口查看。这三种方式各自有各自的使用场景,你可能会问,Flink 都已经提供了这么多种查看方式,那我们为什么还要自定义 kafka metrics reporter 呢?......

2022-08-04 21:08:37 553

原创 【Flink实战系列】Could not initialize class org.apache.hadoop.security.UserGroupInformation

从报错信息来看很明显是缺少 UserGroupInformation 相关的包,查找发现这个类是在 hadoop-common 这个包里,但是项目里面确实添加了这个包的依赖,也把依赖打到最终的包里,在最终的 jar 包里也能找到这个类,也尝试打包的时候不加入这个依赖,直接把 hadoop-common-2.9.0.jar 这个包添加到 flink/lib 下,但是都会遇到这个报错,最后发现是忘记设置 hadoop 的环境变量了。解决的方法也很简单,只需要在提交任务之前设置一下环境变量即可。...

2022-08-04 17:27:23 795

原创 【Flink实战系列】Flink SQL 字符串类型的字段如何实现列转行?

既然不能使用UDTF,那我们就来想想Flink的内置函数能不能满足需求,我们知道unnest函数需要的参数是Row类型的,对应到JSON里面也就是object类型,所以问题就变成了怎么把字符串转成object类型,那我们可以用FlinkSQL的内置函数STR_TO_MAP来转换,然后外面在套一个unnest函数即可实现这个需求。普通的列转行可以参考这篇文章,https//mp.weixin.qq.com/s/3oQRUO0A8G96qbM97UuisA。...

2022-07-31 21:53:34 496

原创 【Flink实战系列】Sort on a non-time-attribute field is not supported

报错信息的字面意思是,不支持对非时间属性字段进行排序,你肯定会有疑问?这不是最基本,最常见的排序吗?是的,在批式计算场景下orderby是非常简单也是很场景的需求,Flink是支持的,但是在流式查询中的ORDERBY却很难计算,因为我们不希望在必须发出需要到达结果表开头的结果时更新整个结果。因此,我们只支持ORDERBY时间属性,前提是我们能够保证结果的时间戳(大致)递增。解决的办法就是改成时间属性字段,或者是改成批式计算,这样都是可以使用orderby的。.........

2022-07-30 21:48:43 449

原创 【Flink实战系列】Flink 读取 Hive 数据同步到 Kafka

代码非常的简单,这里采用的是批量读取的方式,通过HiveCatalog直接去读hive表的数据,当然除了这种实现外,还有很多种实现方式,比如还可以流式的读hive,还可以通过读文件的方式都是可以的,这里就只写了这一种实现。这几个包是必须添加的,需要注意的是,如果集群上已经有这些包的话,在打包的时候就不要把依赖打进去,如果没有的话,就打到最终的包里。否则可能会出现jar包冲突,或者ClassNotFoundException异常。因为这是一个批式任务,所以在任务执行完后就直接退出了。...

2022-07-30 13:24:22 430

原创 【Flink实战系列】Lorg/apache/flink/kafka/shaded/org/apache/kafka/clients/consumer/ConsumerRecord;)Ljava/

本文主要是分享了一个jar包冲突异常,以及怎样一步步排查问题到最后的解决问题,其实这两个异常在平时是非常常见的,给大家提供一个排查的思路,如果遇到类似的问题,知道怎么去解决。httpshttpshttps。......

2022-07-24 19:52:50 402

原创 【Flink报错】Option not applicable to singleton quantifier

在使用 Flink CEP greedy 的时候遇到下面的异常。Option not applicable to singleton quantifier 这句话的字面意思是,选项不适用于单例量词,看报错是在代码的 62 行,62 行相关的代码如下:也就是说 where 不适用于 greedy ,greedy 的意思是贪心的,表示尽可能匹配次数多的,所以它必须和次数结合使用,也就是说它的前面必须有 times(n),times(n, m),oneOrMore(),timesOrMore(n) 类似于这样的

2022-06-11 14:06:56 149 1

空空如也

空空如也

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

TA关注的人

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