人工智能时代前沿技术社区

首页 > 大数据 > 热点

Flink——新一代流式计算框架

Flink是第三代的流式计算框架。为了让大家进一步了解Flink的基础内容,飞马网于11月29日晚,邀请到资深大数据研发专家黄跃峰老师为大家分享

作者: | 2018-11-30 15:21:25

Flink是第三代的流式计算框架。为了让大家进一步了解Flink的基础内容,飞马网于1129日晚,邀请到资深大数据研发专家黄跃峰老师为大家分享该领域的内容

一、流式计算概述

在大数据处理的领域最著名的是Hadoop,最经典的是mapreduce这样的计算框架。事实上来讲,大数据在处理方面是一个非常深入的话题。MapReduce是典型的batch处理,同时streaming领域也在不断的发展。

通常我们将storm称作第一代的streaming框架,今天讲的Flink应该是第三代框架。在大数据这个领域,应该同事满足高吞吐、低延迟、一致性、高容错、流控制等多方面的特性,才能称之为较完善的大数据处理框架,Flink就是这样的一套框架。 

概述

左上角是native streaming,特点是把记录当做无限流来处理;右下角是微批量框架,特点是多一个接收器,把数据分割成微批次来处理。

三套计算框架

MapReduce05年开源,只能支持批处理。

Spark是在09年开源,能在微批量的基础上进行流处理。

Flink14年开源,擅长流处理,同时也把批处理做为特殊的流处理来使用。 

二、Flink介绍

Flink是用流处理的核心来统一进行分布式的流处理和预处理,在14年前已经诞生,10年到14年是有三个德国大学来主导,最主要的柏林大学。14年正式捐献给aphche基金会。 

全部呈现为快速增长状态 

用户

 

架构

Flink的架构非常清晰,一共三层。

三、Flink基础

 

Flink基础其实就是flink coreFlink core首要谈的就是dataflows,它有两个重要的组件:streamoperator,主要是DAG的形式,有向无环图,但是也能支持环状的依赖。整个dataflows典型的分成三个环节:sourcetransfomationssink

此外,每个operator是可以细分的,每个operator可以由一个或多个operator subtask组成,不同的operator并发度不同,这样使得前面的三大环节继续细分。

所以,Flink可以看成是多个operator subtask串起来的一整个task,每一个task有一个线程执行。这就是大概的操作链。

 

Flink里面有一个window的概念非常重要,因为window才是处理无限数据流的核心,像spark streaming是一个微批量的作业,支持的window类型有限,Flink可以支持时间型、数量型、绘画型。

Timetime window

 


 

最左边是事件制造者,每发出事件的时候都会携带time,经过消息队列进入datasource,之后会有一个进入flink系统的时间,这个时间通常被称为ingestion time,等到flinkwindow operator来处理这个event的时候会有一个window processing time。所以我们可以知道,一个再简单的事件的发生都会有事件发生时间、流处理开始接收事件的时间、窗口开始处理时间,flink支持各种各样的事件窗口化。

除此之外,还有基于时间的滚动窗口,滑动窗口以及会话窗口。

对于窗口来说,flinkkeyednon-keyed两种概念。

 

四、Flink程序设计

每一个flink的程序都分成五个部分。

程序实例:

代码分成两块。首先践行的是参数的检查,期望的是在内函数的标准输入还要传入一个远程机器,还要有一个端口,去从远程节点和端口去取数据。接下来就设置环境,完成程序设计的5个步骤。

讲述完程序的主体其实已经完成了80%,可以在花20&的时间还看另一个Linesplitter类在做什么。 在正则表达式里面,斜杠w按照单词切分,一行单词不管包含多少单词,经过切都变成一个string,变成一个token,接下来对tokens进行处理。

实际运行

五、总结

前面大多强调流处理部分,但是flink不仅仅是流式计算框架,也可以进行批处理,dataset API,同时也可以做CEPmachinelearning、图计算等等,对于编写大量程序没有感觉的数据分析师、AI人员也可以用flink.

以上就是本次线上直播的主要内容,相信你对流式计算框架有了一定的认识。想了解更多更详细内容的小伙伴们,可以关注服务号:FMI飞马网,点击菜单栏飞马直播,即可进行学习。

微信图片_20180530151141.jpg