随笔分类 -  flink

摘要:一般来说,Flink内置的水位线生成器就可以满足应用需求了。不过有时由于业务逻辑可能非常复杂,这时对水位线生成的逻辑也有更高的要求,开发人员就必须自定义实现水位线策略WatermarkStrategy了。在WatermarkStrategy中,时间戳分配器TimestampAssigner都是大同小 阅读全文
posted @ 2022-06-28 05:52 晓枫的春天 阅读(937) 评论(1) 推荐(0) 编辑
摘要:实现 SourceFunction 大多数情况下,Flink自身支持的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况,想要读取的数据源来自某个外部系统,而flink既没有预实现的方法、也没有提供连接器,那就只好自定义实现SourceFunction了。接下来创建一个自定义的数据源,实现S 阅读全文
posted @ 2022-06-27 07:55 晓枫的春天 阅读(879) 评论(0) 推荐(0) 编辑
摘要:定义了窗口分配器,只是知道了数据属于哪个窗口,可以将数据收集起来了;至于收集起来到底要做什么,其实还完全没有头绪。所以在窗口分配器之后,必须再接上一个定义窗口如何进行计算的操作,这就是所谓的“窗口函数”(window functions)。经窗口分配器处理之后,数据可以分配到对应的窗口中,而数据流经 阅读全文
posted @ 2022-06-24 11:56 晓枫的春天 阅读(2126) 评论(0) 推荐(0) 编辑
摘要:1、窗口API 1,1、按键分区(Keyed)和非按键分区(Non-Keyed) 在定义窗口操作之前,首先需要确定,到底是基于按键分区(Keyed)的数据流KeyedStream来开窗,还是直接在没有按键分区的DataStream上开窗。也就是说,在调用窗口算子之前,是否有keyBy操作。 按键分区 阅读全文
posted @ 2022-06-23 08:07 晓枫的春天 阅读(255) 评论(0) 推荐(0) 编辑
摘要:Flink中事件时间和水位线是做基于时间的处理计算的基础。之前我们已经了解了Flink中基本的聚合操作。在流处理中,我们往往需要面对的是连续不断、无休无止的无界流,不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来,就需要继续叠加、再次输出结果。这样 阅读全文
posted @ 2022-06-21 09:45 晓枫的春天 阅读(341) 评论(0) 推荐(0) 编辑
摘要:1、水位线生成原则 完美的水位线是“绝对正确”的,也就是一个水位线一旦出现,就表示这个时间之前的数据已经全部到齐、之后再也不会出现了。而完美的东西总是可望不可即,我们只能尽量去保证水位线的正确。如果对结果正确性要求很高、想要让窗口收集到所有数据,那么只能等了。由于网络传输的延迟不确定,为了获取所有迟 阅读全文
posted @ 2022-06-20 09:36 晓枫的春天 阅读(462) 评论(0) 推荐(0) 编辑
摘要:对于数据处理系统的架构,最简单的方式就是单节点。当数据量增大,计算逻辑更加复杂多变时,可以考虑增加CPU、加大内存,也就是让一台机器变得性能更加强大从而提高计算性能——这是所谓的对称多处理架构(SMP),但是SMP存在问题很明显:所有CPU 完全平等,所有内存、总线资源共享,这就势必造成资源竞争;而 阅读全文
posted @ 2022-06-16 14:24 晓枫的春天 阅读(353) 评论(0) 推荐(0) 编辑
摘要:虽然flink 本身支持Standalone模式,无需其他框架也可以运行,但是这种方式降低了和其他第三方资源调度框架的耦合性,独立性很强。但是Flink是大数据计算框架,资源调度并非其强项;所以大多数时候需要让专业的框架做资源调度,比如说Yarn和K8s,这里我们就以Yarn 模式来演示Flink是 阅读全文
posted @ 2022-06-14 15:20 晓枫的春天 阅读(1435) 评论(0) 推荐(0) 编辑
摘要:1、部署模式 flink 支持3种部署模式: 会话模式(Session Mode) 单作业模式(Per-Job Mode) 应用模式(Application Mode) 三种模式区别在于:集群的生命周期&资源的分配方式,以及作业的main方法在客户端(Client)还是JobManager执行 1. 阅读全文
posted @ 2022-06-13 16:32 晓枫的春天 阅读(983) 评论(0) 推荐(0) 编辑
摘要:1、环境说明 系统环境:centos6.8 Java版本:jdk1.8 hadoop版本:hadoop2.7.2 flink版本:flink-1.13.0-bin-scala_2.12.tgz 本次以独立部署模式演示flink提交作业的2种方式 2、环境准备 安装 [hui@hadoop103 so 阅读全文
posted @ 2022-06-12 10:06 晓枫的春天 阅读(1398) 评论(0) 推荐(1) 编辑
摘要:环境说明 这段时间在梳理 flink,今天刚好测试之前的一个应用:在web ui 上提交任务报错了: 如图:这里指定了运行的主程序类名和并行度,然后点击submit 时,出错了 单纯从页面报错信息无法准确定位错误原因,此时可以通过 日志文件查看错误原因‘ [hui@hadoop103 ~]$ cd 阅读全文
posted @ 2022-06-12 07:24 晓枫的春天 阅读(1451) 评论(0) 推荐(1) 编辑
摘要:什么是水位线 在事件时间语义下,我们不依赖系统时间,而是基于数据自带的时间戳去定义了一个时钟,用来表示当前时间的进展。于是每个并行子任务都会有一个自己的逻辑时钟,它的前进是靠数据的时间戳来驱动的。但在分布式系统中,这种驱动方式又会有一些问题。因为数据本身在处理转换的过程中会变化,如果遇到窗口聚合这样 阅读全文
posted @ 2022-04-02 18:14 晓枫的春天 阅读(1302) 评论(5) 推荐(1) 编辑
摘要:在流数据处理应用中,一个很重要很常见的的操作就是窗口计算。这里的窗口指的是划定的一段时间范围,即时间窗,在这个范围内的数据进行数据处理就是我们所说的窗口计算,因此窗口和时间是分不开的。 一、FLink 时间语义 时间从理论和哲学的角度解释有一点玄妙,但对于普通人来说,时间其实是生活中在熟悉不过的一个 阅读全文
posted @ 2022-03-25 17:28 晓枫的春天 阅读(213) 评论(0) 推荐(0) 编辑
摘要:分区概述 分区是大数据处理中一个非常重要的一环。分区是将数据进行重新分布,传输到不同的通道进行下一步数据处理。之前在进行 wordcount 的时候已经使用过有关分区的算子 keyby,keiby 是按照键的哈希值进行的重分区操作。 KeyedStream<Tuple2<String, Long>, 阅读全文
posted @ 2022-03-22 14:52 晓枫的春天 阅读(560) 评论(0) 推荐(0) 编辑
摘要:Transformation 数据源读入数据之后,我们就可以使用各种转换算子,将一个或多个DataStream转换为新的DataStream,如上图所示。一个Flink程序的核心,其实就是所有的转换操作,它们决定了处理的业务逻辑。我们可以针对一条流进行转换处理,也可以进行分流、合流等多流转换操作,从 阅读全文
posted @ 2022-03-22 10:48 晓枫的春天 阅读(534) 评论(0) 推荐(0) 编辑
摘要:Flink Source 简介 Flink 获取执行环境之后,就可以运行FLink 处理数据了,但是在对数据进行处理之前需要将数据读进来,有数据,才能处理数据。Flink 可以通过各种途径获取数据,然后通过API构建 DataStream 对数据进行一列列处理。今天我们总结一下 Flink 读取数据 阅读全文
posted @ 2022-03-21 14:40 晓枫的春天 阅读(694) 评论(0) 推荐(1) 编辑
摘要:flink 上下文一些细节 Flink 程序可以在 本地环境运行,也可以在集群环境下运行,不同的运算环境,提交的运行过程也不太一样,这就需要运行程序的时候需要获取上下文环境,从而建立起与flink框架的联系,只有获取到上下文环境信息才能将任务分配到不同的taskmanager上运行。 StreamE 阅读全文
posted @ 2022-03-19 23:23 晓枫的春天 阅读(2400) 评论(0) 推荐(1) 编辑
摘要:Sink有下沉的意思,在Flink中所谓的Sink其实可以表示为将数据存储起来的意思,也可以将范围扩大,表示将处理完的数据发送到指定的存储系统的输出操作. 之前我们一直在使用的print方法其实就是一种Sink kafkaSink 依赖添加 <dependency> <groupId>org.apa 阅读全文
posted @ 2022-03-07 17:53 晓枫的春天 阅读(152) 评论(0) 推荐(1) 编辑
摘要:滚动聚合算子 常见的滚动聚合算子sum,min,maxminBy,maxBy作用 KeyedStream的每一个支流做聚合。执行完成后,会将聚合的结果合成一个流返回,所以结果都是DataStream参数 如果流中存储的是POJO或者scala的样例类, 参数使用字段名 如果流中存储的是元组, 参数就 阅读全文
posted @ 2022-03-03 12:17 晓枫的春天 阅读(152) 评论(0) 推荐(0) 编辑
摘要:TransForm 简介 转换算子可以把一个或多个DataStream转成一个新的DataStream.程序可以把多个复杂的转换组合成复杂的数据流拓扑。 常用算子 1、map 作用 将数据流中的数据进行转换, 形成新的数据流,消费一个元素并产出一个元素 参数 lambda表达式或MapFunctio 阅读全文
posted @ 2022-03-01 12:40 晓枫的春天 阅读(192) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示