流计算中的window计算|青训营笔记

134 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第3天. 1、概述流式计算跟批计算,以及实时数仓和离线数仓的区别; 答:流式计算与批计算:大数据的计算模式主要分为批量计算(batch computing)、流式计算(stream computing)、交互计算(interactive computing)、图计算(graph computing)等。其中,流式计算和批量计算是两种主要的大数据计算模式,分别适用于不同的大数据应用场景。 流数据(或数据流)是指在时间分布和数量上无限的一系列动态数据集合体,数据的价值随着时间的流逝而降低,因此必须实时计算给出秒级响应。流式计算,顾名思义,就是对数据流进行处理,是实时计算。批量计算则统一收集数据,存储到数据库中,然后对数据进行批量处理的数据计算方式。主要体现在以下几个方面: 1)数据时效性不同:流式计算实时、低延迟, 批量计算非实时、高延迟。 2)数据特征不同:流式计算的数据一般是动态的、没有边界的,而批处理的数据一般则是静态数据。 3)应用场景不同:流式计算应用在实时场景,时效性要求比较高的场景,如实时推荐、业务监控...批量计算一般说批处理,应用在实时性要求不高、离线计算的场景下,数据分析、离线报表等。 4)运行方式不同,流式计算的任务持续进行的,批量计算的任务则一次性完成。 实时数仓和离线数仓的区别:离线数仓,一般地,(业务、日志)数据存储在 HDFS 上,一般分这几层:ods/dwd/dws/dm,其中dm层的数据会导出到olap、rds、kv 数据库中供业务方使用。ad-hoc查询的数据来源一般来自ods层或dw层,ad-hoc的查询引擎为hive/spark/presto。 实时数仓,也是基于分层的模型ods/dwd/dws/,业务数据和日志数据,事实数据存储在 kafka 中,维度数据存储在 Hbase/Tair 中,dm 层的数据最终导出到 mq/olap/rds/kv 中。ad-hoc  查询基于 Flink 来做。(都是流动的数据)实时数仓的存储需考虑支持数据重放,方便支持任务重跑。选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列,根据需求设置历史数据保存的时长,比如 Kafka,可以保存全部历史数据。