Flink概述

Flink概述

一、技术的演变

在大数据计算中计算框架也在随着时间和需求不断的更新

1.1 Hadoop生态

14年Hadoop的MR计算框架带火了其相关的很多框架

1.2 Storm的解决的问题

MR框架解决了很多的需求,但由于其处理无法达到实时处理而逐渐暴露了MR的短板,根据对实时需求的越来越强,Storm出现在了人们的视野中,人们用它解决了数据处理实时性的问题,但是他的致命缺点就是无法与当时的Hadoop框架兼容,并且很难实现高吞吐和保证exactly-once,,所以其需要额外的技术人员和集群去维护,并且为了数据的正确性级别其开销也很大

1.3 Spark Streaming为什么出现?

根据这个缺点Spark Streaming慢慢进入了人们的视野,由于当时批处理还是占有很大的需求,所以Spark解决实时流处理的思想是把流处理当做为特殊的批处理(将连续时间中的流数据分割成一系列微小的批量作业),但是他的缺点就是无法做到完全实时,所以也有人叫它伪实时
注:后来Storm也推出了Storm Trident它底层流处理引擎就是基于微批处理方法来进行计算的,从而实现了exactly-once语义,但是在延迟性方面付出了很大的代价

1.4 Flink的产生

由于微批次处理只能根据时间倍数进行分割,无法根据实际情况分割事件数据。对于一些延迟比较敏感的作业,往往需要开发者在写业务代码时花费大量精力来提升性能,使得这些微批处理策略开发速度变慢,运维成本变高。而Flink设计思想则是将批处理(即处理有限的静态数据)视作一种特殊的流处理,从而解决了上面的问题。

1.5 简单图解

在这里插入图片描述

二、Flink计算核心

Flink的核心计算架构是下图中的Flink Runtime执行引擎,它是一个分布式系统,能够接受数据流程序并在一台或多台机器上以容错方式执行。Flink Runtime执行引擎可以作为YARN(Yet Another Resource Negotiator)的应用程序在集群上运行,也可以在Mesos集群上运行,还可以在单机上运行(这对于调试Flink应用程序来说非常有用)。

2.1 图解

在这里插入图片描述

2.2 简介

  1. Runtime:能被Flink Runtime执行引擎接受的程序很强大,但是这样的程序有着冗长的代码,编写起来也很费力。所以为了方便程序的编写Flink在Runtime执行引擎上又封装了API
  2. DataStream API与DataSet API:Flink 提供了用于流处理的DataStream API和用于批处理的DataSet API,因此Flink既可以完成流处理,也可以完成批处理。
    3.其他:Flink支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP)、以及图计算(Gelly),还有分别针对流处理和批处理的Table API。

注:DataSet API先于DataStream API被开发出来,这是因为工业界对无限流处理的需求在Flink诞生之初并不大

三、总结

Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtime),提供支持流处理和批处理两种类型应用的功能。现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为它们要实现的目标是完全不相同的:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。例如,实现批处理的开源方案有MapReduce、Tez、Spark,实现流处理的开源方案有Storm。
Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。基于同一个Flink运行时(Flink Runtime),分别提供了流处理和批处理API,而这两种API也是实现上层面向流处理、批处理类型应用框架的基础。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值