57

Apache Flink 技术栈及适用场景

 5 years ago
source link: https://mp.weixin.qq.com/s/TxywJayRNPglv_NAPD67nQ?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ammuqqj.jpg!web

微信公众号: 深广大数据Club

关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;

[如果你觉得深广大数据Club对你有帮助,欢迎赞赏]

本文主要讲述Apache Flink所适用于哪些类型的Application、针对不同类型的Application都有哪些经典的应用程序案例、以及Flink对不同类型的Application是如何支持的。以及Apache Flink技术栈。

技术栈

Flink作为一个软件堆栈,是一个分层系统。堆栈的不同层相互叠加,并提高它们接受的程序表示的抽象级别:

  • 运行时层以JobGraph的形式接收程序。JobGraph是一个通用的并行数据流,其中包含使用和生成数据流的任意任务。

  • DataStream API和DataSet API都通过单独的编译过程生成JobGraphs。数据集API使用优化器来确定程序的最佳计划,而DataStream API使用流构建器。

  • JobGraph是根据Flink中可用的各种部署选项执行的(例如,本地、远程、Yarn等)

  • Connector层所能对接的技术更是丰富多样,将不同类型、不同来源的数据介入到Flink组件栈中。

与Flink绑定的库和API生成数据集或DataStream API程序。这些表用于查询逻辑表,FlinkML用于机器学习,Gelly用于图形处理。

vUJZVnR.jpg!web

Flink 概述

Apache Flink因其丰富的功能集而成为开发和运行多种不同类型应用程序的绝佳选择。Flink的功能包括对流和批处理的支持,复杂的状态管理,事件时间处理语义以及状态的一次性一致性保证。此外,Flink可以部署在各种资源提供商(如YARN,Apache Mesos和Kubernetes)上,也可以作为裸机硬件上的独立群集。Flink配置为高可用性,没有单点故障。Flink已经被证明可以扩展到数千个核心和terabytes的应用程序状态,提供高吞吐量和低延迟,并为世界上一些最苛刻的流处理应用程序提供支持。

下面,我们将探讨由Flink提供支持的最常见类型的应用程序,并指出实际示例。

  • 事件驱动的应用程序

  • 数据分析应用程序

  • 数据管道应用程序

体系机构图

我们先来看上述所讲的三种类型的体系结构图

事件驱动

UVRnYvm.jpg!web

数据分析

BnM3i2v.jpg!web

数据管道

AJZvymi.jpg!web

三者的定义及优点

26zIZvF.jpg!web

Flink支持

uiMFNba.jpg!web

使用场景

eeErUfm.jpg!web

Flink应用案例

  • 优化电子商务的实时搜索结果:阿里巴巴的所有基础设施团队使用flink实时更新产品细节和库存信息,为用户提供更高的关联性。

  • 针对数据分析团队提供实时流处理服务:king通过flink-powered数据分析平台提供实时数据分析,从游戏数据中大幅缩短了观察时间

  • 网络/传感器检测和错误检测:Bouygues电信公司,是法国最大的电信供应商之一,使用flin监控其有线和无线网络,实现快速故障响应。

  • 商业智能分析ETL:Zalando使用flink转换数据以便于加载到数据仓库,将复杂的转换操作转化为相对简单的并确保分析终端用户可以更快的访问数据。

基于上面的案例分析,Flink非常适合于:

  • 多种数据源(有时不可靠):当数据是由数以百万计的不同用户或设备产生的,它是安全的假设数据会按照事件产生的顺序到达,和在上游数据失败的情况下,一些事件可能会比他们晚几个小时,迟到的数据也需要计算,这样的结果是准确的。

  • 应用程序状态管理:当程序变得更加的复杂,比简单的过滤或者增强的数据结构,这个时候管理这些应用的状态将会变得比较难(例如:计数器,过去数据的窗口,状态机,内置数据库)。flink提供了工具,这些状态是有效的,容错的,和可控的,所以你不需要自己构建这些功能。

  • 数据的快速处理:有一个焦点在实时或近实时用例场景中,从数据生成的那个时刻,数据就应该是可达的。在必要的时候,flink完全有能力满足这些延迟。

  • 海量数据处理:这些程序需要分布在很多节点运行来支持所需的规模。flink可以在大型的集群中无缝运行,就像是在一个小集群一样。

关注公众号

mmumMve.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK