
flink
文章平均质量分 75
今天上上签
这个作者很懒,什么都没留下…
展开
-
flink消费kafka时topic partitions 和并行度间的分配源码详解
引言当我们消费kafka的一个topic时,我们知道kafka partition 是和我们设置的并行度是一一对应的;也就是说,假如我们的topic有12个分区,那我们就设置12个并行度,这样每个并行度都能接收到数据且数据均匀;那如果我们设置了15个并行度,那么就会有3个并行度是收不到数据的;这可以在web ui上,点开source operate 查看SubTasks的Bytes Sent,就可以发现,有三个SubTasks的Bytes Sent始终为0。当我们消费kafka多个topic的时候,原创 2020-12-23 17:27:16 · 3894 阅读 · 1 评论 -
Flink入门之对checkpoint和Flink内部精确一次性消费的理解
Flink--Checkpoint机制原理前言一、如何理解flink中state(状态)Ⅰ、state理解Ⅱ、案例理解stateⅢ、为什么需要state管理Ⅳ、理想中的state管理二、如何理解flink中checkpoint(检查点)Ⅰ、执行流程Ⅱ、ck保存了什么Ⅲ、单分区单并行度执行流程详解Ⅳ、多分区多并行度执行流程详解三、如何理解Flink内部精确一次消费Ⅰ、barrier对齐Ⅱ、barrier不对齐Ⅲ、barrier对齐与不对齐的影响参考博客前言最近有个项目涉及到要用RocksDB做增量Chec原创 2020-12-10 17:44:25 · 2423 阅读 · 0 评论 -
flink任务挂掉后从ck自动重启
问题描述我们的flink程序往往是7*24小时在运行的,当任务挂掉后,我们虽然可以通过监控报警等,第一时间知道程序挂掉,但是如果我们电脑不在旁边或者我们在休假,这种情况,往往不能够及时的重启任务。需求想实现一个脚本,能够在规定的时间范围内监测到任务已经停止,然后自动运行重启命令,重启任务;如果任务是存有中间状态的,那么还需要在自动重启时获取到任务的checkpoint路径实现思路关于监测任务是否挂掉我们可以利用yarn的命令配合Linux的命令行来找到你提交的命令,例如:yarn app原创 2020-11-13 17:49:09 · 3173 阅读 · 5 评论 -
flink入门之StreaimingFileSink的使用
需求:用flink实时消费kafka信息,将信息存储到hdfs上。方案:用flink提供的StreaimingFileSink方法。原创 2020-11-12 16:46:47 · 1244 阅读 · 0 评论 -
Flink WebUI中查看成功提交的偏移量指标为负值
1.问题在一个flink任务提交后,我去 WebUi去查看偏移量的指标,发现值竟然是个负数(如下图):这个指标官网上给出的释义是:对于每个分区,最后一次成功提交到Kafka的偏移量;所以不管怎么说,这个值都不是正常的。2.结论先给问题的结论(解决办法):之所以出现这样的值,是因为没有设置checkpoints的原因。3.详解但为什么不设置ck,这个指标就会变成负值呢?这就要我们深入源码去看啦首先,我们定位到这个类:org.apache.flink.streaming.connectors原创 2020-09-05 15:59:51 · 1054 阅读 · 0 评论 -
flink采用分离模式提交报错:java.lang.NoSuchMethodError
问题背景最近在写完一个flink项目后打包到集群运行,提交时因为满脑子想着周末怎么去浪,结果提交完发现提交命令忘记了-d参数,无奈只能手动kill掉任务,然后加上-d参数重新提交,结果问题就出现了,flink任务刚刚提交到yarn就会报如下错误:排查问题没有办法,只能顺着错误日志去寻找问题,第一步,先看大致错误:java.lang.NoSuchMethodError:org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest.newIn原创 2020-08-20 17:31:37 · 2123 阅读 · 0 评论 -
flink入门之scala实现异步IO访问redis及踩坑记录(2)
我们在flink入门之scala实现异步IO访问redis及踩坑记录(1)中采用jedis来模拟异步读取redis,那么在本篇,我们要采用redis的高级客户端lettuce,这个客户端很强大,支持异步操作,如果想具体了解的请移步:Redis高级客户端Lettuce详解首先我们导入依赖: <dependency> <groupId>io.lettuce</groupId> <artifactId>lett原创 2020-08-19 11:55:57 · 1007 阅读 · 0 评论 -
正确使用Flink广播流以及记录Flink做checkpoints失败情况
最近在做项目的时候,涉及到这样的一个场景,就是要把一个比较小并且不会经常改动的表作为维表,和实时流进行匹配。这张表是MySQL中的一个表,我的第一反应就是读取这张表进行广播。文章目录不优雅的广播流使用使用广播流造成的写入检查点失败优雅使用广播流不优雅的广播流使用简要代码如下:val env = StreamExecutionEnvironment.getExecutionEnvironmentval broadcastMysql = env.addSource(new SourceFromMySQ原创 2020-08-18 19:24:23 · 2127 阅读 · 0 评论 -
spark和flink读取csv文件对比
最近总是会有需求要涉及到读取csv文件,以前总是拿到文件就去读,没有仔细去看相关的方法和功能,现在结合最近的需求,记录一下spark和flink读取csv文件的操作。(注:本文内容针对spark2.3.0以及flink1.9.1)spark:本来想自己总结一下,但是这里有位大佬写的很详细,可以直接参考:https://blog.youkuaiyun.com/weixin_42411818/article/details/98734464举个简单的小例子,现在我们有这样一份csv文件我们只想读uuid和ph原创 2020-05-11 11:56:52 · 824 阅读 · 0 评论 -
flink入门之scala实现异步IO访问redis及踩坑记录(1)
问题在使用sparkstreaming的过程中,我们经常有一个需求是把中间变量写到redis,然后在流程序中去读redis的中间变量。在sparkstreaming中,我们只需要用个foreach算子就能实现这种需求,那flink中没有foreach算子,我们该如何做到流程中读redis的数据呢?方法我们可以用flink的异步IO访问redis完成这种操作实现import java.ut...原创 2020-04-08 18:41:44 · 1772 阅读 · 5 评论 -
flink入门之使用JSONKeyValueDeserializationSchema反序列kafka消息
背景需求在日常生产中,我们大多数时候都会用到flink的kafka connector,在使用过程中,大多数的程序员都会使用new SimpleStringSchema()来反序列化Kafka中的数据,然后使用alibaba提供的fastJson来解析数据例如: val jsonObject = JSON.parseObject(jsonStr) val eventId = JSON....原创 2020-03-31 17:56:50 · 4878 阅读 · 0 评论 -
理解flink的时间概念和watermark
最近在慢慢看flink的知识,我们都知道,flink和sparkstreaming的一大区别就是flink支持多种时间类型以及增加了watermark水位的概念,那么flink增加的这些功能有什么好处呢?文章目录时间类型watermark时间类型对于流式数据,最大的特点就是数据上带有时间属性特征,flink根据时间产生的位置不同,将时间分为三种概念。1.Event Time 事件...原创 2020-03-24 15:30:28 · 372 阅读 · 0 评论