0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

百度搜索内容HTAP表格存储系统

OSC开源社区 来源:OSC开源社区 2023-12-05 16:00 次阅读

本文主要介绍百度搜索内容存储团队应对海量互联网数据分析计算需求时,在构建HTAP表格存储系统方向上的一些技术思考。

GEEK TALK

01

业务背景

百度搜索内容存储团队主要负责各类数据,如网页、图片、网页关系等,的在线存储读写(OLTP)、离线高吞吐计算(OLAP)等工作。

原有架构底层存储系统普通采用百度自研表格存储(Table)来完成数据的读、写、存工作,此存储系统更偏向于OLTP业务场景。随着近几年大数据计算、AI模型训练的演进,对存储系统OLAP业务场景的依赖越来越重,如数据关系分析、全网数据分析、AI样本数据管理筛选。在OLTP存储场景的架构下,支持OLAP存储需求对资源成本、系统吞吐、业务时效带来了巨大挑战。为此我们在百度自研表格存储之外,结合业务实际workflow针对性优化,增加构建了一套符合业务需求的HTAP表格存储系统。

以下我们将主要介绍在百度内容HTAP表格存储系统设计落地中的一些技术思考,文中的优劣欢迎各位积极交流探讨。

GEEK TALK

02

存储设计

2.0 需求分析

整套存储设计需要解决的核心问题是——如何在OLTP存储系统中支持OLAP workflow?OLAP workflow在OLTP存储系统上带来的两个最主要的问题是:严重的IO放大率、存算耦合

严重的IO放大率。IO放大率主要来自两方面,如下图,数据行筛选、数据列筛选。

数据行筛选。在表格存储中,数据按照主键从小到大排列,OLAP workflow根据条件筛选过滤出符合条件的数据行,会带来严重的IO放大。

数据列筛选。表格存储是宽表结构,业务在一次查询中只会获取部分列,但数据是以行结构保存,需要获取整行再提取出需要的字段,依旧会带来严重的IO放大。

a43b156a-9296-11ee-939d-92fbcf53809c.jpg

△图2.1

存算耦合。存算耦合主要来自两方面,如下图,存储节点资源冗余、存储空间放大。

存储节点资源冗余。在一个存储节点中,OLTP vs OLAP占用的计算资源占比是3:7,为满足OLAP需要,就需要对存储节点进行扩容,然而存储节点的扩容又不仅仅是计算资源。同时,OLAP任务是间歇性的,就会造成忙时供给不足,闲时资源冗余等情况。

存储空间放大。为支持每一个OLAP任务的数据访问,存储引擎需要为每一个workflow创建对应的Snapshot,保证workflow完成前所依赖的所有数据文件均有效。当OLAP workflow耗时过长时,会导致Compaction后数据文件无法及时清理的情况,造成存储空间放大。

a444cbc8-9296-11ee-939d-92fbcf53809c.jpg

△图2.2 Node

2.1 架构设计

a45666f8-9296-11ee-939d-92fbcf53809c.jpg

△图2.3

1.架构采用业界HTAP主流设计思想,将OLTP和OLAP workflow拆分到两套存储系统中,如F1 Lightning、ByteHTAP,在SDK层根据任务类型分发到不同的存储系统中。

2.OLTP存储系统——Neptune,采用Multi-Raft分布式协议组建存储集群,采用本地磁盘(SSD/HDD等) + 百度分布式文件系统AFS组成存储介质。

3.OLAP存储系统——Saturn,Serverless设计模式,无常驻Server,即用即加载,贴合OLAP workflow的不确定性和间歇性。

4.OLTP与OLAP存储系统间,采用数据文件硬链的方式进行数据同步,全版本替换,成本低、速度快,充分贴合Saturn Serverless设计模式。

如上架构设计图,可将OLTP与OLAP workflow拆分到两套独立的系统中,解决上述提到的存算耦合问题。

解决存储空间放大问题。空间放大主要带来的问题是存储节点成本,Workflow分离的架构将OLAP需要的数据文件采用AFS低成本存储,减少了对存储节点存储空间的压力。

a45a7b12-9296-11ee-939d-92fbcf53809c.jpg

△图2.4

