searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

天翼云大数据平台 翼MapReduce助力构建企业级实时数仓新篇章

2023-07-10 09:03:05
36
0

大数据平台翼MapReduce数据分析服务采用了MPP架构、预聚合技术、向量化执行引擎和列式存储,提供极致查询性能。支持多种数据模型,通过数据建模、视图、物化视图、Rollup构建实时数仓。支持海量数据实时写入、更新、加工和分析,能够满足企业对多维报表、实时大屏、即席分析、联邦查询、人工智能和替换传统数仓数据集市场景的不同需求。提供企业级离在线一体化全栈数仓解决方案。

业务痛点

随着大数据应用的不断深入,企业不在满足于离线数据加工计算的时效,满足实时数据处理和分析需求已经成为企业关注的重点目标。伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高、实时性无法保证、组件繁冗、运维难度高等问题日益凸显。为了适应业务快速迭代的特点,帮助企业提升数据生产和应用的时效性、进一步挖掘实时数据价值,实时数仓的构建至关重要。

 

实时数仓方案

大数据平台翼MapReduce数据分析服务采用了MPP架构、预聚合技术、向量化执行引擎和列式存储,提供极致查询性能。支持多种数据模型,通过数据建模、视图、物化视图、Rollup构建实时数仓。支持海量数据实时写入、更新、加工和分析,能够满足企业对多维报表、实时大屏、即席分析、联邦查询、人工智能和替换传统数仓数据集市场景的不同需求。提供企业级离在线一体化全栈数仓解决方案。

 

 

方案优势

便捷导入:提供多种导入方式,支持多种业务场景和丰富数据源。流批一体,与Flink原生集成实现离线批量数据和实时流式数据高效导入,秒级实时性保证。

极致性能:全新的向量化执行引擎,强大的 MPP 执行框架,支持星型模型和雪花模型,仅需亚秒级响应时间即可返回海量数据下的查询结果。深入计算核心CPU指令集软硬协同,性能提升60%。

数据安全:支持资源隔离、行列级权限和多租户场景,确保非授权用户看不到拿不走。

 

高可用和高可靠:数据和元数据默认3副本存储,在少数节点宕机的情况下,依然可以保证数据的可靠性。节点支持横向扩展,操作便捷。

联邦加速:通过多源数据目录功能,便捷对接外部数据目录,增强数据湖分析和联邦数据查询能力。性能相比Trino有3倍提升,相比Hive有10倍以上提升。

 

 

极简运维:整体架构简单,易用易维。通过界面控制台一键式任务部署,任务执行过程中全程实时交互。满足90%日常运维场景,弹性扩容,运维简单高效。

 

数据模型

支持Aggregate、Unique、Duplicate3中数据模型,应对用户不同的业务场景。

数据以关系表(Table)的形式进行呈现,会依次按照先分区(Partition)、再分桶(Bucket)的方式划分,最终在同一个分桶中的数据会形成数据分片(Tablet)。Tablet 是多副本高可用、集群间数据调度与均衡的最小物理存储单位。

 

Aggregate KEY 聚合模型

Key列一致的数据行按照设置的聚合函数对value列进行聚合。通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,非常适合有固定模式的报表类查询场景,例如统计用户的访问总时长、总次数;广告页面点击的总流量、展示总量、消费统计等指标。

示例

建表语句

基础数据

用户ID

日期

消费金额

1

2023-05-01

1000

2

2023-05-01

500

新增数据

用户ID

日期

消费金额

1

2023-05-01

300

3

2023-05-05

200

结果数据

用户ID

日期

消费金额

1

2023-05-01

1300

2

2023-05-01

500

3

2023-05-05

200

 

Unique Key 主键模型

满足对数据更新和数据全局唯一性有去重的需求。支持merge on wirte语义,数据在导入阶段就会去将被覆盖和被更新的数据进行标记删除,同时将新的数据写入新的文件。在查询的时候,所有被标记删除的数据都会在文件级别被过滤掉,读取出来的数据就都是最新的数据,消除掉了读时合并中的数据聚合过程,并且能够在很多情况下支持多种谓词的下推。因此在许多场景都能带来比较大的性能提升,尤其是在有聚合查询的情况下。

示例

建表语句

基础数据

用户ID

昵称

性别

年龄

电话

1

Allen

25

