本人从实时产品平台角度,阐述作为产品经理对实时计算平台需要关注到的内容。
什么是数据中台·实时计算平台?
实时计算(实时开发)是为构建一套一站式、高性能实时大数据处理平台,广泛适用于流式数据处理场景。实时计算产品彻底规避繁重的底层流式处理逻辑开发工作,助力企业向实时化、智能化大数据计算升级转型。
数据中台中为什么构建实时计算平台?
在数据中台中,不同计算引擎对应不同的数据处理场景,Hadoop、MPP(greenplum、tidb)、Oracle、Teredata、SAP HANA等计算引擎往往是为精心打磨的离线数据仓库模型而生,无论是维度建模还是关系建模,其强调数据模型的复用,并且通过建模屏蔽了底层数据的差异,从而高效率的支撑上层应用。Python、R引擎主要解决数据挖掘场景,但是对于类似天猫实时大屏、实时金融风控、实时智能推荐、实时财务系统等业务场景就需要用到实时计算平台。
构建实时计算平台技术选型
Spark(准实时)、Storm(实时)、Flink(批流一体)都支持流计算,由于Flink批流一体、性能消耗低于storm、吞吐量高于storm,延时低于storm等的优良特性,大部分企业在构建实时计算平台时选择选择Flink框架。关于以上三种框架具备什么样的技术特性,这里不过多展开,作为产品经理,你也需要了解大数据平台常见的组件与架构。
实时计算平台应该具备什么样的能力 ?
常见的数据开发平台,不管是离线开发、实时开发、标签开发都需要开发任务管理、任务开发编辑器、调度任务、数据源管理,下面我将给大家分享一下我带团队做的实时计算开发平台核心功能与相关页面。
我们我们先来看一下在实时数据开发平台做数据加工的业务流程图。
1.数据源管理
Flink消费哪里的数据呢?与Flink最常搭配的流表数据是kafka,kafka中物理表叫做Topic。
2.创建实时计算任务
创建任务需要选择编写FlinkSQL时需要用到的表,这里需要编写查询语句即可,生成的数据会自动写入目的表,如下图所示FlinkSQL表选择。
在创建过程中需要配置一些参数,你必须要了解Flink的技术特点,要做实时开发计算平台,作为产品人需要具备大数据平台的技术素养,后面会讲到。
作为数据中台产品你需要了解Flink的特点
1.Flink核心特性:Flink API
Flink 为流式/批式处理应用程序的开发提供了不同级别的抽象。
- Flink API最底层的抽象为有状态实时流处理。其抽象实现是Process Function,并且Process Function被Flink框架集成到了。
- DataSream API中来为我们使用,它允许用户在应用程序中*地处理来自单流或多流的事件(数据) ,并提供具有全局致性和容错 保障的状态。此外,用户可以在此层抽象中注册事件时间(event time)和处理时间(processing time)回调方法,从而允许程序可以实现复杂计算。
- . FlinkAPI 第二层抽象是Core APls.实际上,许多应用程序不需要使用到上述最底层抽象的API,而是可以使用Core APIs进行编程: 其中包含DataStream API (应用于有界/*数据流场景)和DataSet API (应用于有界数据集场景)两部分。Core APIs提供的流式 API (Fluent API)为数据处理提供了通用的模块组件,例如各种形式的用户自定义转换(transformations) 、联接(joins) 、聚合 (aggregations)、窗口(windows) 和状态(state) 操作等。此层API中处理的数据类型在每种编程语言中都有其对应的类。
- Process Function 这类底层抽象和DataStream API的相互集成使得用户可以选择使用更底层的抽象API来实现自己的需求。DataSet API还额外提供了一些原语,比如循环/迭代(loop/iteration) 操作。
- Flink API第三层抽象是Table API. Table API是以表(Table) 为中心的声明式编程(DSL) API, 例如在流式数据场景下,它可以表 示-张正在动态改变的表。TableAPI遵循(扩展)关系模型:即表拥有schema (类似于关系型数据库中的schema),并且Table API也提供了类似于关系模型中的操作,比如select. project. join、 group-by 和aggregate等。Table API程序是以声明的方式定义应 执行的逻辑操作,而不是确切地指定程序应该执行的代码。尽管Table API使用起来很简洁并且可以由各种类型的用户自定义函数扩展 功能,但还是比Core API的表达能力差。此外,Table API程序在执行之前还会使用优化器中的优化规则对用户编写的表达式进行优化。
- 表和DataStream/DataSet可以进行无缝切换,Fink 允许用户在编写应用程序时将Table API与DataStream/DataSet API混合使用。 FlinkAPI最顶层抽象是SQL.这层抽象在语义和程序表达式上都类似于Table API,但是其程序实现都是SQL查询表达式。SQL抽象与Table API抽象之间的关联是非常紧密的,并且SQL查询语句可以在Table API中定义的表上执行。
2.Flink核心特性:流处理
- 批处理是有界数据流处理的范例。在这种模式下,你可以选择在计算结果输出之前输入整个数据集,这也就意味着你可以对整个数据集的数据进行排序、统计或汇总计算后再输出结果。
- 流处理正相反,其涉及*数据流。至少理论上来说,它的数据输入永远不会结束,因此程序必须持续不断地对到达的数据进行处理。
3.Flink核心特性:编程模型
Flink应用程序由用户自定义算子转换而来的流式 dataflows 所组成。这些流式 dataflows 形成了有向图,以一个或多个源(source)开始,并以一个或多个汇(sink)结束。
4.Flink核心特性:并行 Dataflows
Flink 程序本质上是分布式并行程序。在程序执行期间,一个流有一个或多个流分区(Stream Partition),每个算子有一个或多个算子子任务(Operator Subtask)。每个子任务彼此独立,并在不同的线程中运行,或在不同的计算机或容器中运行。
5.Flink核心特性:流批一体
6.Flink核心特性:时间模型
支持事件时间(Event Time)、处理时间(Processing Time)等时间概念。
7.Flink核心特性:事件时间和水印(Watermarks)
有序流、无序流以及水印在算子中的流转
- Watermarks也是flink中的特殊事件
- 一个带有时间戳t的Watermarks会让算子判定不会再收到任何时间戳<t的事件
8.Flink核心特性:有状态计算
支持有状态计算,三种状态存储方式
MemoryStateBackend、FsStateBackend、RocksDBStateBackend
9.Flink核心特性:分布式快照
基于轻量级分布式快照(Snapshot)实现的容错
10.Flink核心特性:窗口
支持高度灵活的窗口(Window)操作
11.Flink核心特性:带反压的连续流模型
不同 Job 之间的每个(远程)网络连接将在 Flink 的网络堆栈中获得自己的TCP通道。 但是,如果同一 Task 的不同 SubTask 被安排到同一个TaskManager,则它们与其他 TaskManager 的网络连接将被多路复用并共享一个TCP信道以减少资源使用。图中的 A.1 -> B.3、A.1 -> B.4、A.2 -> B.3、A.2 -> B.4 这四条将会多路复用共享一个 TCP 信道。
当前反压模型存在的问题:
- B.3没有压力
- A.2 与 B4产生反压时,TM1端Socket Send Buffer和TM2 端的Socket Receive Buffer被占满,进而多路复用TCP通道被占用
结论:A.1和A.2发送给 B.3的数据全被阻塞了,导致本来没有压力B.3现在无法接收数据。
如果你想更清楚获取一线大厂数据中台中实时计算平台如何构建的,发送后台,我会给你发送数据中台资料。
更多数据中台内容请关注微信公众号:产品人栖息地 数据中台系列陆续推出
1.数据产品.数据采集与集成(批量数据同步、数据实时同步、数据转换、CDC同步策略)
2.数据产品.数据仓库(数据集成、数据开发、离线数据仓库、实时数据仓库、数据字典)
3.数据产品.数据治理平台(元数据管理、主数据管理、数据标准管理、数据质检、数据资产管理、数据安全管理、数据模型管理、数据指标管理)
4.数据产品.数据开发平台(离线开发、实时开发、指标开发、标签开发)
5.数据产品.数据智能CDP平台(数据采集、数据仓库、指标管理、数据开发、数据分析、标签开发、自动化运营平台)
6.数据产品.数据智能DMP平台:(数据管理、数据开发、标签开发、标签圈选、自动化运营平台)
7.数据产品.数据分析与挖掘(BI分析、统计分析、机器学习)
8.数据产品.BI与数据可视化(可视化、BI分析方法、BI产品选择、BI平台从0到1,仪表板、报表、填报、数据报告、大屏)
9.数据产品.隐私计算(多方安全计算、联邦学习、可信执行环境)
产品人栖息地助你 产品职业成长,挑战百万年薪!