解析云上实时数仓的挑战与实践 | Databend @DTCC 2024 演讲回顾

8 月 22 日 ~ 24 日,由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办的第 15 届中国数据库技术大会(DTCC2024)在北京朗丽兹西山花园酒店成功召开。本次大会以“自研创新 数智未来”为主题,通过深度交流与探讨,推动数据库技术的自主创新和数智化转型。

作为一家技术领先的数据仓库服务商,Databend 也在本次大会亮相。Databend 联合创始人吴炳锡在“湖仓一体化技术”技术专场中受邀出席担任主持人,并为观众带来主题为《解析云上实时数仓的挑战与应对》的主题分享

图片

近年来,IT 技术迅猛发展,尤其是大数据领域更是日新月异。从曾经年薪百万的大数据架构师到如今被戏称为“数据搬砖”的大数据工程师,行业角色的转变令人深思。尤其是在云计算时代,大数据工程师的工作内容似乎更加琐碎,甚至让人感到难以把握。在本次交流中,吴炳锡老师深入剖析了大数据架构及实时数仓的演进与挑战,探讨如何在云环境中实现高效且低成本的数据治理与应用。以下为演讲实录:

图片

大数据技术栈经过多年演进,整个产品架构现在已经变得非常复杂,各种新技术让人眼花缭乱。从最早的 Oracle、Teradata 到 Hadoop、Kafka,再到 Spark、Flink 流批一体架构,以及现在的 ClickHouse、Hudi、Iceberg、Paimon、Trino、Implala 和各种大模型。一个企业想建设大数据平台,没几个月到半年时间可能都搞不定。

图片

那么能不能找到一个更简单的,面向云的架构?

在私有化方案中,理想架构是分布式存算一体。但到了云上,由于所有流量和流程都是要付费的,这个架构就不是很值得了。在云上,我们将元数据变成一个统一的服务,然后用 K8s 来支撑计算,实现无状态可弹性扩展,不需要还可以弹性收缩;存储用对象存储。最终实现 Pay as you Go,IT 基础架构就如同用电一样,按需付费,用多少付多少钱。

图片

技术的发展路径殊途同归,就像 SpaceX 的发动机近些年的变化一样,都是朝着简单自动化、低成本高性能、可规模化方向发展,大数据技术也经历着大道至简的发展过程。Hadoop 时代做一个大数据架构,需要各种东西,二三十个组件可能都搞不定,一出现问题动不动就要把所有东西重启一遍,架构非常复杂。之后,大家就开始简化架构,过渡到开源湖仓架构。用 Iceberg 统一开放表格式, 加上Spark、Trino 来实现。再往后面就更简单了,大数据进入湖仓一体化架构,对外是统一的 SQL 入口,直接用 SQL 的方式查询。在这个过程中,大数据架构的成本变得更低,更简单易用,同时有了更高性能的存储和高性能的计算能力。由于解决了产品结构的复杂性,用户的数据无需再多次搬家,都统一存放在对象存储里面。此外,以前的大数据里面经常会有数据丢失、数据不一致的问题,Databend 由于是从数据库切到大数据的,第一个理念就是要搞定事务,所有数据的写入必须保证完整一致性。

实时数仓架构在云上面临的挑战

进入云时代,我们发现大数据架构如果只是简单地把 Spark、Flink 搬上云,只解决了海量数据写入的问题,之后你会发现还是有很多东西满足不了,至少还需要一个 MPP 的 OLAP 数仓。但这又要涉及到数据迁移,来回的数据迁移会造成大量的数据不一致,这对于数据治理是一个非常大的挑战。数据技术栈的增多也会造成运维成本特别高。在这种架构下,数据的实时性处理非常差,数据处理的流程也比较长,数据从接入、清洗到最终提供服务,流程快的话 5 分钟就非常不错了,想缩小到分钟或者秒级,基本上不太可能。此外,技术栈一多数据加工资源占用就多,存在严重的性能问题。我们以前看到过一个项目,从 Kafka 到 ETL,再到 ClickHouse,总共200多台机器,其中 ClickHouse 大概 60 台+,Kafka + ETL的机器占用 140 台左右,整个过程非常长,占用资源很大。如此多的技术栈也很容易形成数据孤岛,使得数据散落在各处。经常有数据从数仓建设起就在里面,但从来没被用过。

另外在扩展性方面也面临比较大的问题,大量的本地盘成本可预见的顶不住。现在业界里面有个趋势是把本地盘慢慢替换成云上的对象存储,用对象存储去做数据处理。

图片

