Flink
文章平均质量分 87
hxcaifly
这个作者很懒,什么都没留下…
展开
-
【Flink原理介绍第一篇】:Flink WaterMark机制
如果您正在构建实时流媒体应用程序,则事件时间处理是您必须迟早使用的功能之一。由于在大多数现实世界的用例中,消息到达无序,应该有一些方法,您建立的系统了解消息可能迟到并且相应地处理的事实。在这篇博文中,我们将看到为什么我们需要事件时间处理,以及我们如何在ApacheFlink中启用它。EventTime是事件在现实世界中发生的时间,ProcessingTime是Flink系统处理该事件的时间。要了...原创 2018-10-11 12:18:00 · 4284 阅读 · 1 评论 -
【Flink原理和应用】:Flink的累加器(Accumulator)应用
1. 累加器的简单介绍累加器是从用户函数和操作中,分布式地统计或者聚合信息。每个并行实例创建并更新自己的Accumulator对象, 然后合并收集器的不同并行实例。在作业结束时由系统合并。累加器的结果可以从作业执行的结果中获得,也可以从Web运行时监视器中获得。累加器是受Hadoop/MapReduce计数器的启发。但是要注意添加到收集器的类型可能与返回的类型不同。比如:我们添加单个对象,但...原创 2019-01-17 20:29:44 · 3951 阅读 · 0 评论 -
【Flink原理和应用】:yarn简介
文章目录1. 简介2. Apache Hadoop 简介3. Hadoop 的黄金时代4. 经典 MapReduce 的局限性4. 解决可伸缩性问题5. YARN:下一代 Hadoop 计算平台6. 一个可运行任何分布式应用程序的集群7.YARN 中的应用程序提交8. 有趣的事实和特性9.结束语参考原文:https://www.ibm.com/developerworks/cn/data/li...转载 2019-01-23 23:47:09 · 379 阅读 · 0 评论 -
【Flink图计算源码解析】开篇:Flink图计算总览
文章目录1. 图计算的作用2. 本专题的写作目的3. Flink Gelly引擎总览3.1. Gelly的源码结构1. Graph的存储数据结构2. 图的分类3. 图的验证以及指标4. 图的生成器5. Library6.图的迭代操作7. examples案例4. 后记1. 图计算的作用哲学上说事物之间普遍存在联系的,通常来说可以将事物看作图的顶点,事物间的联系看作图的边,典型的场景:对应于...原创 2019-01-09 13:41:41 · 6467 阅读 · 2 评论 -
【Flink原理和应用】:Flink上部署K-Means机器学习模型
本案例的难点在于迭代计算的应用。机器学习算法的本质就是一个迭代计算,然后在迭代中减少损失函数的不断优化过程。掌握Flink的迭代计算,将为我们设计出更多复杂有效的机器学习模型打下基础。原创 2019-01-16 06:00:27 · 4924 阅读 · 11 评论 -
Flink提交任务(总篇)——执行逻辑整体分析
Flink客户端提交任务执行的逻辑分析针对Flink1.7-release版本前言Flink的源码体系比较庞大,一头扎进去,很容易一头雾水,不知道从哪部分代码看起。但是如果结合我们的业务开发,有针对性地去跟进源码去发现问题,理解源码里的执行细节,效果会更好。笔者在近期的Flink开发过程中,因为产品的原因,只允许部署Flink standalone模式,出于性能考虑,很有必要对其性能做下测...原创 2019-02-21 16:52:33 · 10303 阅读 · 2 评论 -
【Flink原理和应用】:分布式快照算法—— Chandy-Lamport 算法
引言Spark 的 Structured Streaming 的 Continuous Processing Mode 的容错处理使用了分布式快照(Distributed Snapshot)算法 Chandy-Lamport 算法,那么分布式快照算法可以用来解决什么问题呢?A snapshot algorithm is used to create a consistent snapshot...转载 2019-02-22 09:40:00 · 3087 阅读 · 0 评论 -
Flink提交任务(第一篇)——打包任务程序
文章目录1. 引言2. buildProgram的执行逻辑2.1. 如果没有指定入口类名称,那么就从jar包里找出来2.2. 提取任务jar文件中所有依赖的JAR包2.3. 通过入口类名称来真正加载执行入口类针对flink-1.7-release1. 引言Flink客户端通过命令行的形式提交任务时,即执行./flink run xxxx.jar时,真正执行的run逻辑如下:protecte...原创 2019-02-22 10:41:53 · 9993 阅读 · 3 评论 -
【Flink原理和应用】:Zookeeper集群环境的搭建
1. 引言Flink实现高可用部署的方式有多种,其中Standalone模式是实现高可用的一种。对于Standalone模式,主要是要实现JobManager的高可用部署。集群环境中JobManager的各个节点,需要借用zookeeper这个服务注册和服务发现组件来对其管理。出于高可用性部署的考虑,所以zookeeper本身也要实现高可用性。所以本文先介绍下zookeeper的高可用部署。...原创 2019-02-23 13:31:36 · 2195 阅读 · 1 评论 -
【Flink SQL引擎】:Calcite 功能简析及在 Flink 的应用
1. Calcite 是什么?Apache Calcite 是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块不包含数据存储、数据处理等功能可以通过编写 Adaptor 来扩展功能,以支持不同的数据处理平台Flink SQL 使用并对其扩展以支持 SQL 语句的解析和验证2. Calcite 谁在用?下图是一张官方提供的生态系统图,可以看到大名鼎鼎的 H...转载 2019-02-28 10:39:19 · 4866 阅读 · 0 评论 -
【Flink原理和应用】: Flink Standalone模式的高可用性搭建
1. 前言Flink的standalone模式的高可用部署,需要依赖于ZooKeeper和Hadoop的hdfs。本次集群部署选用的三台服务器ip为:10.35.108.8110.35.108.8210.35.108.83前期准备工作:ZooKeeper的部署工作完成:三台服务器集群,其中81是leader节点。82和83是follower节点。HDFS安装完成:83节点开启的N...原创 2019-02-24 13:39:15 · 1515 阅读 · 1 评论 -
【Flink原理和应用】:Flink内部通信组件Netty和Akka的区别
1. 引言Flink内部节点之间的通信是用Akka,比如JobManager和TaskManager之间的通信。而operator之间的数据传输是利用Netty。Spark用Netty通信框架代替Akka,是不是Akka不好?其实他们各有优缺点。2. 简单比较Akka:它是基于协程的,性能不容置疑;基于scala的偏函数,易用性也没有话说,但是它毕竟只是RPC通信。Netty:相比更加基...原创 2019-03-09 13:59:06 · 6712 阅读 · 0 评论 -
【Flink原理和应用】:Calcite应用指南
文章目录1.引言2. 教程3. 下载和编译4. 首次查询5. Schema发现6. schemas中的表和视图7. 自定义表8. models里的注释9. 使用计划器规则优化查询10. 查询优化过程11. JDBC适配器12. JDBC适配器的克隆翻译原文:http://calcite.apache.org/docs/tutorial.html1.引言Calcite作为一个强大的SQL...翻译 2019-03-19 16:53:02 · 1537 阅读 · 0 评论 -
【Flink原理和应用】:Flink 端到端(end-to-end)Exactly-Once特性
原文链接:https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html1. Flink程序的Exactly-Once语义当我们在讨论Exactly-Once语义的时候,我们指的是每一个到来的事件仅会影响最终结果一次。就算机器宕机或者软件崩溃,即没有数据重复,也没有数据丢失。F...翻译 2019-03-08 10:27:53 · 1477 阅读 · 0 评论 -
【Flink原理和应用】:Flink的调度模式
原文:http://www.liaojiayi.com/Flink-Schedule-Mode/Apache Flink内部提供了两种调度模式,分别为:/** Schedule tasks lazy from the sources. Downstream tasks start once their input data are ready */LAZY_FROM_SOURCES,...转载 2019-03-21 12:04:05 · 2014 阅读 · 0 评论 -
【Flink原理和应用】:记一次Flink源码编译的过程
1. 克隆Flink源码首先,把Flink源码克隆到本地:git clone https://github.com/apache/flink.git2. 直接进行打包编译执行:mvn clean package -DskipTests报错了,错误日志: Failed to execute goal org.apache.maven.plugins:maven-checkstyle...原创 2019-01-12 10:30:32 · 5446 阅读 · 6 评论 -
【Spark系列】:多方面综合对比Spark Streaming和Flink
前言本文从编程模型、任务调度、时间机制、Kafka 动态分区的感知、容错及处理语义、背压等几个方面对比 Spark Stream 与 Flink,希望对有实时处理需求业务的企业端用户在框架选型有所启发。1. 基本概念对比1.1. 运行角色Spark Streaming 运行时的角色(standalone 模式)主要有:Master:主要负责整体集群资源的管理和应用程序调度;Work...原创 2019-01-06 11:37:29 · 1642 阅读 · 1 评论 -
[Flink原理介绍第二篇】:Flink状态管理和容错机制介绍
本文来自8月11日在北京举行的 Flink Meetup会议,分享来自于施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发。本文主要内容如下:有状态的流数据处理;Flink中的状态接口;状态管理和容错机制实现;一.有状态的流数据处理1.1.什么是有状态的计算计算任务的结果不仅仅依赖于输入,还依赖于它的当前状态,其实大多数的计...转载 2018-11-14 11:13:31 · 437 阅读 · 0 评论 -
【Flink原理介绍第三篇】:Flink的Time Extractor和Watermark Emitter
前言Flink提供了抽象类来让开发者赋值自己的时间戳并发送他们自己的Watermark。更具体来说,开发者需要依照不同用例情况来实现接口AssignerWithPeriodicWatermarks或接口AssignerWithPunctuatedWatermarks。简而言之,前一个接口将会周期性发送Watermark,而第二个接口根据一些到达数据的属性,例如一旦在流中碰到一个特殊的elemen...原创 2018-11-16 18:00:39 · 410 阅读 · 0 评论 -
【Flink源码分析】:flink-annotations源码分析
flink-annotations模块定义了一些flink项目中需要用到的注解。Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。该模块主要包括的注解类型有:flink annotations下包含了doc相关的三种注解:ConfigGroup,ConfigGroups和Documentation。然后还有其他5种注解:Experiment...原创 2018-11-26 23:14:17 · 2908 阅读 · 0 评论 -
[Flink相关知识介绍第一篇】:Storm的一些基本概念
前言最近在阅读Flink官网的时候,阅读到Storm Compatibility Beta章节,就是Flink可以无缝兼容Storm。在Flink执行一个完整的Storm拓扑;在Flink流程序中使用Storm的Spout/Bolt作为数据源/操作器。对于Storm的一些基本概念不懂的同学,还是有必要先熟悉了解下Storm的基本概念。Storm基本元素storm分布式计算结构称为t...原创 2018-11-30 12:07:12 · 1701 阅读 · 2 评论 -
[Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
第一部分:Flink的Checkpoint1. Flink Checkpoint原理介绍Checkpoint是Flink实现容错机制最核心的功能,它能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot,从而将这些状态数据定期持久化存储下来,当Flink程序一旦意外崩溃时,重新运行程序时可以有选择地从这些Snapshot进行恢复,从而修正因为故障带来的程序数据状...原创 2018-12-01 14:08:57 · 9411 阅读 · 1 评论 -
【Flink源码分析】:Flink的内存管理
前言Flink的内存管理器管理着用于排序、散列和缓存所需的内存。内存以相等大小的(Segments)表示,称为内存页。操作器通过请求多个内存段来分配内存。在Flink中,内存又分为堆内存和非堆内存。至于是去申请什么类型的内存,这里有相关的参数去配置。内存管理器可以预先分配所有内存,或者按需分配内存。在前者中,内存将从开始就被占用和保留,这意味着在请求内存时不能出现OutOfMemoryErro...原创 2018-12-08 11:06:18 · 1438 阅读 · 2 评论 -
【Flink 原理与实现】:架构和拓扑概览
架构要了解一个系统,一般都是从架构开始。我们关心的问题是:系统部署成功后各个节点都启动了哪些服务,各个服务之间又是怎么交互和协调的。下方是 Flink 集群启动后架构图。当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执...转载 2018-12-12 16:38:25 · 224 阅读 · 0 评论 -
【Flink原理和应用】:Flink的并发执行(Parallel Execution)
1. Flink的并发执行本章描述如何在Flink中配置程序的并发执行,一个Flink程序可以由不同的task(如:transformations/opterators,data sources及data sinks等)组成,一个task会分发到多个并发实例中运行,并且每个并发实例处理task的部分输入数据集。一个task的并发实例数叫做parallelism。在这之前有必要先了解下slot和p...原创 2018-12-13 15:42:00 · 5403 阅读 · 0 评论 -
【Flink原理和应用】:Akka和Actors
原文:https://cwiki.apache.org/confluence/display/FLINK/Akka+and+Actors#space-menu-link-content前言本文重点讨论Flink通过Akka实现分布式通信,Akka在Flink 0.9版本中已经开始采用。使用Akka,所有远程过程调用过程都实现为异步消息。这主要影响组件JobManager、TaskManag...翻译 2018-12-14 10:35:01 · 2393 阅读 · 0 评论 -
【Flink原理和应用】:Flink高效的内存管理
1. 前言如今,大数据领域的开源框架(Hadoop,Spark,Storm)都使用的 JVM,当然也包括 Flink。基于 JVM 的数据分析引擎都需要面对将大量数据存到内存中,这就不得不面对 JVM 存在的几个问题:Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit...转载 2018-12-22 15:56:55 · 784 阅读 · 4 评论 -
【Flink原理和应用】:Flink对比Spark以及流计算发展趋势分析
前言丑话说在前面,笔者无意于撩拨 Flink 和 Spark 两个群体的矛盾,社区间取长补短也好,互相抄袭也好,都不是个事,关键在于用户群体的收益。在各种会上,经常会被问到 Spark 和 Flink 的区别,如何取舍?下面从数据模型、运行时架构、调度、时延和吞吐、反压、状态存储、SQL 扩展性、生态、适用场景等方面来逐一分析。1. 数据模型Spark 的数据模型Spark 最早采用 ...转载 2018-12-17 19:50:00 · 2229 阅读 · 1 评论 -
【Flink原理和应用】:Flink的Yarn模式安装部署
一. 快速启动在YARN上启动一个长时间运行的Flink集群启动一个带有4个TaskManager的YARN会话(每一个TaskManager分配4GB的堆内存):# 从Flink下载页下载hadoop2下载包。# 下载地址为:http://flink.apache.org/downloads.htmlcurl -O <flink_hadoop2_download_url>...原创 2018-12-12 11:46:17 · 2466 阅读 · 0 评论 -
【Flink图计算源码解析】:Flink图的存储数据结构
承接上篇:https://blog.csdn.net/hxcaifly/article/details/861477361.图的基本组成图由边和顶点构成:Edge: 边。每条边是Tuple3<K,K,V>的数据结构,保存了边的开始顶点Id,边的目的顶点Id和边的值。Vertex: 顶点。每个顶点是Tuple2&原创 2019-01-10 22:41:17 · 2295 阅读 · 3 评论 -
【Flink原理和应用】:Blink做了哪些改进
1. Runtime引入了可插拔的Shuffle策略。自定义调度器,开发者根据计算模型自身的特点定制不同调度器。Blink可以更加灵活地将算子chain在一起,避免不必要的数据传输。引入全新的JM FailOver机制,JM 发生错误之后,新的 JM 会重新接管整个 JOB 而不是重启 JOB,从而大大减少了 JM FailOver 对 JOB 的影响。2. SQL/TableAPI...原创 2019-04-01 17:34:50 · 2095 阅读 · 0 评论