微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

❤️真面向对象的Flink教学❤️一Flink简介

与对象深入浅出的交流Flink

大家好,我是十二 努力告诉女朋友什么是大数据的十二
这一次要让她知道什么是实时计算,什么监控着她的生活

Flink是什么

image-20210912152150365

Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams.

​ ——Flink官网

Apache Flink是一个框架分布式处理引擎,用于对无界有界数据流进行状态计算


为什么用Flink

日常生活中产生的数据,更多的是流式数据,而非离线数据,目前数仓中常用的“T+1”模式无法动态的体现数据的实时变化,而Flink流式数据处理,具备低延迟高吞吐高容错结果准确的特性,更加符合日常生活的数据特点。

自2014年成为Apache基金会顶级项目开始,Flink经过了长足的发展,在电商、市场营销、物联网(IOT)、银行和金融业等各个业务表现出了其强大的优势。


流处理的发展和演变

传统数据处理架构——事务处理

0CAAC6FE-4315-446B-941F-1D811C735E5B

常见的业务系统多采用事务处理架构,通过提供前端的交互页面,与后端数据库进行低延迟交互,通常要求在短时间完成响应,所以多采用关系型数据库


分析处理

0D9D4280-77F3-4E1A-9301-F98E9420C8C8

随着业务系统数据库的数据增长,将形成一批大数据量的数据资产,通过对数据资产的分析、挖掘,可以形成支持企业决策执行的数据仓库模型。

使用ETL工具,将数据从业务数据库抽取到数据仓库,抽取过程中,对数据进行清洗、标准化、脱敏等数据处理,并根据业务相关要求建立数据仓库模型。(数据一般为“T+1”模式抽取。)

数据进入数据仓库后,可以生成业务报表、大屏可视化等数据应用页面,从而时数据产生价值。


有状态的流式处理(最初的Storm)

3C4E1B7A-9FAA-44BF-AF86-3C2F64AC15D1

流式数据,数据源源不断的产生,处理引擎实时消费处理,并在本地记录数据状态,处理后的结果实时返回。同时,为避免节点异常导致数据处理记录丢失,会在远程存储系统上保存检查点,从而实现异常恢复机制。


Lambda架构

1D2F11CF-AFA6-428B-B817-7AC0D0DA7746

所谓的Lambda架构,即实现两套数据处理机制,一套用于“T+1”模式下的批处理,一套用于实时的流式计算,这样,既保证了数据的实时性,又保证了数据的最终结果准确性。

但是,两套数据处理机制的存在,要求数据处理时,必须开发两套代码,实现相同的需求,并保证其结果的一致,这样导致了整体架构的开发、维护极其困难,代码架构也很复杂。


Flink的特点

事件驱动型

44696E6F-490D-4185-A852-58144FC6A66F

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


基于流的世界观

在Flink的世界观中,一切都是流组成的,离线数据是有界的流,实时数据是无界的流。

以流为世界观的架构,实现了数据的低延迟。

00C5E28D-3747-403D-935D-A51A78E6D4C2

  • 有界流:有界流定义了明确的开始和结束,在执行计算前通过获取所有数据来处理有界流,处理有界流数据无需考虑有序获取的问题,有界流也称为批处理。
  • 无界流:无界流定义了一个开始但是没有结束,必须连续处理无界流,处理无界流通常要求以特定顺序获取数据,从而保证结果的完整性和准确性。

分层次的API

CD140E8F-4956-43BF-81A8-FEA5158FD7CA

Flink提供了分层次的API,来根据不同需求实现代码开发。

  • sql/Table API:以表为中心的声明式编程,其中表可以动态变化(表达流数据时),该API遵循关系模型,即二维表的形式,同时提供了如果sql语句般的select、join、group by等操作。
  • DataStream API:使用最为频繁的API,该API为数据处理提供了通用的构建模块,为用户定义了多种形式的转换、连接、聚合、窗口操作等等。
  • ProcessFunction:最底层的抽象,底层过程函数可以对某些特定操作进行底层抽象,允许用户自由的处理来自一个或多个流的事件,并可以注册事件时间来处理时间回调,完成复杂计算。

Flink vs. SparkStreaming

微批与流

97DC22C9-147D-4899-AC8D-E4CFE2DAA5D4

SparkStreaming采用微批的概念,即以秒为单位,将单位时间内的数据统一打包进行处理,实现伪实时的概念。

Flink是标准流式计算,事件源源不断的到来,并源源不断的进行处理,实现了毫秒级的数据处理。


数据模型

Spark Streaming同Spark core一样,采用的是RDD模型。

Flink的基本数据模型是数据流,以事件(event)的形式形成序列。


运行时架构

Spark Streaming是批处理,将DAG图划分为不同的Stage,一个Stage计算完后才能计算下一个

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