Flink】Flink是什么?在使用时有什么优势?

2020-03-20 17:28发布

3条回答
汤圆和辣条
1楼 · 2020-03-24 14:05.采纳回答

 Flink为流处理和批处理应用公用一个通用的引擎。

1、数据量&吞吐量&延迟性

Flink 的流处理引擎只需要很少配置就能实现高吞吐率和低延迟。

2、支持 Event Time 和乱序事件

Flink 支持了流处理和 Event Time 语义的窗口机制。

Event time 使得计算乱序到达的事件或可能延迟到达的事件更加简单。

3、状态计算的 exactly-once 语义

流程序可以在计算过程中维护自定义状态。

Flink 的 checkpointing 机制保证了即时在故障发生下也能保障状态的 exactly once 语义。

4、高度灵活的流式窗口

Flink 支持在时间窗口,统计窗口,session 窗口,以及数据驱动的窗口

窗口可以通过灵活的触发条件来定制,以支持复杂的流计算模式。

5、带反压的连续流模型

数据流应用执行的是不间断的(常驻)operators。

Flink streaming 在运行时有着天然的流控:慢的数据 sink 节点会反压(backpressure)快的数据源(sources)。

6、容错性

Flink 的容错机制是基于 Chandy-Lamport distributed snapshots 来实现的。

这种机制是非常轻量级的,允许系统拥有高吞吐率的同时还能提供强一致性的保障。

7、Batch 和 Streaming 一个系统流处理和批处理共用一个引擎

Flink 为流处理和批处理应用公用一个通用的引擎。批处理应用可以以一种特殊的流处理应用高效地运行。

8、内存管理

Flink 在 JVM 中实现了自己的内存管理。

应用可以超出主内存的大小限制,并且承受更少的垃圾收集的开销。

9、迭代和增量迭代

Flink 具有迭代计算的专门支持(比如在机器学习和图计算中)。

增量迭代可以利用依赖计算来更快地收敛。

10、程序调优

批处理程序会自动地优化一些场景,比如避免一些昂贵的操作(如 shuffles 和 sorts),还有缓存一些中间数据。




milkmilk
2楼 · 2020-05-15 09:24

flink是一个大数据实时框架,它相对于之前比较火的storm而言要更加快速高效。

IT学习助手 - qq:2676427015
3楼 · 2021-09-06 10:54

  Flink 自从 2019 年初开源以来,迅速成为大数据实时计算领域炙手可热的技术框架。作为 Flink 的主要贡献者阿里巴巴率先将其在全集团进行推广使用,另外由于 Flink 天然的流式特性,更为领先的架构设计,使得 Flink 一出现便在各大公司掀起了应用的热潮。

  阿里巴巴、腾讯、百度、字节跳动、滴滴、华为等众多互联网公司已经将 Flink 作为未来技术重要的发力点,迫切地在各自公司内部进行技术升级和推广使用。同时,Flink 已经成为 Apache 基金会和 GitHub 社区最为活跃的项目之一。

  Flink 支持的众多应用场景

1.实时数据计算

 如果你对大数据技术有所接触,那么下面的这些需求场景你应该并不陌生:

阿里巴巴每年双十一都会直播,实时监控大屏是如何做到的?公司想看一下大促中销量最好的商品 TOP5?

我是公司的运维,希望能实时接收到服务器的负载情况?

 我们可以看到,数据计算场景需要从原始数据中提取有价值的信息和指标,比如上面提到的实时销售额、销量的 TOP5,以及服务器的负载情况等。传统的分析方式通常是利用批查询,或将事件(生产上一般是消息)记录下来并基于此形成有限数据集(表)构建应用来完成。为了得到最新数据的计算结果,必须先将它们写入表中并重新执行 SQL 查询,然后将结果写入存储系统比如 MySQL 中,再生成报告。Apache Flink 同时支持流式及批量分析应用,这就是我们所说的批流一体。Flink 在上述的需求场景中承担了数据的实时采集、实时计算和下游发送。

