首页 > 编程知识 正文

flink和flume区别,骨耜是用来做什么的

时间:2023-05-06 18:21:22 阅读:153250 作者:4766

文章目录概要特征应用场景Flink VS Spark Streaming

概要

什么是Flink?

Apache Flink是框架分布式的处理引擎,无边界有边界的数据

Apache Flink功能强大,支持开发和运行各种类型的APP应用程序。 其主要特性是批量流一体化、精密状态管理、事件时间支持、精确的一次状态一致性保证等。 除了可以在包括YARN、Mesos和Kubernetes在内的各种资源管理框架中运行外,Flink还支持在裸机群集上独立部署。 如果启用了高可用性选项,则没有单点故障问题。 事实上,Flink已经扩展到数千个内核,其状态可以达到TB级,而且可以保持高吞吐量、低延迟的特性。 在世界各地,要求苛刻的流APP应用都在Flink上运行。

那么,让我介绍一下Flink的一些重要概念。

有状态

批与流的特点是有界、持久、海量,非常适合必须访问完整记录才能进行的计算工作,一般用于离线统计。

批处理的特征是无界的,实时的。 无需对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。 通常用于实时统计。

在Spark的世界观中,一切都由流处理组成。 离线数据是一个大批处理,实时数据由无限小批处理组成。 另一方面,在Flink的世界观中,所有的都由批次构成,离线数据是有极限的流,实时数据是没有极限的流,是所谓的有界流和无边界流。

:定义了流程的开始,但没有定义流程的结束。 他们不断地生成数据。 无界流的数据必须继续处理。 也就是说,有必要在数据被取入后立即处理。 不能在所有数据到达后再处理。 输入是无限的,任何时候都不会完成输入。 处理无边界数据通常需要按特定顺序(如事件发生的顺序)拍摄事件,以便可以推断结果的完整性。无界流:有定义流的开始和结束。 有界流可以在摄取所有数据后进行计算。 有界流的所有数据都可以重新排序,所以没有必要有序地摄取。 有界流处理通常称为批处理。

有界流和无界流

有界流精确的时间控制和状况允许链路运行时间(runtime )执行任何处理无边界流的APP应用。 有界流通过为一定大小的数据集专门设计的几种算法和数据结构进行了内部处理,产生了优良的性能。

Flink 擅长处理无界和有界数据集

Apache Flink是一个分布式系统,需要计算资源来执行APP应用程序。 Flink集成了所有常见的群集资源管理器,如Hadoop YARN、Apache Mesos和Kubernetes,但也作为独立的群集工作。

通过资源管理器特定的“资源管理器-规范”部署模式,Flink被设计为可以在上面列出的每个资源管理器中很好地工作。 Flink可以以适合当前资源管理器的方式进行交互。

部署Flink APP应用程序时,flink会根据APP应用程序配置的并行性自动标识所需的资源并向资源管理器请求。 如果发生故障,Flink将通过请求新资源来替换故障容器。 提交或控制APP断言的所有通信都通过REST调用进行,以简化Flink与各种环境的集成。

部署应用到任何地方

具有状态的Flink程序针对访问本地状态进行了优化。 的状态始终保存在内存中,如果状态大小超过可用内存,则保存在可高效访问的磁盘数据结构中。 处理延迟非常低,因为任务访问本地状态(通常在内存中)并进行所有计算。 Flink通过定期异步永久保存本地状态,确保故障场景中的准确状态一致性。

利用内存性能

Flink基于抽象度分层提供了三个不同的API。 每个API都有不同的简洁性和表现力,支持不同的APP场景。

Flink分层API

33558www.Sina.com/:1:可以处理一个或两个输入数据流中的一个事件或分组在特定窗口中的多个事件。 提供对时间和状态的精细控制。 开发人员可以在其中任意修改状态,也可以注册计时器并在将来的某个时刻触发回调函数。 因此,可以利用ProcessFunction来实现许多有状态的事件驱动APP应用所需的基于单个事件的复杂业务逻辑。分层API

为许多通用的流处理操作提供了处理原语。这些操作包括窗口、逐条记录的转换操作,在处理事件时进行外部数据库查询等。DataStream API 支持 Java 和 Scala 语言,预先定义了例如map()、reduce()、aggregate() 等函数。你可以通过扩展实现预定义接口或使用 Java、Scala 的 lambda 表达式实现自定义的函数。SQL & Table API:Flink 支持两种关系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无边界的实时数据流和有边界的历史记录数据流上,关系型 API 会以相同的语义执行查询,并产生相同的结果。Table API和SQL借助了 Apache Calcite来进行查询的解析,校验以及优化。它们可以与DataStream和DataSet API无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。Flink 的关系型 API 旨在简化数据分析、数据流水线和 ETL 应用的定义。
特点

Apache Flink是一个集合众多具有竞争力特性于一身的第三代流处理引擎,它的以下特点使得它能够在同类系统中脱颖而出。