165****0000

2

Belle

30

176****9765

新增数据

用户ID

昵称

性别

年龄

电话

1

AAA

25

180****1111

3

Cara

33

189****6555

结果数据

用户ID

昵称

性别

年龄

电话

1

AAA

25

180****1111

2

Belle

30

176****9765

3

Cara

33

189****6555

 

Duplicate Key 明细模型

在某些多维分析场景下,数据既没有主键,也没有聚合需求,Duplicate模型满足这种需求。数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的 DUPLICATE KEY,只是用来指明底层数据按照那些列进行排序。支持merge on wirte语义。适合任意维度的 Ad-hoc 查询。如日志分析,用户行为分析等场景。

示例

建表语句

基础数据

用户ID

日期

操作行为

1

2023-05-01

浏览

1

2023-05-02

购买

新增数据

用户ID

日期

操作行为

1

2023-05-02

收藏

结果数据

用户ID

日期

操作行为

1

2023-05-01

浏览

1

2023-05-02

购买

1

2023-05-02

收藏

 

数据导入

提供多种数据导入方案,可以针对不同的数据源进行选择不同的数据导入方式。

不仅支持对象存储、HDFS、Hive等离线数据的导入,也支持MySQL、PostgreSQL、Oracle、SQLServer、TeleDB、TelePG等JDBC协议的实时数据导入。

 

数据的增量与全量同步

 

通过Flink CDC实现MySQL、Oracle、teleDB、telePG等数据的全量数据和增量的同步。Flink CDC 实现了基于 Snapshot 的全量数据同步、基于 BinLog 的实时增量数据同步,全量数据同步和增量数据同步可以自动切换。在数据迁移的过程中,只需要配置好同步的表即可。当 Flink 任务启动时,优先进行历史表的数据同步,同步完后自动切换成实时同步。

通过 Flink Checkpoint 机制结合  Stream Load两阶段提交(2PC)可以实现数据处理端到端的 Exactly Once 语义,保障数据不丢不重。

Light Schema Change

对数据表的加减列操作,不再需要同步更改数据文件,仅需在 FE 中更新元数据即可,从而实现毫秒级的 Schema Change 操作,且存在导入任务时效率的提升更为显著。与此同时,在面对上游数据表维度变化时,可以更加快速稳定实现表结构同步,保证系统的高效且平稳运转。如用户可以通过 Flink CDC,可实现上游数据库的 DML 和 DDL 同步,进一步提升了实时数仓数据处理和分析链路的时效性与便捷性。

查询加速

核心技术

存储引擎:采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源。

查询引擎:采用 MPP 模型,节点间和节点内都并行执行,也支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询;支持向量化查询引擎,所有的内存结构能够按照列式布局,能够达到大幅减少虚函数调用、提升 Cache 命中率,高效利用 SIMD 指令的效果。在宽表聚合场景下性能是非向量化引擎的 5-10 倍。

 

在MPP分布式计算引擎中,JOIN计算是最复杂的。而分布式JOIN主要依赖中间计算阶段数据的shuffle。当前支持 4 种 Shuffle 方式。

 

优化器: CBO 和 RBO 结合的优化策略,RBO 支持常量折叠、子查询改写、谓词下推等,CBO 支持 Join Reorder。

 

智能物化视图

物化视图是预先计算好的数据集,是一种以空间换时间的数据分析加速技术。对于那些经常重复的使用相同的子查询结果的查询性能大幅提升。支持创建多表JOIN的物化视图。无论是新数据的导入,还是删除操作都能保证 Base 表和物化视图表的数据一致性,无需任何额外的人工维护成本物化视图创建成功后,用户的查询不需要发生任何改变,还是查询的 Base 表。系统根据当前查询的语句去自动选择一个最优的物化视图,从物化视图中读取数据并计算。

分区和分桶

支持两级分区存储, 第一层为分区(partition),目前支持 RANGE 分区和 LIST 分区两种类型, 第二层为 HASH 分桶(bucket)。

分区用于将数据划分成不同区间, 逻辑上可以理解为将原始表划分成了多个子表。可以方便的按分区对数据进行管理,例如,删除数据时,更加迅速。

分桶根据hash值将数据划分成不同的 bucket。

通常按照时间对数据进行分区,再按照分桶将一个分区的数据hash到不同的bucket,从而实现数据的快速定位,支持高并发场景下的极速查询。

