导读 本次分享主题为抖音集团面向多样应用场景的数据准备实践。主要分为以下几个部分:
(资料图片)
全文目录:
1. 抖音集团的数据应用
2. 数据准备介绍
3. 抖音集团的数据准备实践
4 . 火山引擎的数据准备
分享嘉宾|陈昌源 字节跳动 数据准备技术负责人
编辑整理|小宁 滴滴
出品社区|DataFun
01
抖音集团的数据应用
1.抖音集团的数据规模
抖音集团作为一个数据驱动的公司,小到产品的研发与迭代,大到公司的决策和运营,都紧密围绕数据进行。可以说,数据是公司的燃料,数据应用则是公司的引擎。公司在用的数据总量,已经达到了EB级别,这对数据存储和处理的基建要求都非常高。日常数据处理中,早晚高峰的数据流量,达到了1亿TPS,日均处理数据作业量百万级以上。数据处理的效率直接影响到公司的运营效率。从图中可以看出,集团的很多应用都是通过数据分析来驱动数据运营和迭代的。
2.抖音集团的数据应用架构
抖音集团的数据应用架构,横向上主要分为三层:底层是平台层,包括了数仓和计算引擎;上层是入口层,主要做访问控制;比较丰富的是中间的应用和中台层,这一层分为数据应用和中台开发。右边的中台开发主要包括数据开发、数据治理、数据资产管理等一些基础能力,主要面向数据开发者。左边的数据应用,是面向业务的数据赋能利器,包括行为分析、实验分析、客户分析、智能洞察等等。支撑这些数据应用的是数据底座,也就是本文重点要讲的数据准备。
02
数据准备介绍
1.数据准备的作用
数据准备是什么?能够在数据应用中起到什么作用?从数据流的顺序来看,数据在被业务正常使用前,经历了以下过程:从数据源到数据建模,再到数据同步,最终形成数据集。数据从业务数据变成成型数据集的过程中,就是数据准备在发挥作用。所以,数据准备是帮助数据应用完成数据生产的工具链。在此过程中,数据接入与数据建模,是非常核心的两个模块。接入能力奠定了数据准备的广度,建模能力决定了数据准备的深度。在图中可以直观看到,这两个模块的主要作用:数据接入侧主要负责各种各样数据源的接入、集成;数据建模侧主要提供数据加工、分析、挖掘的能力。
2.数据准备的组成
下面进一步剖析数据准备的组成。
数据准备可以划分为四个子系统: 建模子系统、执行子系统、增强准备和系统管理 。
建模子系统 承载的主体功能是逻辑的实现,对数据源、数据模型的实体进行抽象,以所见即所得的方式给客户/用户带来数据上的操作能力。用户可以连接自己想要的业务数据,通过低代码的方式,完成数据处理流程,最终形成业务意义明确的数据集。
执行子系统 是将建模子系统生成的逻辑模型转化成任务的核心系统。做数据产品的同学都会知道,任务是整个数据系统中的核心实体,让任务高效、高稳定运转,是执行子系统的核心目标。执行子系统包括了任务生成、任务执行、任务管理与监控几个模块。
为了保障数据任务的高效流转和稳定落地,有了增强准备这一子系统。增强准备子系统是整个数据准备系统的智能化体现,包括类型推导、关系推断、清洗建议和性能智能调优,都是为了让复杂多样的数据稳定、高效落地。
其他职能系统,包括权限管控、资源治理等,都属于管理子系统。
下面针对数据准备整个系统中的两个核心子系统展开来讲。
建模子系统 输出的模型,恰好是执行子系统的输入。用户结合对业务数据的认知,会把数据源、数据处理、算子作为原材料,输入到建模子系统中,构造出的逻辑模型,呈现了用户对数据业务的结构理解,作为执行子系统的输入。
执行子系统 中的任务作业,是核心实体。按照用户所需要的逻辑关系进行运算的同时,为了保障稳定性和性能,引入了引擎的调配参数。运行管理和监控模块,则是从全局角度,来保障任务的吞吐。
通过两个子系统的结合,满足用户业务需要,同时能够为数据准备系统提供全托管能力:用户可以在无人值守的情况下,保障整个系统任务的稳定运行。
03
抖音集团的数据准备实践
在了解了数据准备的内在组成之后,下面介绍下数据准备在抖音集团内部是如何发挥作用的。
从前面的介绍可以看出,数据准备包含多种能力,可以归纳为四类:接入、建模、数据集、输出。这四种能力是构成数据准备的核心,同时,数据准备也可以使用其中的部分能力来满足不同业务场景的需求。因此,提出了数字魔方的概念,是指数据准备可以通过模块化组合的方式,来满足多样的应用场景。从魔方中可以看出,x轴是从功能维度描述功能模块,y轴是从架构维度描述系统分层,y轴的逻辑层和执行层,刚好对应上面提到的逻辑子系统和执行子系统的分工。z轴是从功能的进阶程度,来描述模块提供功能的分级。
下面分场景来介绍数据魔方是如何工作的。
1.BI场景,全员都能探索数据
第一个场景是BI场景。在一个数据驱动的公司,BI是必不可少的、全员可使用的应用。每个角色都可以通过分析数据来量化、辅助工作。在数据准备中,为了满足BI的场景,主要贡献了接入+建模+数据集的模块能力。用户将不同的业务数据接入到数据准备系统后,通过一定的数据处理,转化成具有明确业务意义的数据集,从而为BI系统贡献了丰富的数据集市。从右面的示例看出,用户对接入的多种数据源进行业务关联,最终生成了具有明确业务意义的数据集,来做后面的报表分析。
在BI分析的场景中,数据准备所面临的最大挑战,是在全员进行数据处理、探索的情况下,如何在有限资源条件下保障大量任务的高吞吐和稳定性。这里主要通过五个措施来实现。
(1)任务管控,隔离风险
第一点是通过异常管控,隔离风险。我们都知道,数据波动是难以人为控制的,在任务出现数据异常等造成资源使用过高的异常情况时,如何将个体任务与系统任务进行风险隔离,对系统稳定性是极为重要的。首先识别出异常的个体任务,将其与系统的其他任务进行安全隔离,保障系统的整体稳定。
(2)动态调参,节省资源
第二点是引入了动态调参的机制,通过分析任务的历史信息,搜集到任务在不同时候所需要的参数,自适应调整任务的状态,从而使整个系统的资源得到有效的节省。
(3)多路分发,提升性能
第三点是通过任务多路分发,根据任务的数据量,任务的不同特征,分配不同的链路,最大限度提升整个系统的运行性能。让小任务占用较少的资源,大任务充分利用资源的运行能力。使整个系统的吞吐达到比较好的水平。
(4)沉淀规则,专业诊断
第四点是在系统内,沉淀丰富的诊断规则。为什么诊断规则重要呢?因为任务是用户自定义的,且数据难以控制,如何识别任务特征,并且在任务发生异常时,诊断出异常原因,是很多数据系统面临的挑战。在我们的数据准备系统中,通过沉淀系统内大量任务的运行情况,抽象出规则,使规则引擎成为数据准备的核心能力。通过逐步学习任务的特征,来保障任务执行的稳定,并且在任务异常时准确识别出原因,反馈给用户。
(5)监控大盘,及时告警
最后一点是监控大盘。监控大盘为整个数据准备系统提供全天候的实时任务监控和告警推送,以保障任务的稳定运行,对可能出现问题的任务,通过风险前置,满足业务数据的SLA。
以上几个措施,可以最大程度保障在资源有限的环境下,任务吞吐达到比较高的水平,系统达到比较高的稳定性。
2.CDP场景,打通数据孤岛挖掘客户
另一大数据应用场景是CDP场景。CDP是客户数据平台,以分析和挖掘客户信息为主要功能。在此场景下,数据准备所提供的能力主要是接入+输出。用户为了挖掘有用的信息,会从各种各样的数据源收集数据,并对数据进行融合打通,其中包括了行为数据、属性数据和各种业务的明细数据。数据准备系统,通过提供有效的数据融合能力,来解决数据孤岛的问题,让挖掘客户更加便捷。图中列出了常用的几种数据源的接入能力,包括:数据库、API、流式数据、文本数据、更多应用数据等。
在CDP应用场景下,数据准备面临的挑战是什么呢?因为客户信息对每家企业都是最核心的数据资产,因此客户数据平台,在公司内进行私有化部署有着非常强的诉求。如何既能同时支持多家企业部署,又能高效解决不同企业对接不同数据源的问题,是数据准备面临的挑战。这里,主要将接入的数据源分为两种:数据库类数据源和开放类数据源。
数据库类数据源是企业的私域数据,维护在企业内部,主要通过插件式接入。如图,客户区的数据源是多种多样且不可预知的;私部区是部署在客户企业域内的数据平台,数据准备提供了插件式的接入架构,使得新数据源的接入通过快捷插拔式即可完成,大大提升数据源接入效率。
开放类数据源只维护云端采集服务,采集后通过动态下发的方式,把数据或配置信息下发到私部企业域中,让用户无需额外调整,即可完成来自公开数据源和用户配置的应用数据源等多种数据源的接入。
这样,在多企业、多数据源的情况下,极大降低了系统升级迭代的成本,以及部署运维的成本。既为企业带来了使用上的便利,也为平台提供方节省了成本。
3.自定义场景,构建自己的数据应用
BI和CDP这两种比较成型的应用场景中,用户的数据处理是依托固有的数据模型来进行的。当用户有更灵活的数据呈现需求时,需要自定义场景。在这个场景中,数据准备系统主要提供了接入+数据集+输出的能力,使得用户能够便捷地对接所需要的数据源,在数据应用后台,通过程序交互的方式,完成数据接入到数据输出的流程。并通过openAPI的方式,将处理完的数据应用到自己的数据应用中。数据准备系统只提供稳定的后台数据链路保障,数据的呈现完全交给用户进行灵活自定义。如图,右面上方的三个方框体现了数据准备对数据流的处理过程,右面下方的效果呈现是一个应用示例,用来说明用户通过灵活取数的方式,满足各种数据呈现效果,实现数据运营的闭环。
以上讲了三种数据准备系统支持的核心应用场景。此外,通过模块化的能力可以支持更多更丰富的应用场景,这些场景在未来会被逐步发掘出来。
通过图中的数字魔方,可以直观感受到,数据准备既是一个各模块紧密协作的整体,又是一个可以高度模块化的组件集合。针对不同场景,拥有灵活的适配能力,使得数据准备呈现出很强的生命力,这也是火山引擎中数据准备的优势所在。
04
火山引擎的数据准备
最后来看一下,在火山引擎的数据准备里,如何给不同的应用提供不同的能力。
火山引擎的数据应用主要在SaaS层。如图中红色框出的部分。SaaS层是建立在IaaS层的云基础和PaaS层的数据中台之上。主要有五大应用:A/B测试-DataTester、增长营销平台-GMP、增长分析-DataFinder、客户数据平台-VeCDP、一站式数据分析与协作平台-DataWind。其中,数据平台-VeCDP、一站式数据分析与协作平台-DataWind分布对应上面讲到的三个场景中的CDP场景和BI场景。这五大数据应用,构成了火山引擎的数据营销套件,全方位为企业客户赋能,实现数据化运营,创造业务价值。
而数据准备,是为这五大数据应用提供基础数据能力的组件,目前还没有以独立的产品对外透出。当客户购买营销套件中的某个应用时,数据准备会提供对应的模块化能力,来打通数据从客户侧到火山应用侧的通路。当客户购买整个套件,或套件中的多个应用时,底层的数据准备能够打通不同数据应用的数据,使已经形成的数据资产得以在不同应用中复用,实现一份数据多样分析。
总结一下,数据准备通过多源数据融合打通了数据孤岛;通过低代码的数据建模,带给用户所见即所得的数据操作体验;而丰富的数据集市,为多样化的数据分析场景提供了完美助力;完整的数据链路能力,使火山引擎打通了任督二脉。
以上是本次分享的内容,感谢大家的时间。
火山引擎是云市场的新秀,与企业在共同成长,感谢大家对火山引擎的关注。
05
Q&A
Q1:任务诊断部分,有哪些诊断手段和规则?如何平衡诊断操作本身的资源消耗?
A : 如何平衡诊断与任务:诊断分两部分,一部分是离线诊断,一部分是在线诊断。
离线诊断主要是任务在发生异常的时候,把信息快速反馈给业务系统,主要应用场景是把诊断的异常信息提示给客户,让客户进行整改。是在系统无法自恢复的情况下给出的提示。
在线诊断,是结合当前任务执行中的异常数据,根据固定的pattern,映射到需要调优的参数。系统发现有任务异常并且可以进行自恢复时候,通过诊断信息调整参数,进行任务重跑。
Q2 : 增强准备模块中的类型推断、关系推导可以展开介绍下吗?比如多表场景下的join,join的类型是否可以在模块中推断出来?
A : 数据来自不同数据源,不同类型数据源有各自的字段类型体系。不同数据源接入到数据准备系统后,给用户最终呈现的类型体系,是系统的类型体系。第一步类型体系的推断,是基于不同数据源到系统类型体系对接中明确的mapping关系。第二步是做概率性推断,主要是基于数据探查能力,在抽样获取数据源部分数据之后,识别数据字段中的值,根据字段类型特征,以一定概率推荐这个字段应该取什么样的数据类型。第一步中的mapping关系,结合第二步中基于抽样值的类型推断,就可以给数据模型提供较为准确的类型推断。
Q3 : 数据准备是火山引擎DataWind里面的可视化建模吗?有没有可视化建模的能力?可视化建模方式在抖音集团内部使用情况怎样?有多少用户量通过可视化这种拖拽的方式构建数据集呢?
A : 是的。可视化建模是DataWind中的子产品,是有产品透出的,是数据准备能力的一部分。数据准备除了有可视化建模这种通过拖拽构建数据集的方式之外,核心能力还有数据接入、数据集、数据输出。很多能力服务于火山引擎营销套件里的多个数据应用产品。
第二个关于数据准备的能力在抖音集团内部的使用情况。使用量比较大,数据准备能力不仅包括了已经在产品透出的可视化建模,还包括了数据接入、数据集、数据任务等。
以上就是本次分享的内容,谢谢大家。
▌2023数据智能创新与实践大会
数据架构/数据效能/智能应用/算法创新……
4大体系,专业解构数据智能
16个主题论坛,覆盖当下热点与趋势
70+演讲,兼具创新与最佳实践
1000+专业观众,内行人的技术盛会
点击下方链接了解详情: