火山引擎 DataLeap 套件下构建数据目录(Data Catalog)系统的实践
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
摘要
背景
元数据与Data Catalog
Data Catalog的业务价值
旧版本痛点
- 用户层面痛点:
- 数据生产者: 多引擎环境下,没有便捷、友好的数据组织形式,来一站式的管理各类存储、计算引擎的技术与业务元数据
- 数据消费者: 各种引擎之间找数难,元数据的业务解释零散造成理解数难,难以信任
- 技术痛点:
- 扩展性:新接入一类元数据时,整套系统伤筋动骨,开发成本月级别
- 可维护性:经过一段时间的修修补补,整个系统显的很脆弱,研发人员不敢随便改动;存储依赖重,同时使用了MySQL、ElasticSearch、图数据库等系统存储元数据,维护成本很高;接入一种元数据会增加2~3个ETL任务,运维成本直线上升
新版本目标
- 产品能力上,帮助数据生产者方便快捷组织元数据,数据消费者更好的找数和理解数
- 系统能力上,将接入新型元数据的成本从月级别降低为星期甚至天级别,架构精简,单人业余时间可运维
调研与思路
业界产品调研
产品分类
|
产品名称
|
支持元数据种类
|
重要产品功能
|
机器学习能力
|
获取信息途径
|
特点分析
|
独角兽
|
C**
|
40+
|
搜索、血缘、标签、评价与打分、认证、问答、Connector市场等
|
有
|
demo和文档
|
功能丰富,成熟度高,产品设计上有诸多可借鉴之处
|
A**
|
60+
|
搜索、血缘、标签、问答、Connector市场等
|
有
|
demo和文档
|
功能较丰富,成熟度较高,产品能力可做参考
|
|
开源
|
A** A**
|
10+
|
搜索、血缘、标签等
|
无
|
源码和文档
|
离线相关数据源支持较好,类型系统和存储系统设计巧妙,但产品侧能力弱。近期迭代较缓慢
|
L** D**
|
40+
|
搜索、血缘、标签、统计大盘等
|
无
|
源码和文档
|
发展较快,背后商业化公司支持力度大,有在线demo环境可随时体验,功能简单直接
|
|
商业化
|
A** P**
|
30+
|
搜索、血缘、标签、统计大盘等
|
无
|
产品体验和文档
|
功能较简单,与其公有云结合紧密,部分功能有借鉴意义
|
升级思路
- 对于搜索、血缘这类核心能力,做深做强,对齐业界领先水平
- 对于各产品间特色功能,挑选适合字节业务特点的做融合
- 技术体系上,存储和模型能力基于Apache Atlas改造,应用层支持从旧版本平滑迁移
技术与产品概览
架构设计

元数据的接入
- 元数据接入支持T+1和近实时两种方式
- 上游系统:包括各类存储系统(比如Hive、 Clickhouse等)和业务系统(比如数据开发平台、数据质量平台等)
- 中间层:
- ETL Bridge:T+1方式运行,通常是从外部系统拉取最新元数据,与当前Catalog系统的元数据做对比,并更新差异的部分
- MQ:用于暂存各类元数据增量消息,供Catalog系统近实时消费
- 与上游系统打交道的各类Clients,封装了操作底层资源的能力
核心服务层
- Catalog Service:支持元数据的搜索、详情、修改等核心服务
- Ingestion Service:接受外部系统调用,写入元数据,或主动从MQ中消费增量元数据
- Resource Control Plane:通过各类Clients,与底层的存储或业务系统交互,操作底层资源,比如建库建表,能力可插拔
- Q&A Service:问答系统相关能力,支持对元数据的字段含义、使用场景等提问和回答,能力可插拔
- ML Service:负责封装与机器学习相关的能力,能力可插拔
- API Layer:以RESTful API的形式整合系统中的各类能力
存储层
- Meta Store:存放全量元数据和血缘关系,当前使用的是HBase
- Index Store:存放用于加速查询,支持全文索引等场景的索引,当前使用的是ElasticSearch
- Model Store:存放推荐、打标等的算法模型信息,使用HDFS,当ML Service启用时使用
元数据的消费
- 数据的生产者和消费者,通过Data Catalog的前端与系统交互
- 下游在线服务可通过OpenAPI访问元数据,与系统交互
- Metadata Outputs Layer:提供除了API之外的另外一种下游消费方式
- MQ:用于暂存各类元数据变更消息,格式由Catalog系统官方定义
- Data warehouse:以数仓表的形式呈现的全量元数据
产品功能升级

- 基础能力建设(2017-2019):数据源主要是离线数仓Hive,支持了Hive相关库表创建、元数据搜索与详情展示、表之间血缘,以及将相关表组织成业务视角的数据专题等
- 中阶能力建设(2019-2020年中):数据源扩展了Clickhouse与Kafka,支持了Hive列血缘,Q&A问答系统等
- 架构升级(2020年中-2021年初):产品能力迭代放缓,基于新设计升级架构
- 能力提升与快速迭代(2021年至今):数据源扩展为包含离线、近实时、业务等端到端系统,搜索和血缘能力有明显增强,探索机器学习能力,产品形态更成熟稳定。另外我们还具备了ToB售卖的能力。
关键技术
数据模型统一
- 类型(Type):描述一类元数据,由多个属性组成。例如,hive table是一类元数据,hive_db也是一类元数据。Type可具备继承关系。按面向对象的编程思想,可以理解type为一个Class。
- 实例(Entity):代表一个type的具体事例。一个entity可能作为一个属性存在于另一个entity中,例如hive_table中的db属性,db本身也是一个entity。在面向对象的编程思想中,一个entity可以认为是一个class的instance。
- 属性(Attribute):属性的集合组合而成为一个Type。属性本身的类型(typeName)可能是一个自定义的type,也可能是一种基础类型,包括date,string等。例如,db是hive_table的一个属性,column也是hive_table的一个属性。
- 关系(Relationship):一种特殊的Entity,用以描述两个Entity之间的关联模式。
- 继承与组合的广泛使用

- 调整类型加载机制
数据接入标准化

- Source:从外部存储计算系统等批量拉取最新的全量元数据。数据结构和字段通常由外部系统决定。概念上可对齐Flink的source operator。
- Diff Operator:接收source的输出,并从Catalog Service拉取当前系统中的全量元数据,做差异对比,产出差异的部分。概念上对齐Flink中的某一种自定义的ProcessFunction。
- Event Generate Operator:接收Diff Operator的输出,根据Catalog系统定义好的格式,将差异的metadata转化成event格式,比如对于新建的metadata,转换成CreateEvent。概念上对齐Flink中的某一种自定义的ProcessFunction。
- Sink:接收Event Generate Operator的输出,将差异的metadata写入Ingestion Service。概念上对齐Flink的sink operator。
- Bridge Job:组装pipeline,做运行时控制。概念上对齐Flink的Job。
搜索优化
- 搜索中存在部分很强的Pattern:用户搜索元数据时,有一些隐式的习惯,通过挖掘埋点中的固定pattern,给了我们针对性优化的机会。
- 行为数据规模有限:公司内部的元数据搜索用户,通常是千级别,而每天搜索的点击次数是万级别,这个规模远远小于对外的通用搜索引擎,也造成很多模型没法及时收敛,但也一定程度上给与我们简化问题的机会。

- 离线部分:负责汇集各类与搜索相关的数据,做数据清洗或者模型训练,根据不同的用途,写入不同的存储,供给在线搜索模块使用。
- 在线部分:分为搜索理解、召回、精排三个主要阶段,步骤和概念上与通用搜索引擎对齐。
- 对于强Pattern,广泛使用Rule-Based的优化手段:比如,火山引擎 DataLeap 研发人员发现很大一部分用户在搜索Hive时,会使用“库名.表名”的pattern,在识别到query语句中有“.”时,火山引擎 DataLeap 研发人员会优先尝试根据库名和表名检索
- 激进的个性化:因用户规模可控,且某位用户通常会频繁使用某个领域的元数据,火山引擎 DataLeap 研发人员记录了很多用户的历史行为细节,当query语句与过去浏览过元数据有一定文本相关性时,个性化相关的得分会有较大提升
血缘能力