在海外有一个比较好的解决方案, Snowflake。在这个产品中,不管你的 SQL 是离线的还是实时的,基本上都可以非常方便地搞定,而且很快。它帮助用户解决了实时数仓架构在云上面临的一些挑战:

01 多账号,多 VPC 下构建一个统一的大数据分析环境

现在很多公司按部门拆分云上的账号,甚至按小组拆分,需要每个 VPC 中一套传统的方案,成本比较高,容易形成数据孤岛及增加运维复杂度。在 Snowflake 里,可以让你跨 VPC 建一个数据中心。比如说你的数据中心有中国香港区、新加坡区、美国东1区、欧洲区等,Snowflake 可以建一个统一的数据中心。同时,它还利用了对象存储本身写入不要钱,内网读取没有流量费等特点,省下来很多流量的费用。

02 云上资源闲置率高,收费项多

目前,很多企业云上的资源闲置非常高,有超过 15% 企业云上使用率都只在 10%,大家买了大量的资源,用的却非常的少,造成了大量的资源浪费。但云上其实有很多项目是收费的,比方流量费,本地盘费用等等。

03 构建副本成本高

传统大数据很难做到多区数据可用,需要大量的数据副本提升数据的可用性。如果你有大量的数据需要存储,数据副本可能会更贵。但用对象存储就会大大缓解这个痛点,AWS 的 S3,阿里云的 OSS、腾讯云的 COS 等对象存储本身就有副本,可以省出来大量构建副本的费用。

Databend 就是针对这种云上架构的特点,研发出一个真正存储一体化的大数据解决方案。它可以满足用户关于云上数仓的绝大部分需求:

图片

  • 统一 SQL 接口,SQL 为王。用户无需再单独学习一套新的语言,不论多复杂的任务,只用 SQL 就可以运行起来;

  • 支持海量数据任意字段查询及任意条件查询;

  • 集群扩缩容方便,计算秒级扩缩容;

  • 支持半结构化对象,复杂 json 处理;

  • 支持外置 UDF,复杂业务逻辑 SQL 化;

  • 基于存算分离架构,数据可以放到 S3;

  • 支持即席查询,同时支持一定量的并发,实时查询;

  • 完善的租户和权限,支持物理级别隔离;

  • 内置流的能力处理,任务调度能力;

  • 复杂任务友好出错处理机制。

如何在云上构建简单易用的大数据平台

图片

Databend 是面向云设计的数仓平台,架构上分为三部分:

第一层是元数据服务。只需要少量本次盘存储,可能 100G 都不到。但单实例可以支持几万级的库表,每秒万级的并发能力;

第二层是 Databend-Query 层这是一个无状态的计算和存储引擎管理层;最下层是存储层,使用对象存储持久化存储数据。

此外,Databend 是基于 Rust 从 0 到 1 开发出来的,这也让 Databend 占了一个特别大的优势:只要你能安装 Rust 编译器,就可以编译通过,就可以在这个环境里运行。所以我们基本实现了所有国产化平台都能运行,所有的 Arm 平台都能运行。而且 Arm 平台可以运行得更好,跑得更稳。

图片

上图是 Databend 的数据写入流程。很多企业在处理数据写入时,会大量使用到 Kafka,通过 Kafka 接收数据后把数据写入到 S3 的一个临时接入桶中。我们的很多用户没有用 Kafka,而是使用 OpenDAL 或者官方的 SDK,直接将数据往对象存储里写,写的过程中 ndjson、paruqet、CSV、ORC 等格式都可以。

数据写完后,Databend 的存算引擎会定期的,甚至秒级地利用批量加功能,把 S3 中的文件加载到 Databend 中。这里有一个比较有意思的功能,所有的 S3 都支持 notify 地址,当你的数据写到 S3 里面,它会往外发通知,你只用订阅这个通知来触发这个任务,就可以实现数据的秒级写入。比如数据每秒钟产生了 1 万个文件,Databend 基本上一秒钟也能加载进来,实现秒级的数据加载。然后数据直接对外提供服务就可以了。

如果你有非常复杂的数据清洗需求,Databend 有数据治理集群可以来处理。你可以把每个任务拆分到不同集群里,有序地进行处理。另外,Databend 内部有 stream,每张表如果有增量的话,可以借助 stream 做相应的计算。这样的话还可以把 Spark 、Flink 也能省下来。

此外,Databend 也可以按不同的业务拆分成多个业务集群,实现同一份数据对外提供服务。

图片

谈到 Databend 的时候经常说到易用性,但易用性怎么证明呢?

第一,Databend 采用全部标准化 SQL 操作。所有 Snowflake 的函数在 Databend 中也都以 SQL 实现了;