2.实时数据仓库和 ETL

  ETL(Extract-Transform-Load)的目的是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。

  传统的离线数据仓库将业务数据集中进行存储后,以固定的计算逻辑定时进行 ETL 和其他建模后产出报表等应用。离线数据仓库主要是构建 T+1 的离线数据,通过定时任务每天拉取增量数据,然后创建各个业务相关的主题维度数据,对外提供 T+1 的数据查询接口。实时数据仓库的建设是“数据智能 BI”必不可少的一环,也是大规模数据应用中必然面临的挑战。

3.Flink 在实时数仓和实时 ETL 中有天然的优势:

  状态管理,实时数仓里面会进行很多的聚合计算,这些都需要对于状态进行访问和管理,Flink 支持强大的状态管理;

  丰富的 API,Flink 提供极为丰富的多层次 API,包括 Stream API、Table API 及 Flink SQL;

  生态完善,实时数仓的用途广泛,Flink 支持多种存储(HDFS、ES 等);

  批流一体,Flink 已经在将流计算和批计算的 API 进行统一。

4.事件驱动型应用

你是否有这样的需求:

  我们公司有几万台服务器,希望能从服务器上报的消息中将 CPU、MEM、LOAD 信息分离出来做分析,然后触发自定义的规则进行报警?

  我是公司的安全运维人员,希望能从每天的访问日志中识别爬虫程序,并且进行 IP 限制?

  事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。

  在传统架构中,我们需要读写远程事务型数据库,比如 MySQL。在事件驱动应用中数据和计算不会分离,应用只需访问本地(内存或磁盘)即可获取数据,所以具有更高的吞吐和更低的延迟。







回答: 2021-11-13 16:41

  Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。

  Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。

相关问题推荐

  • 回答 2

    1、Window Assinger是干啥的当你决定stream是否keyby之后,window是没有构建的,你还需要指定一个window Assinger用于定义元素如何分配到窗口中。2、window Assinger如何指定?Keyedstream:window(WindowAssigner)non-keyed streams :windowAll(WindowAssig...

  • 回答 2

    Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink 的时间。Processing Time:是每一个执行基于时间操作的算子...

  • 回答 2

    Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink 的时间。Processing Time:是每一个执行基于时间操作的算子...

  • 回答 1

    批处理是流处理的一种非常特殊的情况。在流处理中,我们为数据定义滑动窗口或滚动窗口,并且在每次窗口滑动或滚动时生成结果。批处理则不同,我们定义一个全局窗口,所有的记录都属于同一个窗口。...

  • 回答 5

    jobmanager:主节点,类似于spark中的mastertaskManager:从节点,类似于spark中的workerslot:插槽,类似于spark中executor中的线程,只不过flink中的slot是物理存在的,可以手动配置,每个slot执行一个任务,是静态概念,用来隔绝内存。...

  • 回答 1

    配置文件(flink-conf.yaml)要启动HA集群,请将以下配置键添加到 conf/flink-conf.yaml:高可用性模式(必需):在 conf/flink-conf.yaml 中,必须将高可用性模式设置为zookeeper,以打开高可用模式。或者将此选项设置为工厂类的 FQN,Flink 通过创建 HighAva...

  • 回答 4

    1.Zookeeper加强集群稳定性Zookeeper通过一种和文件系统很像的层级命名空间来让分布式进程互相协同工作。这些命名空间由一系列数据寄存器组成,我们也叫这些数据寄存器为znodes。这些znodes就有点像是文件系统中的文件和文件夹。和文件系统不一样的是,文件系...

  • 回答 1

    根据现实的数据产生方式和数据产生是否含有边界(具有起始点和终止点)角度,将数据分为两种类型的数据集----一种是有界数据集,另外一种是无界数据集

  • 回答 1

    目前,还是选择saprkflink还有成长的空间

没有解决我的问题,去提问