存储层优化
读优化:开启MutilPreFetch 能力
写优化:去除Guid全局唯一性检查
|
优化前
|
优化后
|
小表(10列以内)
|
1~2s
|
<100ms
|
中表(100-500列)
|
3-5min
|
2~5s
|
超大表(3000列以上)
|
15min以上,经常写入失败
|
0.5~1min,可写入
|
未来工作
火山引擎 DataLeap 套件下构建数据目录(Data Catalog)系统的实践的更多相关文章
- 火山引擎 DataLeap 的 Data Catalog 系统公有云实践
Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...
- 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做
摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...
- 火山引擎 DataLeap:3 个关键步骤,复制字节跳动一站式数据治理经验
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理. ...
- 火山引擎 DataLeap:揭秘字节跳动数据血缘架构演进之路
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...
- 火山引擎 DataLeap:一家企业,数据体系要怎么搭建?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 导读:经过十多年的发展,数据治理在传统行业以及新兴互联网公司都已经产生落地实践.字节跳动也在探索一种分布式的数据治 ...
- 火山引擎DataLeap数据调度实例的 DAG 优化方案
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 实例 DAG 介绍 DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成.开发.运维.治理.资产管理能力 ...
- CentOS下构建Shell简易分发系统
bash经典收集 经典收集1 for f in `(cd .; find suite -type f | grep -v SCCS)`; \ do \ d=/usr/local/mysql/mysql ...
- 字节跳动构建Data Catalog数据目录系统的实践(上)
作为数据目录产品,Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景,并服务于数据开发和数据治理的产品体系.本文介绍了字节跳动 Data ...
- 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...
- 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性
通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的 ...
随机推荐
- 用iptables做负载均衡实现高并发
根据以往经验,在高配置服务器上部署Java服务,建议部署多个JVM实例,以提升JVM示例内存回收效率: 此时面临负载分发问题,常规想法是通过Nginx或者Apache做负载分流.然而在高并发情况下无论 ...
- 产品代码都给你看了,可别再说不会DDD(十):CQRS
这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...
- SNN_文献阅读_Recent Advances and New Frontiers in Spiking Neural Networks
Recent Advances and New Frontiers in Spiking Neural Networks 基本要素:包括神经元模型.神经元中脉冲序列的编码方法.神经网络中每个基本层的拓 ...
- Codeforces Round 903 (Div. 3)
Codeforces Round 903 (Div. 3) A. Don't Try to Count 大概题意给你两个字符串a,b.a串可进行的操作为将整个a串复制到之前的a串后面(直接用a+a即可 ...
- WPF 绑定binding都有哪些事件
在WPF中,源属性(Source Property)指的是提供数据的属性,通常是数据模型或者其他控件的属性,而目标属性(Target Property)则是数据绑定的目标,通常是绑定到控件的属性,例如 ...
- STL常用函数
STL简介 \(STL\)是\(Standard\) \(Template\) \(Library\)的简称,中文名称为标准模板库,从根本上讲, 就是各种\(STL\)容器的集合,容器可以理解为能够实 ...
- 安装MacOS - 初学者系列 - 学习者系列文章
上次安装了个VMWare Workstation 17.5.0的精简注册版,昨天打开软件,发现竟然支持了MacOS操作系统了,所以就想把安装的过程记录一下. 1. 准备虚拟机: 1) 下载精简版: 从 ...
- 反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理
Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法.代码的时候吧-- 一旦跳过,可能就得重新执行一遍,准备数据.重新启动可能几分钟就过去了. 好在IDE 们都很强大,还给你后悔的机会,可 ...
- 从零玩转设计模式之简单工厂设计模式-jiandangonchangmoshi
title: 从零玩转设计模式之简单工厂设计模式 date: 2022-12-08 11:31:19.472 updated: 2022-12-11 23:03:34.805 url: https:/ ...
- 聊聊ChatGLM6B的微调脚本及与Huggingface的关联
本文首先分析微调脚本trainer.sh的内容,再剖析ChatGLM是如何与Huggingface平台对接,实现transformers库的API直接调用ChatGLM模型,最后定位到了ChatGLM ...