丰富的索引支持

支持丰富的索引类型,适用不同业务场景,帮助快速过滤或查找数据。

前缀索引:在排序的基础上快速定位数据。

Zone Map 索引:维护列中 min/max/null 信息

Bloom Filter 索引:快速判断元素是否属于集合

NGram BloomFilter索引:提升字符串列like的查询性能

Bitmap 索引:通过 Bitmap 加速去重、交并查询

Invert 倒排索引:支持文本类型的全文检索、普通数值日期类型的等值范围查询,快速从海量数据中过滤出满足条件的行

 

数仓构建

为了便于对数据进行规划管理,我们建议将数据仓库分层如下:

数据应用层(ADS,Application Data Service):通常采用聚合模型或在Base表上创建Rollup或物化视图进行数据汇聚。面向用户应用和分析需求,包括前端报表、分析图表、仪表盘、数据集市等分析

数据服务层(DWS:,Data Warehourse Service):通常采用聚合模型或在Base表上创建Rollup或物化视图进行数据汇聚。按照业务场景划分,建立汇总宽表、明细事实表,用于OLAP分析。

数据明细层(DWD,Data Warehourse Detail ):保持和ODS相同粒度,进行数据清洗和规范化操作,例如去空/脏数据,去离群值等。通过 INSERT INTO SELECT 可以完成从 ODS 到 DWD 层数据的抽取过程。

维度层(DIM,Dimension Table):通常采用Unique模型创建,可以实现写时合并(Merge-on-Write),有效提高数据实时性。基于维度建模,建立企业的一致性维度。

贴源数据层(ODS,Operation Data Store):通常采用明细模型创建,从业务系统增量抽取,可分表进行周期存储,数据不做清洗转换与业务系统数据模型保持一致

DWD-DWS/DWS-ADS

DWD、DWS、ADS通常采用聚合模型创建,或在Base表上创建Rollup或物化视图进行聚合计算,实现从DWD-DWS或DWS-ADS的数据汇聚过程。

 

0条评论
0 / 1000
张怡莹
3文章数
0粉丝数
张怡莹
3 文章 | 0 粉丝
原创

天翼云大数据平台 翼MapReduce助力构建企业级实时数仓新篇章

2023-07-10 09:03:05
36
0

大数据平台翼MapReduce数据分析服务采用了MPP架构、预聚合技术、向量化执行引擎和列式存储,提供极致查询性能。支持多种数据模型,通过数据建模、视图、物化视图、Rollup构建实时数仓。支持海量数据实时写入、更新、加工和分析,能够满足企业对多维报表、实时大屏、即席分析、联邦查询、人工智能和替换传统数仓数据集市场景的不同需求。提供企业级离在线一体化全栈数仓解决方案。

业务痛点

随着大数据应用的不断深入,企业不在满足于离线数据加工计算的时效,满足实时数据处理和分析需求已经成为企业关注的重点目标。伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高、实时性无法保证、组件繁冗、运维难度高等问题日益凸显。为了适应业务快速迭代的特点,帮助企业提升数据生产和应用的时效性、进一步挖掘实时数据价值,实时数仓的构建至关重要。

 

实时数仓方案

大数据平台翼MapReduce数据分析服务采用了MPP架构、预聚合技术、向量化执行引擎和列式存储,提供极致查询性能。支持多种数据模型,通过数据建模、视图、物化视图、Rollup构建实时数仓。支持海量数据实时写入、更新、加工和分析,能够满足企业对多维报表、实时大屏、即席分析、联邦查询、人工智能和替换传统数仓数据集市场景的不同需求。提供企业级离在线一体化全栈数仓解决方案。

 

 

方案优势

便捷导入:提供多种导入方式,支持多种业务场景和丰富数据源。流批一体,与Flink原生集成实现离线批量数据和实时流式数据高效导入,秒级实时性保证。

极致性能:全新的向量化执行引擎,强大的 MPP 执行框架,支持星型模型和雪花模型,仅需亚秒级响应时间即可返回海量数据下的查询结果。深入计算核心CPU指令集软硬协同,性能提升60%。

数据安全:支持资源隔离、行列级权限和多租户场景,确保非授权用户看不到拿不走。

 

