Hologres+Flink实时数仓详解

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本次内容将会介绍使用Flink和Hologres,实现可扩展的、高效的、云原生实时数仓。

点击免费下载
《实时数仓技术入门一本通》>>>

test

也可在PC端打开 https://developer.aliyun.com/topic/download?id=961 下载

一、Hologres生态

从前面几篇的内容,相信大家已经了解到Hologres是一款兼容PostgreSQL协议的实时交互式分析产品。在生态的兼容性上,Hologres有着非常庞大的生态家族,如下图所示,

  • 对于开源大数据领域,Hologres支持当下最流行的大数据开源组件,其中包括
  • 对于埋点类数据,支持Blink/Flink/Spark/数据集成等大数据工具进行高性能的实时导入和批量导入
  • 对于数据库类的数据,通过和Dataworks数据集成(DataX和StreamX)共建实现方便高效的数据库整库实时镜像到Hologres中,并满足金融企业对可管理性、监控、网络等的需求

无论是实时数据,还是离线数据接入Hologres之后,接下来就能使用Hologres对数据进行分析。最常见的就是使用JDBC或者ODBC对数据进行查询、分析、监控,然后承接上游的业务,比如说大屏、报表、应用等各种场景。
 image.png
 
同时再为大家介绍一下DataWorks,它是阿里云的一个数据开发平台,提供了数据集成、数据地图、数据服务等功能。数据集成主要功能可以将数据库的数据导入Hologres,其中同步的方式包括离线同步和实时同步,离线同步支持几十种异构数据源同步至Hologres,而实时同步当前主要支持以下几种:

  • Mysql Binlog:通过订阅Biblog的方式将mysql数据实时写入Hologres
  • Oracle CDC:全称是Change Data Capture,也是一个类似Mysql Binlog的用来获取Oracle表change log的方式
  • Datahub:是阿里巴巴自研的一个分布式高性能消息队列,值得一提的是,Datahub自身也提供了直接将数据实时导入至Hologres的功能,无需经过Dataworks
  • PolarDB:是阿里巴巴自主研发的关系型分布式云原生数据库

image.png
 

二、Hologres实时导入接口介绍

接下来为大家介绍一下Hologres提供的一个实时导入的接口,以及接口的技术原理。

 1)实时导入接口

Hologres实时导入接口的具备以下特性:

  • 行存&列存都支持
  • 支持根据主键去重 (Exactly once)
  • 支持整行数据局部更新
  • 导入即可见,毫秒级延迟
  • 单Core 2W+ RPS (TPCH PartSupp表)
  • 性能随资源线性扩展
  • 支持分区表写入

 2)实时导入原理

实时导入的原理如下图所示,首先我们看一下该图的最上面的几个节点,代表了数据的上游,也就是业务层。如何将数据导入Hologres,主要有两种场景:

  • 使用SQL进行数据的导入(最常见)

例如使用JDBC执行insert语句,该insert语句会经过一个负载均衡服务器路由分发至我们的Frontend节点,对该insert语句进行SQL的解析优化,然后生成一个优化后的执行计划,并将该执行计划分发至后端的worker节点。worker节点收到该执行计划之后,就会将该数据完成写入。

  • Connector写入

另外一条链路为左边的Private API链路,也就是当前Apache Flink或者Apache Spark Connector所使用的Hologres的实时导入接口。该Private API提供的数据接口和普通sql请求不一样,而是我们称之为Fixed Plan的请求接口,这些请求被分发至负载均衡服务器之后,负载均衡服务器会将数据路由分发至一个叫做Private API Service的节点。该节点将数据写入请求分发至worker节点,也就是后端的节点。当worker节点收到,无论是Fixed Plan,还是执行计划之后,会对数据进行持久化,最终数据完成写入。
image.png
 
接着来更进一步理解Private API Service的一个数据分发功能。如下图所示,一张表的数据分布在多个Shard上,一条记录只会属于一个Shard,根据Distribution key属性进行Hash。
image.png
当实时写入的数据请求到达后端的worker节点之后,worker节点是怎么处理的。如下图所示,这一块有如下特点:

  • Log Structured Merge Tree(LSM)
  • 全异步框架,协程(Coroutine)
  • 基于Masstree的Memtable

image.png
同时上面也提到通过SQL来进行数据的写入是最常见的场景,Hologres也在后端优化了整个SQL的写入链路。例如对于Insert into values,Insert into on conflict do update,Select from where pk = xxx等场景简单的SQL,Hologres会进行优化,减少SQL的解析和优化过程,提升整个数据写入和查询的性能。

三、Hologres实时读写场景

 前面介绍了Hologres通过connector写的原理,下面将会介绍Flink+Hologres最常见的写入场景。

1)实时写入场景

最常见的第一种就是实时写入场景。实时写入分为几种。

  • 第一种,Hologres的结果表没有设置主键,这样Flink实时接入就是一种Append Only的模式进行写入。当上游数据发生重复,或者Flink任务作业失败,上游数据会需要进行回溯,这时候下游数据录入到Hologres中就会产生重复的数据。这种情形对于日志型数据是比较合理的,因为用户并不需要关心数据是否需要进行去重
  • 第二种,Hologres的结果表设置了主键。Flink或者其它实时写入就会按照行的主键进行更新。主键更新的意思就是说对于相同主键的两行数据,后到的数据会完全覆盖掉之前已经到达的数据。
  • 第三种,是按照主键去重。就是说后到的数据会被忽略掉,只保留最早到的一条记录。这种场景用户并不关心主键的更新情况,只需要保证主键的去重。

 2)宽表Merge场景