OLAP存储系统的数据写入并没有使用常见的log redo或raft learner模式,最主要还是在保证OLAP存储系统的Serverless特性的同时,又能实时感知到OLTP系统的最新写入结果。

解决存储节点资源冗余问题。拆分后,分布式存储节点将大量重型OLAP workflow转移到OLAP存储——Saturn中,将极大减少存储节点的计算压力。同时,OLAP存储的Serverless设计模式又可贴合workflow的不确定性和间歇性。

a463f62e-9296-11ee-939d-92fbcf53809c.jpg

△图2.5 Saturn Serverless模型

计算节点可以部署在任意计算集群中,如Map-Reduce、自研计算节点Pioneer等,在SDK中直接初始化存储引擎,从AFS中访问对应分片的数据文件。计算节点可充分利用云原生系统(PaaS)的弹性资源,解决资源常驻冗余问题。

2.2 存储引擎优化思路

结合上面的分析以及设计思路,已有效地解决了存算耦合问题。在本节中,我们将重点介绍解决IO放大率问题的一些优化思路。

2.2.1 数据行分区

数据行分区思想在很多OLAP存储系统中很常见,如当前比较流行的一些数据湖架构,ClickHouse、IceBerg等。在表格存储中,数据行分区的好处是可以极大减少在数据行筛选过程中IO放大率。以下是我们在存储引擎中支持数据行分区的设计思路:

a474b1a8-9296-11ee-939d-92fbcf53809c.jpg

△图2.6

数据行分区的思想在OLTP和OLAP存储引擎中都有使用,OLTP存储引擎以数据行分区构建的数据文件可直接被OLAP存储引擎加载,减少了OLAP存储的数据构建工作。

数据行分区在Write、Read、Scan场景下的处理流程分别为:

1.Write操作。Write时会根据请求中的特殊Region描述,如分区键,找到需要写入的Region-Index和Region上下文,前者保存Key的分区索引信息,后者中保存实际数据,操作记录由WAL中保存。

2.Read操作。Read操作相比通常直接访问数据,需要多进行一次分区索引访问,为减少多一次访问带来的性能折损,我们将分区索引信息全内存化。由于索引数据非常小,因此全内存化是可接受的。

3.Scan操作。Scan操作相比之下没有任何变更,但在Scan特殊分区场景下可大量减少IO放大。因为相比之前的行过滤模式,可直接跳过大量不需要的数据。

在业务存储支持时,合理设置数据行分区,可极大减少数据行筛选过程中的IO放大率。

2.2.2 增量数据筛选

在实际业务中,有很大一个场景时获取近期(如近几个小时、近一天)有值变化的数据,常规的做法是Scan全量数据,以时间区间作为过滤条件,筛选出符合条件的结果。但如此的筛选逻辑会带来严重的IO放大,因为满足条件的结果只占全量结果的一小部分。为此,我们在引擎层调整优化Compaction时机以及调整筛选流程,减少增量数据筛选过程中需要访问的数据文件集合,降低IO放大,业务提速。

a4828918-9296-11ee-939d-92fbcf53809c.jpg

△图2.7 LSMT

2.2.3 动态列结构

在OLAP存储引擎中,还存在一类访问场景会带来IO放大问题,数据列筛选。在表格存储系统中,一个Key可以包含多个列族(Column Family),一个列族中可以包含任何多个数据字段,这些字段以行结构存储在同一物理存储(Locality Group)中,当筛选特定数据列时,需要进行整行读取,然后过滤出需要的字段,这也将带来IO放大问题。

同时,OLAP workflow的访问不确定性导致存储层无法及时调整数据在物理存储中的结构。为此,我们引入动态列结构的概念,在逻辑层对业务透明,在物理层根据近期OLAP workflow特性及时调整物理结构。

a4902bcc-9296-11ee-939d-92fbcf53809c.jpg

△图2.8

如上图,在逻辑存储中,分为两个LG,根据workflow特性,把业务常用的访问字段在Compaction阶段存放在同一物理存储结构中,反之,这样可以减少字段筛选阶段的IO放大率。

动态列结构只在OLAP存储引擎中生效,我们在原有OLAP存储中引入workflow收集以及compaction任务,将从OLTP存储中同步的数据构建成更适合OLAP场景的存储结构。