高可用和高可靠:数据和元数据默认3副本存储,在少数节点宕机的情况下,依然可以保证数据的可靠性。节点支持横向扩展,操作便捷。

联邦加速:通过多源数据目录功能,便捷对接外部数据目录,增强数据湖分析和联邦数据查询能力。性能相比Trino有3倍提升,相比Hive有10倍以上提升。

 

 

极简运维:整体架构简单,易用易维。通过界面控制台一键式任务部署,任务执行过程中全程实时交互。满足90%日常运维场景,弹性扩容,运维简单高效。

 

数据模型

支持Aggregate、Unique、Duplicate3中数据模型,应对用户不同的业务场景。

数据以关系表(Table)的形式进行呈现,会依次按照先分区(Partition)、再分桶(Bucket)的方式划分,最终在同一个分桶中的数据会形成数据分片(Tablet)。Tablet 是多副本高可用、集群间数据调度与均衡的最小物理存储单位。

 

Aggregate KEY 聚合模型

Key列一致的数据行按照设置的聚合函数对value列进行聚合。通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,非常适合有固定模式的报表类查询场景,例如统计用户的访问总时长、总次数;广告页面点击的总流量、展示总量、消费统计等指标。

示例

建表语句

基础数据

用户ID

日期

消费金额

1

2023-05-01

1000

2

2023-05-01

500

新增数据

用户ID

日期

消费金额

1

2023-05-01

300

3

2023-05-05

200

结果数据

用户ID

日期

消费金额

1

2023-05-01

1300

2

2023-05-01

500

3

2023-05-05

200

 

Unique Key 主键模型

满足对数据更新和数据全局唯一性有去重的需求。支持merge on wirte语义,数据在导入阶段就会去将被覆盖和被更新的数据进行标记删除,同时将新的数据写入新的文件。在查询的时候,所有被标记删除的数据都会在文件级别被过滤掉,读取出来的数据就都是最新的数据,消除掉了读时合并中的数据聚合过程,并且能够在很多情况下支持多种谓词的下推。因此在许多场景都能带来比较大的性能提升,尤其是在有聚合查询的情况下。

示例

建表语句

基础数据

用户ID

昵称

性别

年龄

电话

1

Allen

25

165****0000

2

Belle

30

176****9765

新增数据

用户ID

昵称

性别

年龄

电话

1

AAA

25

180****1111

3

Cara

33

189****6555

结果数据

用户ID

昵称

性别

年龄

电话

1

AAA

25

180****1111

2

Belle

30

176****9765

3

Cara

33

189****6555

 

Duplicate Key 明细模型

在某些多维分析场景下,数据既没有主键,也没有聚合需求,Duplicate模型满足这种需求。数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的 DUPLICATE KEY,只是用来指明底层数据按照那些列进行排序。支持merge on wirte语义。适合任意维度的 Ad-hoc 查询。如日志分析,用户行为分析等场景。

示例

建表语句

基础数据

用户ID

日期

操作行为

1

2023-05-01

浏览

1

2023-05-02

购买

新增数据

用户ID

日期

操作行为

1

2023-05-02

收藏

结果数据

用户ID

日期

操作行为

1

2023-05-01

浏览

1

2023-05-02

购买

1

2023-05-02

收藏

 

数据导入

提供多种数据导入方案,可以针对不同的数据源进行选择不同的数据导入方式。

不仅支持对象存储、HDFS、Hive等离线数据的导入,也支持MySQL、PostgreSQL、Oracle、SQLServer、TeleDB、TelePG等JDBC协议的实时数据导入。

 

数据的增量与全量同步

 

通过Flink CDC实现MySQL、Oracle、teleDB、telePG等数据的全量数据和增量的同步。Flink CDC 实现了基于 Snapshot 的全量数据同步、基于 BinLog 的实时增量数据同步,全量数据同步和增量数据同步可以自动切换。在数据迁移的过程中,只需要配置好同步的表即可。当 Flink 任务启动时,优先进行历史表的数据同步,同步完后自动切换成实时同步。

通过 Flink Checkpoint 机制结合  Stream Load两阶段提交(2PC)可以实现数据处理端到端的 Exactly Once 语义,保障数据不丢不重。

Light Schema Change