例如一个用户的结果表有非常多的字段,会有上百列,而该表的许多字段可能同时分布在不同的数据上游,例如,Column C和D分布在一个kafka的topic A上面,Column E和F分布在kafka的topic B上面,用户希望消费两个kafka topic,并将数据merge成Hologres的一张结构表。最常见的解决办法是,进行流场景的一个双流Join。这种实现对于开发人员来说相对比较复杂,需要实现一个双流Join,而且理论上来说会对计算资源要求非常大,也加剧了运维人员的负担。
 image.png
 
而Hologres针对这种场景是如何实现的呢?
Hologres支持局部更新的功能。如下图所示,按照这种实现方式,只需要两个流各自写入Hologres结果表。第一个流消费ABCD四个字段,将数据写入到最终的结果表中。第二个流消费ABEF四个字段,最终将数据写入到结果表,并不需要进行双流的Join,最终Hologres会自己进行一个数据的组装。第一个流写入ABCD的时候并不会去更新已经存在的EF字段,同样,第二个流写入ABEF字段的时候,C和D字段已经存在,不会被更新,最终达到完整的一个数据Merge的功能。使用这种功能,可以大大提升流作业的开发效率,以及减少流作业所需要的资源消耗,也能够更容易的维护各个流作业。
 image.png

 3)实时维表Join场景

除了写场景,Hologres也支持读场景,最常见的是使用Hologres的行存表来进行点查。如下图所示,是一个实时维表的Join场景。主要逻辑是生成一个数据源,会不停的生成一个数据流,和Hologres的维表进行Join,打宽数据流,最终将数据写入到一个结果表中。在实际业务中,这种使用场景通常会用来替换HBase,以达到更好的性能和更低的成本。
 image.png
 4)Hologres Binlog场景
如下图所示,以消息队列方式读取Hologres数据的Change log。 其中:

  • Binlog系统字段,表示Binlog序号,Shard内部单调递增不保证连续,不同Shard之间不保证唯一和有序
  • Binlog系统字段,表示当前 Record 所表示的修改类型
  • UPDATE操作会产生两条Binlog记录,一条更新前,一条更新后的。订阅Binlog功能会保证这两条记录是连续的且更新前的Binlog记录在前,更新后的Binlog记录在后

image.png
 
 

相关文章
|
27天前
|
存储 消息中间件 OLAP
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
本文整理自淘天集团高级数据开发工程师朱奥在Flink Forward Asia 2024的分享,围绕实时数仓优化展开。内容涵盖项目背景、核心策略、解决方案、项目价值及未来计划五部分。通过引入Paimon和Hologres技术,解决当前流批存储不统一、实时数据可见性差等痛点,实现流批一体存储与高效近实时数据加工。项目显著提升了数据时效性和开发运维效率,降低了使用门槛与成本,并规划未来在集团内推广湖仓一体架构,探索更多技术创新场景。
595 2
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
|
2月前
|
消息中间件 存储 监控
Lalamove基于Flink实时湖仓演进之路
本文由货拉拉国际化技术部资深数据仓库工程师林海亮撰写,围绕Flink在实时数仓中的应用展开。文章首先介绍了Lalamove业务背景,随后分析了Flink在实时看板、数据服务API、数据监控及数据分析中的应用与挑战,如多数据中心、时区差异、上游改造频繁及高成本问题。接着阐述了实时数仓架构从无分层到引入Paimon湖仓的演进过程,解决了数据延迟、兼容性及资源消耗等问题。最后展望未来,提出基于Fluss+Paimon优化架构的方向,进一步提升性能与降低成本。
153 11
Lalamove基于Flink实时湖仓演进之路
|
2月前
|
存储 监控 数据挖掘
京东物流基于Flink & StarRocks的湖仓建设实践
本文整理自京东物流高级数据开发工程师梁宝彬在Flink Forward Asia 2024的分享,聚焦实时湖仓的探索与建设、应用实践、问题思考及未来展望。内容涵盖京东物流通过Flink和Paimon等技术构建实时湖仓体系的过程,解决复杂业务场景下的数据分析挑战,如多维OLAP分析、大屏监控等。同时,文章详细介绍了基于StarRocks的湖仓一体方案,优化存储成本并提升查询效率,以及存算分离的应用实践。最后,对未来数据服务的发展方向进行了展望,计划推广长周期数据存储服务和原生数据湖建设,进一步提升数据分析能力。
241 1
京东物流基于Flink & StarRocks的湖仓建设实践
|
3月前
|
存储 缓存 数据挖掘
Flink + Doris 实时湖仓解决方案
本文整理自SelectDB技术副总裁陈明雨在Flink Forward Asia 2024的分享,聚焦Apache Doris与湖仓一体解决方案。内容涵盖三部分:一是介绍Apache Doris,一款高性能实时分析数据库,支持多场景应用;二是基于Doris、Flink和Paimon的湖仓解决方案,解决批流融合与数据一致性挑战;三是Doris社区生态及云原生发展,包括存算分离架构与600多位贡献者的活跃社区。文章深入探讨了Doris在性能、易用性及场景支持上的优势,并展示了其在多维分析、日志分析和湖仓分析中的实际应用案例。
273 17
Flink + Doris 实时湖仓解决方案
|
3月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
395 1
Flink CDC + Hologres高性能数据同步优化实践
|
3月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
104 4
|
消息中间件 SQL 监控
Flink+Hologres亿级用户实时UV精确去重最佳实践
Flink+Hologres亿级用户实时UV精确去重最佳实践
2192 0
Flink+Hologres亿级用户实时UV精确去重最佳实践
|
9月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
7月前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
2698 73
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
zdl
|
7月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
321 56

相关产品

  • 实时数仓 Hologres