阿里云实时数仓
前言
使用阿里云现有的产品生态体系,可以解决企业自建集群复杂,难维护,部署成本高的问题。基于这些情况我们可以使用目前阿里云已有的产品进行开通,来满足企业业务需求。
目前面临痛点
1、底层数据库无法承载海量数据,根据后续企业发展,10T,100T,以及PB,EB数据量无法承载,以及无法支撑快速查询响应,数据分析以及数据挖掘等工作。
2、实时计算性能存在一定不足,需要通过可靠计算引擎进行毫秒级实时计算,并且数据质量可靠,可控,可遥测。
3、数据模型调整效率不够快速,不能够非常灵活的调整数据模型结构,快速的提供业务场景报表需求。
应用场景
实时数仓
总体数据开发流程
数据拉取->数据缓冲->实时计算->下沉落库
组件选型
Flink
阿里云全托管Flink实时计算引擎,免去企业自建Yarn,Flink等节点以及繁琐配置,主要对 Datahub 消息总线中的业务数据进行处理计算,根据数据的业务场景合理下发后续数据。使用阿里云生态,元数据管理更加便利。
Datahub
Datahub 的作用相当于数据缓冲层,对实时数据流提供高性能的存储与流传输。在 Flink 计算中途的部分 DWD,DWS层临时数据以及下游数据进行任务转发与存储,达到消息总线作用。topic 单日读写可达T级数据量,提供数据流转更高效,稳定的处理,此组件也是全托管,无需关注节点数量。
Hologres
在 Flink 计算完成之后,对应层级数据输出下沉到 Hologres 数仓中,Hologres 可支持行存,列存,以及字段匹配分区存储,解决海量数据存储问题,并实现了PB级数据亚秒级分析。Hologres 的存储使用的是阿里自研的Pangu分布式文件系统(类似HDFS),本身架构属于大数据数仓设计体系,整体采用 Storage Disaggregation(存储计算分离架构)计算节点可以进行横向扩展,提高并行计算能力,解决海量数据查询实效问题。
处理流程
数仓分层
在大数据领域,ODS、DWD、DWS和ADS是常见的数据分层概念,用于组织和管理数据。它们在数据处理和使用方面具有不同的功能和目的。
- ODS(Operational Data Store,运营数据存储层):ODS层是一个面向操作性业务的数据存储层。它通常用于存储源系统的原始数据,保留了数据的完整性和详细性。ODS层的主要目标是支持实时或准实时的操作性需求,例如在线交易处理和实时查询。ODS层的数据通常不进行大规模加工和计算,而是直接用于操作性业务。
- DWD(Data Warehouse Detail,数据仓库明细层):DWD层是一个面向数据仓库的数据存储层。它用于存储经过清洗、集成和转换的数据,通常是面向主题的、可查询的数据。DWD层的数据经过ETL(抽取、转换和加载)处理,用于支持数据分析、报表和决策支持等任务。DWD层的数据具有较高的质量和一致性,并且通常以事实表和维度表的形式组织。
- DWS(Data Warehouse Summary,数据仓库汇总层):DWS层是一个面向数据仓库的数据存储层。它用于存储经过聚合、汇总和预计算的数据,以提供更高层次的数据摘要和分析性能。DWS层的数据通常以汇总表或预计算的指标为主,用于支持复杂的数据分析、数据挖掘和业务智能需求。
- ADS(Application Data Service,应用数据服务层):ADS层是一个面向应用程序的数据存储层。它用于存储经过进一步加工、计算和优化的数据,以满足特定应用程序的需求。ADS层的数据通常是针对具体应用程序的数据视图或数据集,经过适配和优化,以提供更高效的数据访问和处理能力。
这些数据分层的区别在于数据的处理方式、目标和使用场景。ODS层主要用于操作性业务,保留原始数据的完整性;DWD层用于数据仓库,提供清洗、集成和转换后的可查询数据;DWS层用于数据仓库的汇总和预计算,提供更高层次的数据摘要和性能;ADS层用于特定应用程序,提供经过加工、计算和优化的数据。
这种分层的设计有以下几个原因和好处:
- 数据处理和管理的分离:通过将数据分为不同的层次,可以将数据处理和管理的责任分离开来。DWD 层负责原始数据的提取、清洗和集成,DWS 层负责数据的聚合和汇总,而 ADS 层则提供面向应用的数据服务。这样可以实现数据处理的模块化和灵活性。
- 数据质量和一致性:DWD 层保留了原始数据的完整性和细节,可以用于数据质量分析和数据溯源。DWS 层提供了经过聚合和汇总的数据,可以提供更高效的查询性能和数据分析。ADS 层提供了面向应用的数据服务,保证了数据在不同应用场景下的一致性和准确性。
- 查询性能和应用开发效率:通过将数据进行汇总和预计算,DWS 层可以提供更高效的查询性能,加快数据分析和决策过程。ADS 层提供了面向应用的数据服务和接口,可以简化应用开发过程,提高开发效率和灵活性。