flink优化总结】的更多相关文章

一.高性能Flink SQL优化技巧 1.Group Aggregate优化技巧 开启MicroBatch或MiniBatch(提升吞吐) MicroBatch和MiniBatch都是微批处理,只是微批的触发机制略有不同.原理同样是缓存一定的数据后再触发处理,以减少对State的访问,从而提升吞吐并减少数据的输出量. MiniBatch主要依靠在每个Task上注册的Timer线程来触发微批,需要消耗一定的线程调度性能.MicroBatch是MiniBatch的升级版,主要基于事件消息来触发微批,…
如何提高 Flink 任务性能 一.Operator Chain 为了更高效地分布式执行,Flink 会尽可能地将 operator 的 subtask 链接(chain)在一起形成 task,每个 task 在一个线程中执行.将 operators 链接成 task 是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量. Flink 会在生成 JobGraph 阶段,将代码中可以优化的算子优化成一个算子链(Operato…
Flink基本概念 1.The history of Flink? 2.What is Flink? Apache Flink是一个开源的分布式.高性能.高可用.准确的流处理框架,主要由Java代码实现,支持实时流(stream)处理和批(batch)处理,批数据只是流数据的一个极限的特例.原生支持了迭代管理.内存计算和程序优化. 3.The Feature of Flink? 流式优先(streaming-first:连续处理),容错(fault-tolerant:有状态的计算),可伸缩(sc…
流处理程序生成流图 DataStream API所编写的流处理应用程序在生成作业图(JobGraph)并提交给JobManager之前,会预先生成流图(StreamGraph). 什么是流图 流图(StreamGraph)是表示流处理程序拓扑的数据结构.它封装了生成作业图(JobGraph)的必要信息.它的类继承关系例如以下图所看到的: 当你基于StreamGraph的继承链向上追溯,会发现它实现了FlinkPlan接口. Flink效仿了传统的关系型数据库在运行SQL时生成运行计划并对其进行优…
flink 使用Transitive Closure算法实现可达路径查找. 1.Transitive Closure是翻译闭包传递?我觉得直译不准确,意译应该是传递特性直至特性关闭,也符合本例中传递路径,寻找路径可达,直到可达路径不存在(即关闭). 2.代码很简单,里面有些概念直指核心原理,详细看注释. /** * @Author: xu.dm * @Date: 2019/7/3 11:41 * @Version: 1.0 * @Description: 传递闭包算法,本例中就是根据成对路径,查…
本文是参考官方文档结合自己的理解写的,所引用文献均已指明来源,若侵权请留言告知,我会立马删除.此外,若是表达欠妥的地方,欢迎大伙留言指出. 前言 在上一篇博客Flink原理(二) ——资源一文中已简要说了在Flink集群中资源的分配情况,这篇博客尝试从定义算子之后,任务是如何分配的,以及任务是如何使用资源的. 一.Task和Operator Chains Flink会在生成JobGraph阶段,将代码中可以优化的算子优化成一个算子链(Operator Chains)以放到一个task(一个线程)…
一.Flink 简介 Apache Flink 诞生于柏林工业大学的一个研究性项目,原名 StratoSphere .2014 年,由 StratoSphere 项目孵化出 Flink,并于同年捐赠 Apache,之后成为 Apache 的顶级项目.2019 年 1 年,阿里巴巴收购了 Flink 的母公司 Data Artisans,并宣布开源内部的 Blink,Blink 是阿里巴巴基于 Flink 优化后的版本,增加了大量的新功能,并在性能和稳定性上进行了各种优化,经历过阿里内部多种复杂业…
[源码解析]为什么mapPartition比map更高效 目录 [源码解析]为什么mapPartition比map更高效 0x00 摘要 0x01 map vs mapPartition 1.1 map 1.2 mapPartition 1.3 异同 0x02 代码 0x03 Flink的传输机制 3.1 传输机制概述 3.2 远程通信 3.3 TaskManager进程内传输 3.4 源码分析 0x04 runtime 4.1 Driver 4.2 MapDriver 4.3 MapParti…
1. 前言 Flink使用Calcite构造SQL引擎,那么他们 是怎么合作的? drill, hive,storm 和其他的一干apache 大数据引擎也用calcite , 那么对于同一个sql 语句(statement) , 无论复杂简单与否,他们和Flink产生的执行计划是不是一样的? 如果不一样, 区别是怎么产生的? 应该在哪里实施优化和发力?优化的手段和原则有那些,等等?   本文不会对calcite 面面做具到的介绍,重点是SQL执行计划的优化框架,流程和策略, 对执行计划进行优化…
介绍 大概4月,Flink1.13就发布了,参加 了Flink1.13 的Meetup,收获还是挺多,从大的方面讲就是FlingSql的改进和优化,资源调度管理方面的优化,以及流批一体Flink在运行时与DataStream API的优化,另外就是State backend 模块的优化,本篇文章既是当时做的笔记,又是在后续查阅官网等做的补充, Flink 的一个主要目标取得了重要进展,即让流处理应用的使用像普通应用一样简单和自然.Flink 1.13 新引入的被动扩缩容使得流作业的扩缩容和其它应…