第二,不用考虑分区。我们不要求用户做什么分区,Databend 内部已经帮用户做好分区了。我们按照压缩前 100- 150MB 的数据,压缩到对象存储;

第三,不用考虑索引;

第四,不用考虑数据长度,只用考虑数据类型;

第五,扩容也不用考虑 Reshuffle,扩容计算节点与存储是分开的;

第六,无感升级,关掉再起来就是个新的;

第七,可视化的执行计划;

第八,同一份数据多个服务集群同时使用,绝对算例隔离;

九,结构化和半结构化整合;

十,支持 Python UDF 和 AI 整合。

图片

这是 Databend 在云上与 Snowflake 做的一个性能对比测试,在一个 8 核 64G 的节点跑,在 TPCH-100 测试中,数据 100G 压缩完后,在 Databend 只占 24G 的存储空间。整个测试下来,Databend 云平台里面收费只有 0.65 美元。此外,在某客户真实环境里,55 亿大表场景下,统计每年数据行数场景,5 秒完成统计,全表扫描;全表最小最大值统计场景,4 秒完成统计,全表扫描;统计 2022 年数据行数场景,1秒完成统计,部分扫描;统计一年每个月的数据汇总,2-3 秒完成。

图片

Databend 最早的场景是做数据库归档,包括大数据归档。比如 MySQL、TiDB、 OB ,用户觉得贵,数据又特别大,就可以归档到 Databend 中,用对象存储+ K8s 一个非常小的实例就可以,基本成本能下降 95% 以上。

此外,Databend 做的比较多的另一个场景是日志和历史订单场景。一天 100T 左右的审计日志,在 Databend 压缩完后大概可以到 20G 以内,查询可以做到秒级。

云原生架构数仓和 AI 的整合

现在很多企业都在做知识库 RAG,Databend 其实很早也实现了 RAG 方案,将大模型通过调度注册函数的方式注册到 Databend 里面,然后做 embedding, embedding 之后在内部做一些向量化搜索,然后再做大模型的调度。通过这种方式,我们实现了一个非常方便的 RAG 方案。

下一步我们希望想引入 AI 去做 SQL 改错,假如你的 SQL 输入完有些字段错了,能第一时间帮你纠正过来。如果你的 SQL 写得不够高效,它也能帮你更高效地完成这种重复繁琐工作。

此外,Databend 内置了 Python、Java 的 UDF,你可以使用 Python 和 Script 做一些 UDF,进行一些特殊的数据处理。比如数字中加入了全角,身份证号的 15 位转 18 位等特殊需求,就可以借助 json 或者 Python 的方式用 y 值函数来帮你处理。

图片

我们还提供了一个数据集市,它有两套方案,一种是简易的数据集市,可以把同类的表,从 DB ID 到 table ID ,最终注册到别的库里面,注册别的租户去使用。另一种是可以共享视图和一些表的共享服务。

这个功能对企业有什么好处?我们在很多传统行业里面发现,如果企业做好数据资产登记,在需要哪个资产时就可以非常方便地去请求这个数据,请求完之后对方如果同意了,就可以把这张表直接注册到你的库里。你可以以这种植入的方式来访问,甚至以视图的方式来访问它。很多需要把数据搬来搬去的场景,用到这个数据集市后就可以把这些数据搬迁工作全省掉了。而且数据只有一份,数据一致性更高。

以上就是本次分享的全部内容,如果你对 Databend 感兴趣的话,欢迎来体验、试用,点击文末「阅读原文」,立即试用  Databend Cloud!

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:https://databend.cn

📖 Databend 文档:https://docs.databend.cn/

💻 Wechat:Databend

✨ GitHub:https://github.com/datafuselabs/databend

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在手机上设置国内代理IP地址:详细指南

在某些情况下,我们可能需要在手机上设置国内代理IP地址,以便访问特定的网络服务或提高网络连接的稳定性。本文将详细介绍如何在Android和iOS设备上设置代理IP地址。 在Android设备上设置代理IP地址 在Android设备上设置代理IP地址非常简单,只…

MYSQL:简述对B树和B+树的认识

MySQL的索引使用B树结构。 1、B树 在说B树之前,先说说B树,B树是一个多路平衡查找树,相较于普通的二叉树,不会发生极度不平衡的状况,同时也是多路的。 B树的特点是:他会将数据也保存在非叶子节点。而这个…

C语言典型例题55

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,…

二叉搜索树进阶之红黑树

