这是我参与「第四届青训营 」笔记创作活动的第1天。
本次参加字节青训营的方向是大数据方向,和队友们选择了第二个作业:简易流计算系统设计作为大项目实践。接下来计划分享一些项目过程中的知识学习和梳理,包括但不限于流计算、RPC、Flink等内容。
流计算背景
诞生背景:大数据。5V: Volume(大量)、Velocity(快速)、Variety(多样)、Veracity(真实)和Value(价值)。
为什么需要流式计算:大数据时代,新数据不断产生,数据的价值在实时的处理和反应中体现。 常见场景:
- 监控:业务关键指标、发现故障、优化成本、发现商机……
- 金融风控:用户信用、欺诈风险…… 实时的处理提升用户体验,降低损失
- 推荐:音乐、新闻、购物…… 发掘用户的兴趣偏好
实时流数据的特点
有实时性、随机性、无序性和无限性。
- 实时性:抢占先机,提前预警,避免可能的损失。
- 随机性:真实事件的发生不可预测,数据的到来存在高峰和低谷。
- 无序性:异步、并发、网络延时、时间不同步和系统故障等使数据难以数据严格有序,因此常使用局部时间窗口。
- 无限性:数据总在产生,数据量随时间无限增长
大数据计算架构的演变
大数据计算架构:传统(数仓)—>Hadoop(分布式,Map-Reduce)—>Spark(内存迭代计算,高阶API)—>Flink(流计算,实时性,流批一体)
批式计算与流式计算的区别:
- 批式计算:非及时,要等一批数据到来再统一处理
- 流式计算:流数据,实时处理
实时流计算架构
5个部分:数据采集、数据传输、数据处理、数据存储、数据展示。
数据处理是流计算系统的核心。项目的主要任务也是能够实现流数据的处理。
数据处理的目标可以分为4类:数据转化、指标统计、模式匹配以及模型学习和预测。DAG 图(Directed Acyclic Graph,有向无环图)常常被用于来描述流计算过程。