GEEK TALK

03

计算与调度

在本节,我们将介绍在此HTAP表格存储系统基础上,如何设计实现任务计算和调度系统,简化业务使用成本,提升业务效率。

在大量搜索内容OLAP workflow中,从表格存储系统中提取筛选数据只占全部任务的一小部分,大量任务需要对数据进行加工处理得到需要的结果。常规的做法是多任务串联,这样做的缺陷是大量中间临时数据存储开销。

为此我们为HTAP表格存储系统构建了一套计算与调度系统,系统两大特点:任务开发SQL化、数据处理FaaS化。

3.1 SQL化与FaaS化

我们充分贴合上述存储系统特性,自研了一套数据查询语言——KQL,KQL类似于SQL Server语法。同时,又结合存储系统特性以及计算框架,支持一些特殊语言能力,最主要的是能支持原生FaaS函数定义,当然也支持外部FaaS函数包依赖。

如下是一段KQL语句例子以及说明:

function classify = { #定义一个Python FaaS函数 def classify(cbytes, ids): unique_ids=set(ids) classify=int.from_bytes(cbytes, byteorder=‘little’, signed=False) while classify != 0: tmp = classify & 0xFF if tmp in unique_ids: return True classify = classify 》》 8 return False } declare ids = [2, 8]; declare ts_end = function@gettimeofday_us(); # 调用Native Function获取时间 declare ts_beg = @ts_end - 24 * 3600 * 1000000; # 四则运算 select * from my_table region in timeliness # 利用存储分区特性,从my_table中的timeliness分区获取数据 where timestamp between @ts_beg and @ts_end # 利用存储增量区间特性,筛选增量数据 filter by function@classify(@cf0:types, @ids) # 在Filter阶段调用自定义FaaS函数 convert by json outlet by row; desc: # 对计算框架进行特殊描述 --multi_output=true;

3.2 任务生成与调度

a4a176f2-9296-11ee-939d-92fbcf53809c.jpg

1.任务生成。在任务生成阶段将KQL语句解析优化成相关的调度任务,一个Job包含多个Task。

2.任务调度。

任务调度的计算节点可以是Map-Reduce,也可以是自研计算集群Pioneer,负责不同计算场景。

任务运行容器负责数据依赖部署和运行计算框架。

计算框架采用插件化设计思想,依托KQL语言进行差异化描述。计算框架的最大特点是,可在数据处理节点执行用户自定义FaaS函数。

GEEK TALK

04

总结

当前HTAP表格存储系统已在全网网页数据离线加速、AI模型训练数据管理、图片存储以及各类在线离线业务场景落地,数据存储规模达》15P,业务提速》50%。

与此同时,随着大模型时代的到来,对存储系统带来了更多的挑战,我们也将继续深度优化,设计更高性能、高吞吐的HTAP表格存储系统。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 耦合
    +关注

    关注

    13

    文章

    558

    浏览量

    100325
  • 存储系统
    +关注

    关注

    2

    文章

    381

    浏览量

    40704
  • 大模型
    +关注

    关注

    2

    文章

    1516

    浏览量

    1116

原文标题:百度搜索内容HTAP表格存储系统

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [灌水]如何提升网站在百度的排名

    搜索引擎!第一,关键词的优化我想这是最基本的要求了,特别注意在title、description标签中包含关键字对网站优化具有非常显著的效果,可以参考关键词百度前十名的网站的关键词,页面的内容要围绕
    发表于 11-09 16:55

    [原创]怎样提升网站在百度的排名??

    搜索引擎!第一,关键词的优化我想这是最基本的要求了,特别注意在title、description标签中包含关键字对网站优化具有非常显著的效果,可以参考关键词百度前十名的网站的关键词,页面的内容要围绕
    发表于 12-01 17:01

    发现百度搜索页的网站前加了图标

    `发现百度搜索页的网站前加了图标今天在搜索内容时,发现很多知名网站都在网站名前加了ICO图标。如下图:再看了一下我们的bbs.elecfans.com,发现并没有此图标,看来这个得研究一下。感觉
    发表于 01-05 23:16

    百度浏览器1.2 beta版发布

    和IE保护模式的优点,创造出更加安全的上网环境。4、智能地址栏依托百度搜索亿万级数据,给您提供最贴心建议、为您打造最智能的地址栏。 5、无需调用其他下载程序,使用浏览器内建的下载就可以完成大多数下载任务
    发表于 07-19 09:01

    下载百度到桌面_把百度下载到桌面

    。 安全浏览模式融合了沙箱技术和IE保护模式的优点,将您与病毒木马完全隔离,还您“无菌的上网环境”。依托百度搜索亿万级数据,给您提供最贴心建议、为您打造最智能的地址栏。 下载地址:百度浏览器`
    发表于 10-26 17:16

    想组装一台电脑,无意间在百度搜索 yxokjob ,原来是个......

    本帖最后由 gk320830 于 2015-3-9 13:48 编辑 之前买了一台笔记本,但现在感觉还是台式比较好用。经过多方比较,还是组装好,所以最近去百度搜索一些电脑组装配置清单。突然QQ闪动,叫去百度一下yxokjob就知道了,我就糊里糊涂百一下,点击进去看,
    发表于 03-05 17:35

    百度地图离线API调用教程

    选择“瓦片.百度”(图4),点击“输出”开始导出瓦片。导出完成后,找到瓦片存储的文件夹,可以看到导出的瓦片(图5)图3 图4图52.3加载瓦片打开文件夹BaiduMap V1.3,我们可以看到3个文件夹
    发表于 01-24 09:42

    百度VS谷歌?不要开玩笑了!

    AlphaGo都赢了李世石百度还是在做新闻的载体欢迎大家百度一下“谷歌技术发展”我们不拿百度和谷歌比就百度和谷歌的搜索比技术层面上说1.
    发表于 03-16 10:44

    百度总裁:百度在人工智能领域已有重大突破

    上接受记者采访时说,百度大脑是百度在人工智能领域的核心。百度此前发布的诸多人工智能产品,如无人驾驶、智能搜索等,都是基于百度大脑的能力。ww
    发表于 07-01 15:22

    百度绿萝算法

    百度绿罗计算方法是百度搜索引擎在二月份上作弊计算方法。计算方法主要与超级链作弊作斗争,例如超链接代理,销售链接和购买链接。 计算方法的推出不无效果阻止恶意交换链接,发表外部链接的行为,不无效果清理
    发表于 10-10 09:47

    百度、英伟达联合举办搜索创新大赛 搜索引擎变革 搜索+AI

    近日,百度文心一言宣布向全社会开放,首日,百度搜索就有超3亿次需求由生成式智能引擎解决;百度搜索“AI伙伴”当日访问用户数突破400万。 在这样的背景下,9月7日,以“新搜索·新奇点”
    的头像 发表于 09-07 19:32 721次阅读

    百度携手 NVIDIA 举办“第二届百度搜索创新大赛”火热进行中,五大赛道等你挑战!

    百度搜索携手 NVIDIA 共同发起的第二届百度搜索创新大赛,今年以「新搜索 · 新奇点」为主题,正火热进行中! 作为一项全国性的科技竞赛,百度搜索创新大赛被誉为
    的头像 发表于 09-28 18:25 502次阅读
    <b class='flag-5'>百度</b>携手 NVIDIA 举办“第二届<b class='flag-5'>百度搜索</b>创新大赛”火热进行中,五大赛道等你挑战!

    百度搜索exgraph图执行引擎设计与实践分享

    百度搜索exgraph图执行引擎设计重点分成三个部分:图描述语言、图执行引擎、对接扩展。
    的头像 发表于 01-16 10:27 207次阅读
    <b class='flag-5'>百度搜索</b>exgraph图执行引擎设计与实践分享

    百度搜索推出AI拜年新能力 AI春节仪式感拉满

    春节AI拜年新体验,百度搜索春节期间推出AI拜年大礼包!
    的头像 发表于 02-05 10:38 2w次阅读

    百度搜索推出AI拜年新能力

    随着人工智能技术的迅猛发展,百度搜索始终站在技术前沿,致力于为用户提供更加智能化、便捷的服务。百度搜索重磅推出了AI拜年新能力,在春节期间,让用户能够更加轻松地表达祝福、传递情感。
    的头像 发表于 02-05 10:54 5596次阅读