Flink原理与实践
Flink原理与实践
皮皮鲁同学
这个作者很懒,什么都没留下…
展开
-
Flink如何解决端到端Exactly-Once的一致性
故障恢复与一致性保障某条数据投递到某个流处理系统后,该系统对这条数据只处理一次,提供Exactly-Once的保障是一种理想的情况。如果系统不出任何故障,那简直堪称完美。然而现实世界中,系统经常受到各类意外因素的影响而发生故障,比如流量激增、网络抖动、云服务资源分配出现问题等。如果发生了故障,Flink重启作业,读取Checkpoint中的数据,恢复状态,重新执行计算。Flink的State和...原创 2020-02-23 09:59:15 · 1267 阅读 · 0 评论 -
浅谈Flink分布式运行时和数据流图的并行化
本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理。关于Flink WordCount程序可以参考我之前的文章:读取Kafka实时数据流,实现Flink WordCount。阅读完本文后,读者可以对Flink的分布式运行时有一个全面的认识。1 Flink数据流图简介1.1 Flink作业的逻辑视图在大数据领域,词频统计(WordCount)程序就像是一个编...原创 2020-02-17 07:32:59 · 1087 阅读 · 1 评论 -
Flink入门:读取Kafka实时数据流,实现WordCount
本文主要介绍Flink接收一个Kafka文本数据流,进行WordCount词频统计,然后输出到标准输出上。通过本文你可以了解如何编写和运行Flink程序。代码拆解首先要设置Flink的执行环境:// 创建Flink执行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(...原创 2020-02-15 12:11:49 · 1264 阅读 · 1 评论 -
Flink Broadcast State实战案例:电商平台用户行为模式分析
Broadcast State是Flink 1.5引入的功能,本文将跟大家分享Broadcast State的潜在使用场景,并使用电商用户行为分析的例子来演示Broadcast State的使用方法。关于Flink状态的基本原理,Keyed State和Operator State的使用方法,可以参考我之前的文章:Flink状态详解。本文代码已上传到github:https://github.c...原创 2020-02-07 16:32:43 · 818 阅读 · 1 评论 -
ProcessFunction:Flink最底层API使用教程
之前提到的一些算子和函数能够进行一些时间上的操作,但是不能获取算子当前的Processing Time或者是Watermark时间戳,调用起来简单但功能相对受限。如果想获取数据流中Watermark的时间戳,或者在时间上前后穿梭,需要使用ProcessFunction系列函数,它们是Flink体系中最底层的API,提供了对数据流更细粒度的操作权限。Flink SQL是基于这些函数实现的,一些需要高...原创 2020-02-05 16:39:38 · 657 阅读 · 0 评论 -
Flink Checkpoint机制原理剖析与参数配置
在Flink状态管理详解这篇文章中,我们介绍了Flink的状态都是基于本地的,而Flink又是一个部署在多节点的分布式引擎,分布式系统经常出现进程被杀、节点宕机或网络中断等问题,那么本地的状态在遇到故障时如何保证不丢呢?Flink定期保存状态数据到存储上,故障发生后从之前的备份中恢复,整个被称为Checkpoint机制,它为Flink提供了Exactly-Once的投递保障。本文将介绍Flink的...原创 2020-02-01 16:23:14 · 1442 阅读 · 0 评论 -
Flink状态管理:Keyed State和Operator List State深度解析
本文将重点跟大家讲解Flink的状态管理机制,包括状态要解决的问题、Flink几种不同类型的状态、Keyed State和Operator List State的使用方法等。相关代码参见的github:https://github.com/luweizheng/flink-tutorials。图片文字均为原创,转载请联系本专栏。为什么要管理状态有状态的计算是流处理框架要实现的重要功能,因...原创 2020-01-28 10:06:47 · 2220 阅读 · 3 评论 -
Flink时间系列:Event Time下如何处理迟到数据
Event Time语义下我们使用Watermark来判断数据是否迟到。一个迟到元素是指元素到达窗口算子时,该元素本该被分配到某个窗口,但由于延迟,窗口已经触发计算。目前Flink有三种处理迟到数据的方式:直接将迟到数据丢弃将迟到数据发送到另一个流重新执行一次计算,将迟到数据考虑进来,更新计算结果将迟到数据丢弃如果不做其他操作,默认情况下迟到数据会被直接丢弃。将迟到数据发送到另外...原创 2020-01-20 04:47:15 · 650 阅读 · 0 评论 -
Flink进阶教程:如何在两个DataStream上进行Join操作
批处理经常要解决的问题是将两个数据源做关联Join操作。比如,很多手机APP都有一个用户数据源User,同时APP会记录用户的行为,我们称之为Behavior,两个表按照userId来进行Join。在流处理场景下,Flink也支持了Join,只不过Flink是在一个时间窗口上来进行两个表的Join。目前,Flink支持了两种Join:Window Join(窗口连接)和Interval Joi...原创 2020-01-18 15:44:57 · 2645 阅读 · 1 评论 -
Flink窗口全解析:三种时间窗口、窗口处理函数使用及案例
我们经常需要在一个时间窗口维度上对数据进行聚合,窗口是流处理应用中经常需要解决的问题。Flink的窗口算子为我们提供了方便易用的API,我们可以将数据流切分成一个个窗口,对窗口内的数据进行处理。本文将介绍如何在Flink上进行窗口的计算。一个Flink窗口应用的大致骨架结构如下所示:// Keyed Windowstream .keyBy(...) ...原创 2020-01-11 22:44:35 · 4002 阅读 · 1 评论 -
Flink基础教程:时间语义、Event Time和Watermark机制原理与实践
在流处理中,时间是一个非常核心的概念,是整个系统的基石。比如,我们经常会遇到这样的需求:给定一个时间窗口,比如一个小时,统计时间窗口的内数据指标。那如何界定哪些数据将进入这个窗口呢?在窗口的定义之前,首先需要确定一个应用使用什么样的时间语义。本文将介绍Flink的Event Time、Processing Time和Ingestion Time三种时间语义,接着会详细介绍Event Time和W...原创 2020-01-06 11:19:05 · 1486 阅读 · 0 评论 -
深度解析Flink flatMap算子的自定义方法(附代码例子)
之前的四篇文章对Flink常用的算子进行了详细讲解并附上了大量使用案例:Flink单数据流基本转换:map、filter、flatMapFlink基于Key的分组转换:keyBy、reduce和aggregationsFlink多数据流转换:union和connectFlink并行度和数据重分配总结下来不难发现,使用Flink的算子必须进行自定义,自定义时可以使用Lambda表达式,...原创 2019-12-31 16:47:06 · 5233 阅读 · 0 评论 -
Flink进阶教程:数据类型和序列化机制简介
几乎所有的大数据框架都要面临分布式计算、数据传输和持久化问题。数据传输过程前后要进行数据的序列化和反序列化:序列化就是将一个内存对象转换成二进制串,形成网络传输或者持久化的数据流。反序列化将二进制串转换为内存对象,这样就可以直接在编程语言中读写和操作这个对象。一种最简单的序列化方法就是将复杂数据结构转化成JSON格式。序列化和反序列化是很多大数据框架必须考虑的问题,在Java和大数据生态圈中,已有...原创 2019-12-30 11:30:14 · 1458 阅读 · 0 评论 -
Flink零基础教程:并行度和数据重分布
Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数据流基本转换:map、filter、flatMapFlink基...原创 2019-12-27 10:35:50 · 1259 阅读 · 1 评论 -
Flink算子使用方法及实例演示:union和connect
Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数据流基本转换:map、filter、flatMapFlink基于Key的分组...原创 2019-12-25 23:10:23 · 2199 阅读 · 0 评论 -
Flink算子使用方法及实例演示:keyBy、reduce和aggregations
Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。本文主要介绍基于Key的分组转换,关于时间和窗口将在后续文章中介绍。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数...原创 2019-12-23 18:54:35 · 2635 阅读 · 0 评论 -
Flink零基础学习教程:map、filter和flatMap算子实例详解
本文将对Flink Transformation中各算子进行详细介绍,并使用大量例子展示具体使用方法。Transformation各算子可以对Flink数据流进行处理和转化,是Flink流处理非常核心的API。如之前文章所述,多个Transformation算子共同组成一个数据流图。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDnkbPZD-157655402...原创 2019-12-17 11:41:37 · 3471 阅读 · 0 评论 -
Flink零基础实战教程:股票价格数据流实时处理
之前的文章《10行Flink WordCount程序背后的万字深度解析,读懂Flink原理和架构》使用WordCount展示了Flink程序的基本结构,本文将以股票价格来演示如何使用Flink的DataStream API。通过本文,你可以学到:定义相关数据结构。Flink流处理程序的骨架。Flink的执行环境概念。自定义Source、设置时间戳和Watermark。数据结构Fli...原创 2019-12-12 10:33:10 · 2575 阅读 · 1 评论 -
批处理衰落,流处理兴起,大数据处理平台从Lambda到Kappa的演进
流处理引擎经历了从Storm到Spark Streaming再到Flink的三代的技术迭代,大数据处理也随之经历了从Lambda架构到Kappa架构的演进。本节以电商平台的数据分析为例,来解释大数据处理平台如何支持企业在线服务。电商平台会将用户在APP或网页的搜索、点击和购买行为以日志的形式记录下来,用户的各类行为形成了一个实时数据流,我们称之为用户行为日志。Lambda架构当以Storm为...原创 2019-12-04 11:28:14 · 746 阅读 · 0 评论 -
从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史!
当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题。本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后介绍一些流行的大数据技术和组件,读者能够通过本文了解大数据的概念、处理方法和流行技术。什么是大数据?大数据,顾名思义,就是拥有庞大体量的数据。关于什么是大数据,如何定义大数据,如何使用大数据等一...原创 2019-11-29 14:07:13 · 1783 阅读 · 0 评论 -
Flink Scala Shell:使用交互式编程环境学习和调试Flink
交互式编程环境:REPL当前最著名的交互式编程环境莫属Jupyter Notebook了,程序员可以启动一个交互的Session,在这Session中编写代码、执行程序、获取结果,所见即所得。交互式编程的优势包括:快速启动一个程序:程序员不需要“编译、打包、执行”这一套复杂过程,只需要开启一个交互Session,敲下代码,直接得到结果,非常适合验证一段代码的结果。直接获得程序反馈:使用p...原创 2019-11-22 09:44:16 · 648 阅读 · 0 评论 -
深入浅出:10行Flink WordCount程序背后的万字深度解析,读懂Flink原理和架构
要想熟练掌握一个大数据框架,仅仅是学习一些网络上的样例程序是远远不够的,我们必须系统地了解它背后的设计和运行原理。本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理。关于Flink WordCount程序可以参考我之前的文章:十分钟搭建第一个Flink程序。原创不易,转载请注明出处。对大数据和机器学习感兴趣的朋友可以加我的微信 aistevelu,相互交流学习。本文内容...原创 2019-11-15 18:17:39 · 1848 阅读 · 0 评论
分享