100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Flink系列-1 流式计算简介

Flink系列-1 流式计算简介

时间:2024-03-21 01:44:38

相关推荐

Flink系列-1 流式计算简介

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

大数据系列文章目录

官方网址:/

学习资料:https://flink-/

目录

数据的时效性流式计算和批量计算流式计算流程和特性分布式计算引擎什么是FlinkFlink中的批和流性能比较Flink流处理特性发展历史Flink在阿里的现状Flink的优势Flink的应用场景国内使用情况

数据的时效性

日常工作中,我们一般会先把数据存储在表,然后对表的数据进行加工、分析。既然先存储在表中,那就会涉及到时效性概念。

如果我们处理以年,月为单位的级别的数据处理,进行统计分析,个性化推荐,那么数据的的最新日期离当前有几个甚至上月都没有问题。但是如果我们处理的是以天为级别,或者一小时甚至更小粒度的数据处理,那么就要求数据的时效性更高了。比如:

对网站的实时监控对异常日志的监控

这些场景需要工作人员立即响应,这样的场景下,传统的统一收集数据,再存到数据库中,再取出来进行分析就无法满足高时效性的需求了。

流式计算和批量计算

上面说到的统一收集数据->存储到DB->对数据进行批量处理,就是我们说到的批量计算。而流式计算,顾名思义,就是对数据流进行处理,是实时计算

主要原理是:

与批量计算那样慢慢积累数据不同,流式计算立刻计算,数据持续流动,计算完之后就丢弃。批量计算是维护一张表,对表进行实施各种计算逻辑。流式计算相反,是必须先定义好计算逻辑,提交到流式计算系统,这个计算作业逻辑在整个运行期间是不可更改的。计算结果上,批量计算对全部数据进行计算后传输结果,流式计算是每次小批量计算后,结果可以立刻实时化展现。 Batch Analytics,右边是 Streaming Analytics。Batch Analysis 就是传统意义上使用类似于 Map Reduce、Hive、Spark Batch 等,对作业进行分析、处理、生成离线报表Streaming Analytics 使用流式分析引擎如 Storm,Flink 实时处理分析数据,应用较多的场景如实时大屏、实时报表。

流式计算流程和特性

流程

1、提交流计算作业

2、等待流式数据触发流计算作业

3、计算结果持续不断对外写出特性

1、实时,低延迟

2、无界,数据是不断输出无终止的

3、连续,计算连续进行,计算之后数据就会被丢弃

分布式计算引擎

这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop、Storm,以及后来的 Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark 的火热或多或少的掩盖了其他分布式计算的系统身影。就像 Flink,也就在这个时候默默的发展着。

在国外一些社区,有很多人将大数据的计算引擎分成了 4 代,当然,也有很多人不会认同。我们先姑且这么认为和讨论。

第1代——Hadoop MapReduce

首先第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce。它将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。

批处理Mapper、Reducer

第2代——DAG框架(Tez) + MapReduce

由于这样的弊端,催生了支持 DAG 框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie 来说,大多还是批处理的任务。

批处理1个Tez = MR(1) + MR(2) + … + MR(n)相比MR效率有所提升

第3代——Spark(批为主、兼容流计算)

接下来就是以 Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及强调的实时计算。在这里,很多人也会认为第三代计算引擎也能够很好的运行批处理的 Job。

批处理、流处理、SQL高层API支持自带DAG内存迭代计算、性能较之前大幅提升

第4代——Flink(原生流计算,兼容批,实时即未来)

随着第三代计算引擎的出现,促进了上层应用快速发展,例如各种迭代计算的性能以及对流计算和 SQL 等的支持。Flink 的诞生就被归在了第四代。这应该主要表现在 Flink 对流计算的良好支持,以及更一步的实时性上面。当然 Flink 也可以支持 Batch 的任务,以及 DAG 的运算。

批处理、流处理、SQL高层API支持自带DAG流式计算性能更高、可靠性更高

什么是Flink

Flink诞生背景

Flink起源于Stratosphere(斯cua投斯费尔)项目,Stratosphere是在~由地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目4月捐赠给了Apache软件基金会12月成为Apache软件基金会的顶级项目。(DS调度花费2年,可见Flink很快了)

LOGO介绍

在德语中,Flink一词表示快速和灵巧,项目采用松鼠的彩色图案作为logo,Flink的松鼠logo尾巴的颜色与Apache软件基金会的logo颜色相呼应,也就是说,这是一只Apache风格的松鼠。

Flink概述

Flink主页在其顶部展示了该项目的理念:“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”。

Flink是一款分布式的计算引擎,它可以用来做批处理;也可以用来做流处理

哪些公司在使用Flink

Flink中的批和流

批处理的特点是有界、持久、大量,非常适合需要访问全部记录才能完成的计算工作,一般用于离线统计。

流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统 传输的每个数据项执行操作,一般用于实时统计。

而在Flink中,一切都是由流组成的,Flink认为有界数据集是无界数据流的一种特例,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。

