OneSQL OLAP实践问题之BIGO ClickHouse实现二阶段提交事务机制如何解决

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: OneSQL OLAP实践问题之BIGO ClickHouse实现二阶段提交事务机制如何解决

问题一:在处理流维表JOIN时,面对Hive大维表导致的OOM问题,采取了哪些优化措施?


在处理流维表JOIN时,面对Hive大维表导致的OOM问题,采取了哪些优化措施?


参考回答:

"为了处理Hive大维表导致的OOM问题,我们采取了以下优化措施:

Hive维表Hash分片:将Hive大维表按照Join Key进行Hash分片,通过Hash函数计算后分布到Flink作业的不同并行子任务的HashMap中。这样,每个HashMap只存放大维表的一部分数据,通过增加作业的并行度,可以将大维表的数据拆分成足够多份进行分片保存。

使用Rocksdb Map State:对于一些仍然太大的维表分片,我们使用Rocksdb Map State来保存分片数据,以进一步减少内存压力。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/666308



问题二:在Flink中将流表数据与Hive维表进行JOIN时,数据是如何被分配到对应subtask的?


在Flink中将流表数据与Hive维表进行JOIN时,数据是如何被分配到对应subtask的?


参考回答:

"在Flink中,Kafka流表中的数据在需要下发到不同的subtask上进行JOIN时,会首先通过相同的Join Key和Hash函数进行计算。这个Hash计算结果决定了数据应该被分配到哪个subtask进行JOIN操作。由于Hive维表已经按照相同的Hash函数进行了分片,因此流表中的数据可以准确地找到对应的subtask进行JOIN,从而输出JOIN后的结果。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/666309



问题三:BIGO ClickHouse是如何实现二阶段提交事务机制来支持Exactly-Once语义的?


BIGO ClickHouse是如何实现二阶段提交事务机制来支持Exactly-Once语义的?


参考回答:

"BIGO ClickHouse实现了一个二阶段提交事务机制来支持Exactly-Once语义。具体步骤如下:

临时写入:当需要写入数据到ClickHouse时,首先将数据以temporary模式写入,表示这些数据是临时的。

记录Insert ID:数据插入完成后,返回一个Insert ID,用于后续的提交操作。

批量提交:在两次checkpoint之间,可能会有多次insert操作产生多个Insert ID。当checkpoint完成时,将这些Insert ID批量提交,将临时数据转为正式数据。

Failover处理:如果作业出现Failover,Flink作业重启后会从最近一次完成的checkpoint恢复状态。对于未提交的Insert ID,会进行重试提交。而那些已经写入但Insert ID未记录的数据,由于是临时数据,会被ClickHouse的过期清理机制清理掉,从而避免数据重复。"


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/666310



问题四:BIGO实时计算平台Bigoflow主要提供了哪些功能?


BIGO实时计算平台Bigoflow主要提供了哪些功能?


参考回答:

"BIGO实时计算平台Bigoflow主要提供了以下功能:

多类型作业支持:支持Flink JAR、SQL、Python等多种类型作业,满足不同开发者的需求。

版本兼容性:支持不同的Flink版本,覆盖公司内部大部分实时计算相关业务。

一站式管理:集作业开发、提交、运行、历史展示、监控、告警于一体,便于用户随时查看作业的运行状态和发现问题。

血缘关系查询:提供血缘关系查询功能,方便用户了解每个作业的数据源、数据目的以及数据计算的来龙去脉。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/666311


问题五:Onesql OLAP 分析平台在公司内部主要用于哪些类型的查询?


Onesql OLAP 分析平台在公司内部主要用于哪些类型的查询?


参考回答:

Onesql OLAP 分析平台在公司内部主要应用于 AdHoc 查询。用户通过 Hue 页面提交的 SQL 查询,由 OneSQL 后端转发给 Flink SQL Gateway,并在 Flink Session 集群上执行这些查询任务。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/666312

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
25天前
|
搜索推荐 OLAP 流计算
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
31 1
|
25天前
|
SQL 存储 OLAP
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
26 1
|
25天前
|
SQL 消息中间件 OLAP
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
37 1
|
3月前
|
存储 关系型数据库 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 多对一和多对多
【6月更文挑战第7天】该文探讨数据模型,比较了“多对一”和“多对多”关系。通过使用ID而不是纯文本(如region_id代替"Greater Seattle Area"),可以实现统一、避免歧义、简化修改、支持本地化及优化搜索。在数据库设计中,需权衡冗余和范式。文档型数据库适合一对多但处理多对多复杂,若无Join,需应用程序处理。关系型数据库则通过外键和JOIN处理这些关系。文章还提及文档模型与70年代层次模型的相似性,层次模型以树形结构限制了多对多关系处理。为克服层次模型局限,发展出了关系模型和网状模型。
43 6
|
3月前
|
XML NoSQL 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 概念 + 数据模型
【6月更文挑战第5天】本文探讨了数据模型的分析,关注点包括数据元素、关系及不同类型的模型(关系、文档、图)与Schema模式。查询语言的考量涉及与数据模型的关联及声明式与命令式编程。数据模型从应用开发者到硬件工程师的各抽象层次中起着简化复杂性的关键作用,理想模型应具备简洁直观和可组合性。
27 2
|
3月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
36 0
|
3月前
|
SQL JSON NoSQL
【DDIA笔记】【ch2】 数据模型和查询语言 -- 关系模型与文档模型
【6月更文挑战第6天】关系模型是主流数据库模型,以二维表形式展示数据,支持关系算子。分为事务型、分析型和混合型。尽管有其他模型挑战,如网状和层次模型,但关系模型仍占主导。然而,随着大数据增长和NoSQL的出现(如MongoDB、Redis),强调伸缩性、专业化查询和表达力,关系模型的局限性显现。面向对象编程与SQL的不匹配导致“阻抗不匹配”问题,ORM框架缓解但未完全解决。文档模型(如JSON)提供更自然的嵌套结构,适合表示复杂关系,具备模式灵活性和更好的数据局部性。
38 0
|
3月前
|
敏捷开发 存储 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可维护性
【6月更文挑战第4天】本文探讨了Twitter面临的一次发推文引发的巨大写入压力问题,指出用户粉丝数分布是决定系统扩展性的关键因素。为解决此问题,Twitter采用混合策略,大部分用户推文扇出至粉丝主页时间线,而少数名人推文则单独处理。性能指标包括吞吐量、响应时间和延迟,其中高百分位响应时间对用户体验至关重要。应对负载的方法分为纵向和横向扩展,以及自动和手动调整。文章强调了可维护性的重要性,包括可操作性、简单性和可演化性,以减轻维护负担和适应变化。此外,良好设计应减少复杂性,提供预测性行为,并支持未来改动。
40 0
|
3月前
|
缓存 关系型数据库 数据库
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可扩展性
【6月更文挑战第3天】可扩展性关乎系统应对负载增长的能力,但在产品初期过度设计可能导致失败。理解基本概念以应对可能的负载增长是必要的。衡量负载的关键指标包括日活、请求频率、数据库读写比例等。推特的扩展性挑战在于"扇出",即用户关注网络的广度。两种策略包括拉取(按需查询数据库)和推送(预计算feed流)。推送方法在推特案例中更为有效,因为它减少了高流量时的实时计算压力。
39 0
|
3月前
|
存储 消息中间件 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- part1 可靠性
【6月更文挑战第2天】本书探讨现代数据系统,阐述其在信息社会中的关键作用,包括数据库、缓存、搜索引擎、流处理、批处理和消息队列等组成部分。随着技术发展,工具如Kafka、Spark和Redis等多功能组件使得系统设计更为复杂。面对可靠性、可扩展性和可维护性的挑战,书中强调了容错和韧性的重要性,区分了硬件故障、软件错误和人为错误,并提出了应对措施。可靠性关乎用户数据、企业声誉和生存,因此是系统设计的核心考量。
41 0