Flink流处理基础概论

发布于:2025-05-27 ⋅ 阅读:(53) ⋅ 点赞:(0)

引言

本文初步针对flink中几个核心的概念和使用的注意事项进行简单的介绍,让读者针对flin中一些核心的组件使用有一个初步的了解。

Flink基本概述

传统数据架构的不足

因为特殊需要我们针对采集的数据等进行数据样本分析,所以大部分企业都会在传统事务型的OLTP数据库补充一套OLAP同步数据。

好在如今有了各种分析型的数据仓库可以做到这一点,但因为如今的微服务架构使得各个应用都遵循专注做好一件事的哲学。这是的事务型数据库数据分布在不同的系统上,所以我们就需要一款实时采集数据流数据处理应用,将这些相互隔离的数据库数据联合并采集到分析型数据仓库上。

而上述这个同步的过程,也就是我们常说的ETL即提取-转换-加载(Extract-Transform-Load,),整体来说,它的执行步骤为:

  1. 提取:从事务型数据库中提取数据
  2. 转换:按照需求进行数据转换为符合要求的数据格式(可能包含数据验证、数据归一化、编码、去重、表模式转换)
  3. 加载:同步到分析型数据库上完成持久化

所以一旦数据同步到分型数据库上,我们就可以利用分析型数据库做到如下几点:

  1. 定期数据报告:以生成计算业务习相关的统计数据,帮助管理层进行评估企业整体健康状况。
  2. 即席查询:利用分析型数据的优势,通过查询数据解决特定问题,以便进行下一步的商业决策。

Dataflow中的几大基本概念

Dataflow流式处理宏观流程

Dataflow代表着数据如何在不同的操作之间的流动,它通常是由一张有向图构成,即:

  1. 数据源:对于flink中没有输入一端的算子,即数据源头,我们称之为dataflow的源数据。
  2. 算子:有输入和输出,即通过从输入端获取数据并对其进行计算,然后产生数据从输出端输出供后续处理。
  3. 数据汇:经过无数个算子,将数据汇聚到终端即没有输出的一端,这种没有输出端的算子就是数据汇。

数据并行和任务并行的区别

上述说明了构成了Dataflow的宏观核心概念的逻辑视图,按照物理分布式视图下,算子可能会发布在不同的物理机器上,例如下图所示,中间进行数据转换计算的算子,各分配两个发布在不同的机器下作为并行任务运行,各自完成自己的一部分的计算任务。由此,也就有了数据并行和任务并行的概念。

先来说说数据并行,本质就是将数据进行分组,使之同一操作的多个任务切割为不同的子集,这使得计算负载能够分配到不同算子上工作,例如按照用户id进行分组将数据发布到负载的算子上进行数据运算。

而任务并行则说相同规则的算子可以多个并行处理,源数据可以并行传输到并行算子中运行,可以更好的利用集群资源进行运算。

Flink中几种数据传播策略

采集到源数据之后,flink会按照数据传播策略将数据项分配给不同的任务,对应的传播策略也有以下几种:

  1. 转发策略:将数据按照一对一映射的方式传输到指定的节点上,这种做法对于部署在相同机器上的任务非常友好,因为它们避免的网络通信的开销。
  2. 广播策略:即针对收到的数据流,将数据拷贝的多份然后发布到所有的下游算子中,因为涉及多算子节点的网络通信,所以代价也会相对昂贵一些。
  3. 基于键值对的策略:按照事先约定

网站公告

今日签到

点亮在社区的每一天
去签到