同时支持高吞吐、低延迟、高性能。 Flink是目前开源社区中唯一一套集高吞吐、低延迟、高性能三者于一身的分布式流式处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障;而流式计算框架Apache Storm只能支持低延迟和高性能特性,但是无法满足高吞吐的要求。 同时支持事件时间和处理时间语义。 在流式计算领域中,窗口计算的地位举足轻重,但目前大多数框架窗口计算采用的都是处理时间,也就是事件传输到计算框架处理时系统主机的当前时间。Flink能够支持基于事件时间语义进行窗口计算,也就是使用事件产生的时间,这种基于事件驱动的机制使得事件即使乱序到达,流系统也能够计算出精确的结果,保证了事件原本的时序性。 支持有状态计算,并提供精确一次的状态一致性保障。 所谓状态就是在流式计算过程中将算子的中间结果数据保存着内存或者文件系统中,等下一个事件进入算子后可以从之前的状态中获取中间结果中计算当前的结果,从而不须每次都基于全部的原始数据来统计结果,这种方式极大地提升了系统的性能,并降低了数据计算过程的资源消耗。 基于轻量级分布式快照实现的容错机制。 Flink能够分布式运行在上千个节点上,将一个大型计算任务的流程拆解成小的计算过程,然后将Task分布到并行节点上进行处理。在任务执行过程中,能够自动发现事件处理过程中的错误而导致的数据不一致问题,在这种情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行持久化存储,一旦任务出现异常终止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保数据中处理过程中的一致性。 保证了高可用,动态扩展,实现7 * 24小时全天候运行。 支持高可用性配置(无单点失效),和Kubernetes、YARN、Apache Mesos紧密集成,快速故障恢复,动态扩缩容作业等。基于上述特点,它可以7 X 24小时运行流式应用,几乎无须停机。当需要动态更新或者快速恢复时,Flink通过Savepoints技术将任务执行的快照保存在存储介质上,当任务重启的时候可以直接从事先保存的Savepoints恢复原有的计算状态,使得任务继续按照停机之前的状态运行。 支持高度灵活的窗口操作。 Flink将窗口划分为基于Time、Count、Session,以及Data-driven等类型的窗口操作,窗口可以用灵活的触发条件定制化来达到对复杂流传输模式的支持,用户可以定义不同的窗口触发机制来满足不同的需求。
应用场景

在实际生产的过程中,大量数据在不断地产生,例如金融交易数据、互联网订单数据、GPS定位数据、传感器信号、移动终端产生的数据、通信信号数据等,以及我们熟悉的网络流量监控、服务器产生的日志数据,这些数据最大的共同点就是实时从不同的数据源中产生,然后再传输到下游的分析系统。

针对这些数据类型主要包括以下场景,Flink对这些场景都有非常好的支持。

实时智能推荐 利用Flink流计算帮助用户构建更加实时的智能推荐系统,对用户行为指标进行实时计算,对模型进行实时更新,对用户指标进行实时预测,并将预测的信息推送给Web/App端,帮助用户获取想要的商品信息,另一方面也帮助企业提高销售额,创造更大的商业价值。 复杂事件处理 例如工业领域的复杂事件处理,这些业务类型的数据量非常大,且对数据的时效性要求较高。我们可以使用Flink提供的CEP(复杂事件处理)进行事件模式的抽取,同时应用Flink的SQL进行事件数据的转换,在流式系统中构建实时规则引擎。 实时欺诈检测 在金融领域的业务中,常常出现各种类型的欺诈行为。运用Flink流式计算技术能够在毫秒内就完成对欺诈判断行为指标的计算,然后实时对交易流水进行规则判断或者模型预测,这样一旦检测出交易中存在欺诈嫌疑,则直接对交易进行实时拦截,避免因为处理不及时而导致的经济损失 实时数仓与ETL 结合离线数仓,通过利用流计算等诸多优势和SQL灵活的加工能力,对流式数据进行实时清洗、归并、结构化处理,为离线数仓进行补充和优化。另一方面结合实时数据ETL处理能力,利用有状态流式计算技术,可以尽可能降低企业由于在离线数据计算过程中调度逻辑的复杂度,高效快速地处理企业需要的统计结果,帮助企业更好的应用实时数据所分析出来的结果。 流数据分析 实时计算各类数据指标,并利用实时结果及时调整在线系统相关策略,在各类投放、无线智能推送领域有大量的应用。流式计算技术将数据分析场景实时化,帮助企业做到实时化分析Web应用或者App应用的各种指标。 实时报表分析 实时报表分析说近年来很多公司采用的报表统计方案之一,其中最主要的应用便是实时大屏展示。利用流式计算实时得出的结果直接被推送到前段应用,实时显示出重要的指标变换,最典型的案例就是淘宝的双十一实时战报。

Flink VS Spark Streaming

数据模型

Flink基本数据模型是数据流,以及事件序列。

Spark采用RDD模型,Spark Streaming的DStream实际上也就是一组组小批

数据RDD的集合。

运行时架构

Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节

点进行处理。

Spark是批计算,将DAG划分为不同的Stage,一个完成后才可以计算下一个。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。