前言: 在上文我们已经学习了AVL树的相关知识以及涉及的四种旋转的内容,但是AVL树追求平衡导致旋转操作过多,一些情况下影响性能,由此我们就来了解一下二叉搜索树的另外一个分支,红黑树。 (倘若对旋转知识…

2024版Assimp配置教程

最近想看看图形学,选择速通LearnOpenGL,不出意外最耗时间的依然是配置环境。按照教程上的把GLFW等等配置的没有问题,但是在Assimp这里卡住了。原因是教程上说的不详细,而网上查的又和现在的版本相去甚远,导致捣鼓了好一…

从web.xml动态读取sunspringmvc.xml文件

文章目录 1.问题分析1.SunWebApplicationContext.java 中sunspringmvc.xml是写死的2.但是web.xml已经配置了init-param,所以应该是可以读取的 2.具体实现1.SunDispatcherServlet.java 得到ServletConfig传递给Spring容器完成初始化2.SunWebApplicationContext.java …

【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解

目录 1、C语言中的类型转换 2、C语言和C中可以相互转换的类型总结 C语言: CPP: 3. 为什么C需要四种类型转换 4、C四大强制类型转换 4.1static_cast 4.2 reinterpret_cast 4.3 const_cast 4.4dynamic_cast 注…

基于x86 平台opencv的图像采集和seetaface6的性别识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的性别识别功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的性别识别模块从而实现…

谓词和量词

一、个体词和谓词 命题是一句陈述句,命题由个体词和谓词组成。 个体词是句子中的主语部分,比如这里的王童。 谓词是句子里的剩余部分,比如是一个三好学生 个体词用小写字母表示,谓词用大写字母+(&#…

数据库(专业存储数据)

数组、链表、变量----->内存:程序运行结束,数据丢失 文件-------------->硬盘 数据库:专业存储数据,大量数据----------->硬盘 一、数据库文件与普通文件区别: 1.普通文件对数据管理(增刪改查)效率低 2.数据库对数据…

算法: 双指针

题目:环形链表 题目讲解: 判断环 要判断链表是否有环,可以使用快慢指针的方法。快指针每次走两步,慢指针每次走一步。如果链表有环,快慢指针最终会相遇;如果没有环,快指针会先到达链表末尾。 …

MySQL:简述对事务的认识

浅谈对Spring事务的认识:https://xiaoer.blog.csdn.net/article/details/80849971 一、事务的特性 事务是数据库永恒不变的话题, ACID:原子性,一致性,隔离性,持久性。 (1)原子性&am…

基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设

麒麟信安操作系统,作为行业数智化建设的安全根基,为电力业务系统提供了稳定可靠的底层平台,在全球能源结构转型大潮中扮演着至关重要的角色。某光伏电站项目中,基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设&…

手机游玩植物大战僵尸杂交版V2.3.7最新版教程(文章末尾免费直接下载链接)

最新版植物大战僵尸杂交版V2.3.7手机游玩教程 【V2.3.7全面升级】植物大战僵尸杂交版:跨平台终极安装指南 - 苹果、安卓、电脑、电视兼容,界面革新,16卡槽扩展,高分辨率支持,BUG修复,畅享游戏乐趣 前言 …

Java Web —— 第九天(事务)

事务管理 & AOP 事务回顾 概念 事务 是一组操作的集合,它是一个不可分割的工作单位,这些操作 要么同时成功,要么同时失败 操作 开启事务(一组操作开始前,开启事务): start transaction / begin 提交事务(这组操作全部成功…

Word文档被锁定无法编辑怎么办?一键快速移除Word编辑限制

有没有遇到这种情况?打开Word文档后,准备对Word软件进行文档的编辑时,发现文档有部分内容无法进行编辑了,不知道怎么回事,其实这是因为无法编辑区域被锁定了,所以无法进行编辑,那么应该怎么解除…

Scrapy 分布式爬虫框架 Scrapy-Redis

github官网代码示例:https://github.com/rmax/scrapy-redis/blob/master/example-project/example/spiders/myspider_redis.py 什么是 Scrapy-Redis Scrapy-Redis 是一个基于 Scrapy 的扩展,用于实现分布式爬虫。它利用 Redis 作为分布式队列来共享待爬…

【Qt窗口】—— 浮动窗口

目录 1.1 浮动窗口的创建 1.2 设置停靠的位置 1.3 示例小结 在Qt中,浮动窗口也称之为铆接部件,俗称为子窗口,浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核⼼部件的周围,可以有多个。 1.1 浮动窗口的…

CAD如何批量输出PDF?介绍了三种方式

CAD如何批量输出PDF?在工程设计、建筑制图以及产品设计等领域,CAD软件是不可或缺的工具。随着项目规模的扩大,如何将CAD图纸批量转换成PDF格式以便分享、打印或存档,成为了许多设计师面临的常见问题。下文将介绍三种高效的方法&am…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…