对数据表的加减列操作,不再需要同步更改数据文件,仅需在 FE 中更新元数据即可,从而实现毫秒级的 Schema Change 操作,且存在导入任务时效率的提升更为显著。与此同时,在面对上游数据表维度变化时,可以更加快速稳定实现表结构同步,保证系统的高效且平稳运转。如用户可以通过 Flink CDC,可实现上游数据库的 DML 和 DDL 同步,进一步提升了实时数仓数据处理和分析链路的时效性与便捷性。

查询加速

核心技术

存储引擎:采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源。

查询引擎:采用 MPP 模型,节点间和节点内都并行执行,也支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询;支持向量化查询引擎,所有的内存结构能够按照列式布局,能够达到大幅减少虚函数调用、提升 Cache 命中率,高效利用 SIMD 指令的效果。在宽表聚合场景下性能是非向量化引擎的 5-10 倍。

 

在MPP分布式计算引擎中,JOIN计算是最复杂的。而分布式JOIN主要依赖中间计算阶段数据的shuffle。当前支持 4 种 Shuffle 方式。

 

优化器: CBO 和 RBO 结合的优化策略,RBO 支持常量折叠、子查询改写、谓词下推等,CBO 支持 Join Reorder。

 

智能物化视图

物化视图是预先计算好的数据集,是一种以空间换时间的数据分析加速技术。对于那些经常重复的使用相同的子查询结果的查询性能大幅提升。支持创建多表JOIN的物化视图。无论是新数据的导入,还是删除操作都能保证 Base 表和物化视图表的数据一致性,无需任何额外的人工维护成本物化视图创建成功后,用户的查询不需要发生任何改变,还是查询的 Base 表。系统根据当前查询的语句去自动选择一个最优的物化视图,从物化视图中读取数据并计算。

分区和分桶

支持两级分区存储, 第一层为分区(partition),目前支持 RANGE 分区和 LIST 分区两种类型, 第二层为 HASH 分桶(bucket)。

分区用于将数据划分成不同区间, 逻辑上可以理解为将原始表划分成了多个子表。可以方便的按分区对数据进行管理,例如,删除数据时,更加迅速。

分桶根据hash值将数据划分成不同的 bucket。

通常按照时间对数据进行分区,再按照分桶将一个分区的数据hash到不同的bucket,从而实现数据的快速定位,支持高并发场景下的极速查询。

丰富的索引支持

支持丰富的索引类型,适用不同业务场景,帮助快速过滤或查找数据。

前缀索引:在排序的基础上快速定位数据。

Zone Map 索引:维护列中 min/max/null 信息

Bloom Filter 索引:快速判断元素是否属于集合

NGram BloomFilter索引:提升字符串列like的查询性能

Bitmap 索引:通过 Bitmap 加速去重、交并查询

Invert 倒排索引:支持文本类型的全文检索、普通数值日期类型的等值范围查询,快速从海量数据中过滤出满足条件的行

 

数仓构建

为了便于对数据进行规划管理,我们建议将数据仓库分层如下:

数据应用层(ADS,Application Data Service):通常采用聚合模型或在Base表上创建Rollup或物化视图进行数据汇聚。面向用户应用和分析需求,包括前端报表、分析图表、仪表盘、数据集市等分析

数据服务层(DWS:,Data Warehourse Service):通常采用聚合模型或在Base表上创建Rollup或物化视图进行数据汇聚。按照业务场景划分,建立汇总宽表、明细事实表,用于OLAP分析。

数据明细层(DWD,Data Warehourse Detail ):保持和ODS相同粒度,进行数据清洗和规范化操作,例如去空/脏数据,去离群值等。通过 INSERT INTO SELECT 可以完成从 ODS 到 DWD 层数据的抽取过程。

维度层(DIM,Dimension Table):通常采用Unique模型创建,可以实现写时合并(Merge-on-Write),有效提高数据实时性。基于维度建模,建立企业的一致性维度。

贴源数据层(ODS,Operation Data Store):通常采用明细模型创建,从业务系统增量抽取,可分表进行周期存储,数据不做清洗转换与业务系统数据模型保持一致

DWD-DWS/DWS-ADS

DWD、DWS、ADS通常采用聚合模型创建,或在Base表上创建Rollup或物化视图进行聚合计算,实现从DWD-DWS或DWS-ADS的数据汇聚过程。

 

文章来自个人专栏
大数据产品运营
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0