无界流:意思很明显,只有开始没有结束。必须连续的处理无界流数据,也即是在事件注入之后立即要对其进行处理。不能等待数据到达了再去全部处理,因为数据是无界的并且永远不会结束数据注入。处理无界流数据往往要求事件注入的时候有一定的顺序性,例如可以以事件产生的顺序注入,这样会使得处理结果完整。

有界流:也即是有明确的开始和结束的定义。有界流可以等待数据全部注入完成了再开始处理。注入的顺序不是必须的了,因为对于一个静态的数据集,我们是可以对其进行排序的。有界流的处理也可以称为批处理。

性能比较

首先,我们可以通过下面的性能测试初步了解两个框架的性能区别,它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。

测试环境:

CPU:7000个;内存:单机128GB;版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9数据:800MB,8GB,8TB;算法:K-means:以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。迭代:K=10,3组数据

测试结果:

纵坐标是秒,横坐标是次数

Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop

Flink流处理特性

支持高吞吐、低延迟、高性能的流处理支持带有事件时间的窗口(Window)操作支持有状态计算的Exactly-once语义支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作支持具有Backpressure功能的持续流模型(自动降速Source)支持基于轻量级分布式快照(Snapshot)实现的容错一个运行时同时支持Batch on Streaming处理和Streaming处理Flink在JVM内部实现了自己的内存管理支持迭代计算支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存

发展历史

,Flink 的前身已经是柏林理工大学一个研究性项目,原名 StratoSphere-04-16,Flink成为 ASF(Apache Software Foundation)的顶级项目之一,从Stratosphere 0.6开始,正式更名为Flink。由Java语言编写-11-04,Flink 0.7.0发布,介绍了最重要的特性:Streaming API-03-08,Flink 1.0.0,支持Scala-01-08,阿里巴巴以9000万欧元的价格收购了总部位于柏林的初创公司Data Artisans,也就是Flink的母公司最新版本已经到了1.16

我目前的开发是基于flink-1.10.0这个版本来进行的

Flink在阿里的现状

基于Apache Flink在阿里巴巴搭建的平台于正式上线,并从阿里巴巴的搜索和推荐这两大场景开始实现。目前阿里巴巴所有的业务,包括阿里巴巴所有子公司都采用了基于Flink搭建的实时计算平台。同时Flink计算平台运行在开源的Hadoop集群之上。采用Hadoop的YARN做为资源管理调度,以 HDFS作为数据存储。因此,Flink可以和开源大数据软件Hadoop无缝对接。

目前,这套基于Flink搭建的实时计算平台不仅服务于阿里巴巴集团内部,而且通过阿里云的云产品API向整个开发者生态提供基于Flink的云产品支持。

Flink的优势

Flink 通过实现了 Google Dataflow 流式计算模型实现了高吞吐、低延迟、高性能兼具实时流式计算框架。

同时 Flink 支持高度容错的状态管理,防止状态在计算过程中因为系统异常而丢失,Flink 周期性地通过分布式快照技术 Checkpoints 实现状态的持久化维护,使得即使在系统停机或者异常情况下都能计算出正确的结果。

具体的优势有以下几点

同时支持高吞吐、低延迟、高性能支持事件时间(Event Time)概念支持有状态计算支持高度灵活的窗口(Window)操作基于轻量级分布式快照(Snapshot)实现的容错基于 JVM 实现的独立的内存管理Save Points 保存点

Flink的应用场景

阿里在Flink的应用主要包含四个模块:实时监控、实时报表、流数据分析和实时仓库。

实时监控

用户行为预警、app crash 预警、服务器攻击预警对用户行为或者相关事件进行实时监测和分析,基于风控规则进行预警

实时报表

双11、双12等活动直播大屏对外数据产品:生意参谋等数据化运营

流数据分析

实时计算相关指标反馈及时调整决策内容投放、无线智能推送、实时个性化推荐等

实时仓库

数据实时清洗、归并、结构化数仓的补充和优化

国内使用情况

Alibaba 使用 Flink 的分支版本 Blink 来优化实时搜索排名。当商家录入一个商品之后,实时计算引擎(Flink)在秒级别 build 商品索引,优化商品搜索。腾讯利用 Apache Flink 构建了一个内部平台(Oceanus),以提高开发和操作实时应用程序的效率。快手使用了 Apache Flink 搭建了一个实时监控平台,监控短视频和直播的质量。利用 Apache Flink 构建了实时数据仓库,用于即时分析运营活动效果及用户短期兴趣。华为云提供基于 Flink 的云服务。滴滴使用 Apache Flink支持了实时监控、实时特征抽取、实时ETL等业务。Ebay 的监控平台由 Flink 提供支持,可在指标和日志流上计算上千条自定义报警规则。爱立信使用 Flink 构建了一个实时异常检测器,通过大型基础设施进行机器学习。Uber 在 Apache Flink 上构建了基于 SQL 的开源流媒体分析平台 AthenaX。Yelp 利用 Flink 为其数据连接器生态系统和流处理基础架构提供支持。财富 500 强金融服务公司 Capital One 使用 Flink 进行实时活动监控和报警。

参考官网:/poweredby.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。