自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

VinoYang的专栏

工作总结 & 技术框架/源码解读

原创 Flink即将在1.7版本发布全新的Kafka连接器

最近我们向Flink社区贡献了一个全新的Kafka连接器(https://github.com/apache/flink/pull/6703),关联JIRA issue FLINK-9697。它包含了近6000行代码变更,经历了社区近100次的review讨论与评论。这一大特性即将会随Flink ...

2018-10-20 09:50:18

阅读数 9492

评论数 0

原创 Flink扩展 Table/SQL Scalar 函数的实现

overview 本文档以TO_BASE64函数为例,介绍如何实现、扩展Flink Table&SQL Scalar function。 使用方式 自定义的Scalar函数有多种使用方式,我们以测试代码来了解一下,具体是如何使用的: @Test def te...

2018-08-12 13:48:39

阅读数 1414

评论数 0

原创 Why EdgeX 弃 Java 转 Go

历史背景 这里给不了解历史的同学先介绍一下背景。EdgeX的前身是Dell的Fuse项目(它是一个开源的物联网平台,包含超过12个微服务以及125000行净代码量),后由Dell将源码捐赠给Linux基金会并发起了EdgeXFoundry。 说得更直白一点,Fuse(也即EdgeX早期)主要是...

2018-05-05 13:59:57

阅读数 2093

评论数 0

原创 Flink 1.5版本的“Task本地恢复”实现摘要

overview 解读Flink 1.5版本的“task本地恢复”feature的实现。 随着时间的推移,Flink有些模块的代码复杂度已经很高了(比较典型的就是状态&容错这块)。因为考虑到兼容历史实现的问题,类在快速增长。 实现 关于本地恢复的配置,封装在名为...

2018-03-07 19:15:12

阅读数 1315

评论数 0

原创 Flink 1.5版本网络栈重构技术分析

overview 基于Flink近期的官方声明,明年的1.5版本将会发布三个较大feature,其中之一就是对于网络栈的重构。具体而言,就是将基于配置的、固定间隔的网络I/O改进为基于事件驱动的I/O。这种改进预期将会带来如下这些优势: 提供应用程序级别的流控,以更好地处理反压(backpr...

2018-02-11 10:33:36

阅读数 1569

评论数 1

原创 Uber Athenax项目核心技术点剖析

本文剖析一下Uber Athenax项目的核心技术点。AthenaX是一个流式分析平台,它可以让用户运行SQL来进行大规模可扩展的流式分析。由Uber开源,具备扩展到上百台节点处理日均千亿级别的实时事件。

2017-11-19 12:00:33

阅读数 4465

评论数 2

翻译 Foundations of streaming SQL

streaming & table

2017-11-05 19:03:12

阅读数 1144

评论数 0

原创 Flink关系型API的公共部分

关系型程序的公共部分下面的代码段展示了Table&SQL API所编写流式程序的程序模式

2017-07-13 22:31:35

阅读数 2770

评论数 0

原创 Flink关系型API简介

在接触关系型API之前,用户通常会采用DataStream、DataSet API来编写Flink程序,它们都提供了丰富的处理能力,以DataStream为例,它有如下这些优点:

2017-07-06 22:52:34

阅读数 2889

评论数 1

原创 Flink批处理中的增量迭代

对某些迭代而言并不是单次迭代产生的下一次工作集中的每个元素都需要重新参与下一轮迭代,有时只需要重新计算部分数据同时选择性地更新解集,这种形式的迭代就是增量迭代。

2017-06-13 23:38:46

阅读数 4900

评论数 2

原创 Flink-Table-SQL系列之source

source作为Table&SQL API的数据源,同时也是程序的入口。当前Flink的Table&SQL API整体而言支持三种source:Table source、DataSet以及DataStream,它们都通过特定的API注册到Table环境对象。

2017-06-12 22:56:32

阅读数 7324

评论数 3

原创 谈谈EventTime以及Watermark

EventTime,ProcessingTime,Watermark,out-of-order..

2017-06-09 09:58:07

阅读数 5780

评论数 3

原创 Flink批处理优化器之数据属性

在一段时间之前我们已介绍过IP(Interesting Property)对于优化器的意义以及它将对优化器的优化决策产生的影响。本篇我们将介绍Flink的批处理优化器中涉及到的所有的IP,我们将其统称为数据属性。后续我们会介绍Flink如何为优化器节点计算IP,并在之后的“剪枝”(pruning)...

2017-04-09 22:17:06

阅读数 1852

评论数 0

原创 Flink批处理优化器之范围分区重写采用算法

采样算法上一篇我们分析了RangePartitionRewriter的数据处理分支,接下来我们开始分析采样分支,采样分支的核心在于采样算法。因为范围分区输入端每个分区的数据量无从得知,也就是说我们无法得出采样比例。

2017-04-07 18:42:47

阅读数 2652

评论数 2

原创 Flink批处理优化器之范围分区重写

为最终计划应用范围分区重写Flink的批处理程序允许用户使用partitionByRange API来基于某个(或某些)字段进行按范围分区且可以选择性地指定排序顺序,示例代码如下:

2017-04-05 21:27:47

阅读数 3743

评论数 1

原创 Flink运行时之客户端提交作业图-下

submitJob方法分析JobClientActor通过向JobManager的Actor发送SubmitJob消息来提交Job,JobManager接收到消息对象之后,构建一个JobInfo对象以封装Job的基本信息

2017-04-02 20:08:27

阅读数 6125

评论数 0

原创 Flink运行时之客户端提交作业图-上

客户端提交作业图作业图(JobGraph)是Flink的运行时所能理解的作业表示,无论程序通过是DataStream还是DataSet API编写的,它们的JobGraph提交给JobManager以及之后的处理都将得到统一。本篇我们将分析客户端如何提交JobGraph给JobManager。

2017-03-31 21:13:57

阅读数 5242

评论数 2

原创 Flink批处理优化器之成本估算

成本估算在基于成本的优化器中,成本估算非常重要,它直接影响着候选计划的生成。在Flink中成本估算依赖于每个不同的运算符所提供的自己的“预算”,本篇我们将分析什么是成本、运算符如何提供自己的预算以及如何基于预算估算成本。

2017-03-28 22:56:34

阅读数 4982

评论数 0

原创 Flink-CEP之模式流与运算符

之前我们分析了CEP的API,接下来我们将分析CEP API的内部实现包括模式流与运算符。模式流模式流(PatternStream)是CEP模式匹配的流抽象,一个PatternStream对象表示模式检测到的序列所对应的流。该序列以映射来表示,以模式名关联一组事件对象。

2017-03-16 23:17:45

阅读数 4772

评论数 0

原创 Flink-CEP之NFA编译器

NFAbNFA ^ b编译器的作用是将模式对象编译成NFA或者NFAFactory(用来创建多种NFA对象)。这个编译的过程,需要对模式进行拆分从而构建状态以及根据条件构建状态转换信息,最终根据构建好的状态集合来创建NFA。示意图如下:

2017-03-11 22:14:15

阅读数 1492

评论数 0

原创 Flink-CEP之NFA

NFAbNFA ^ b模型包含两个阶段:第一个阶段是模式匹配阶段,在这个阶段它将会向最终态过渡并随着事件被选择而扩展缓冲区;第二个阶段是匹配提取阶段,该阶段发生在超时或者到达最终态时,将会从缓冲区中检索所产生的匹配。

2017-03-09 23:25:28

阅读数 2761

评论数 0

原创 Flink-CEP之带版本的共享缓冲区

带版本的共享缓冲区当股票模式以一个事件流作为输入时,状态转换将会作用于事件流从而引起事件的状态变化。结合窗口对参与匹配的事件的限制以及模式中结合事件上下文(状态)的过滤条件,同一事件流随着时间的流动或者多次运行都会产生多种不同的匹配结果。

2017-03-05 23:30:39

阅读数 2645

评论数 1

原创 Flink-CEP论文与源码解读之状态与状态转换

Flink CEP的论文与设计Flink的CEP设计与实现重度参考了论文《Efficient Pattern Matching over Event Streams》。下面我们就来结合论文谈谈Flink CEP的设计。

2017-03-03 22:12:39

阅读数 3807

评论数 0

原创 Flink之CEP案例分析-网络攻击检测

上一篇我们介绍了Flink CEP的API,这一篇我们将以结合一个案例来练习使用CEP的API编写应用程序,以强化对API的理解。所选取的案例是对网络遭受的潜在攻击进行检测并给出告警。当下互联网安全形势仍然严峻,网络攻击屡见不鲜且花样众多,这里我们以DDOS(分布式拒绝服务攻击)产生的流入流量来作...

2017-03-01 22:13:32

阅读数 7643

评论数 5

原创 Flink之CEP-API简介

CEP API的核心是Pattern API,它允许你快速定义复杂的事件模式。每个模式包含多个阶段(stage)或者我们也可称为状态(state)。为了从一个状态切换到另一个状态,用户可以指定条件,这些条件可以作用在邻近的事件或独立事件上。

2017-02-28 23:23:38

阅读数 7347

评论数 0

原创 Flink运行时之生成作业图

生成作业图在分析完了流处理程序生成的流图(StreamGraph)以及批处理程序生成的优化后的计划(OptimizedPlan)之后,下一步就是生成它们面向Flink运行时执行引擎的共同抽象——作业图(JobGraph)。

2017-02-21 22:22:11

阅读数 4621

评论数 0

原创 Flink运行时之批处理程序生成计划

批处理程序生成计划DataSet API所编写的批处理程序跟DataStream API所编写的流处理程序在生成作业图(JobGraph)之前的实现差别很大。流处理程序是生成流图(StreamGraph),而批处理程序是生成计划(Plan)并由优化器对其进行优化并生成优化后的计划(Optimize...

2017-02-15 22:11:08

阅读数 2399

评论数 5

原创 Flink批处理优化器之Interesting Properties

Interesting Properties(以下简称IP)用来表述在对生成的计划进行分析时一些可能对优化产生重要影响的属性。

2017-02-13 21:36:28

阅读数 1005

评论数 0

原创 Flink运行时之流处理程序生成流图

DataStream API所编写的流处理应用程序在生成作业图(JobGraph)并提交给JobManager之前,会预先生成流图(StreamGraph)。

2017-02-05 22:11:01

阅读数 4929

评论数 2

原创 Flink运行时之合久必分的特定任务

合久必分的特定任务前面我们谈到了TaskManager对每个Task实例会启动一个独立的线程来执行。在分析线程执行的核心代码时,我们看到最终执行的是AbstractInvokable这样执行体的invoke方法。所谓合久必分,鉴于流处理任务跟批处理任务执行模式上存在巨大的差异,在对Abstract...

2017-01-26 22:42:08

阅读数 1627

评论数 3

原创 Flink运行时之TaskManager执行Task

TaskManager执行任务当一个任务被JobManager部署到TaskManager之后,它将会被执行。本篇我们将分析任务的执行细节。

2017-01-24 23:07:14

阅读数 6058

评论数 3

原创 Flink运行时之基于Netty的网络通信(下)

这一篇,我们分析一下客户端协议栈中的核心的处理器PartitionRequestClientHandler,该处理器用于处理服务端的响应消息。

2017-01-15 20:28:00

阅读数 2899

评论数 0

原创 Flink运行时之基于Netty的网络通信中

PartitionRequestClient分区请求客户端(PartitionRequestClient)用于发起远程PartitionRequest请求,它也是RemoteChannel跟Netty通信层之间进行衔接的对象。对单一的TaskManager而言只存在一个NettyClient实例。

2017-01-12 22:34:32

阅读数 2939

评论数 0

原创 Flink运行时之基于Netty的网络通信上

概述本文以及接下来的几篇文章将介绍Flink运行时TaskManager间进行数据交换的核心部分——基于Netty通信框架远程请求ResultSubpartition。作为系列文章的第一篇,先列出一些需要了解的基础对象。

2017-01-08 15:03:28

阅读数 4539

评论数 1

原创 Flink运行时之结果分区消费端

结果分区消费端在前一篇,我们讲解了生产者分区,生产者分区是生产者任务生产中间结果数据的过程。消费者任务在获得结果分区可用的通知之后,会发起对数据的请求。

2017-01-05 09:09:26

阅读数 2585

评论数 0

原创 Flink运行时之生产端结果分区

生产端结果分区生产者结果分区是生产端任务所产生的结果。以一个简单的MapReduce程序为例,从静态的角度来看,生产端的算子(Map)跟消费端的算子(Reduce),两者之间交换数据通过中间结果集(IntermediateResult)。

2016-12-30 22:05:43

阅读数 5298

评论数 3

原创 Flink运行时之通信层API

上图中红框部分即为通信层API。 通信层API通信层API介于任务执行与通信细节之间,主要用于对上层任务执行提供记录的读写服务同时屏蔽底层的通信细节。主要包括三个部件:将记录写入结果分区的写入器、将数据从输入网关中读出并反序列化为记录的读取器以及周旋在记录和二进制的Buffer数据之间对数据表示进...

2016-12-28 22:30:07

阅读数 5436

评论数 0

原创 Flink运行时之统一的数据交换对象

统一的数据交换对象在Flink的执行引擎中,流动的元素主要有两种:缓冲(Buffer)和事件(Event)。Buffer主要针对用户数据交换,而Event则用于一些特殊的控制标识。但在实现时,为了在通信层统一数据交换,Flink提供了数据交换对象——BufferOrEvent。它是一个既可以表示B...

2016-12-20 22:40:06

阅读数 6250

评论数 0

原创 Flink运行时之网络通信NetworkEnvironment分析

网络环境(NetworkEnvironment)是TaskManager进行网络通信的主对象,主要用于跟踪中间结果并负责所有的数据交换。每个TaskManager的实例都包含一个网络环境对象,在TaskManager启动时创建。NetworkEnvironment管理着多个协助通信的关键部件。

2016-12-14 22:49:50

阅读数 1860

评论数 0

原创 Flink流处理之迭代任务

前面我们分析过Flink对迭代在流图中的特殊处理,使得迭代中的反馈环得以转化为普通的DAG模型。这一篇我们将剖析运行时的流处理迭代任务的执行机制。这里涉及到两个任务类:

2016-12-12 21:21:00

阅读数 3005

评论数 0

提示
确定要删除当前文章?
取消 删除