唯品会亿级数据服务平台实践.docx
《唯品会亿级数据服务平台实践.docx》由会员分享,可在线阅读,更多相关《唯品会亿级数据服务平台实践.docx(17页珍藏版)》请在三一办公上搜索。
1、唯品会亿级数据服务平台实践数据服务是数据中台体系中的关键组成部分。作为数仓对接上层 应用的统一出入口,数据服务将数仓当作一个统一的DB来访问,提 供统一的API接口控制数据的流入及流出,能够满足用户对不同类 型数据的访问需求。电商平台唯品会的数据服务自2019年开始建设,在公司内经历 了从无到有落地,再到为超过30+业务方提供To B、To C的数据服 务的过程。本文主要介绍唯品会自研数据服务Hera的相关背景、架 构设计和核心功能。背景介绍在统一数仓数据服务之前,数仓提供的访问接入方式往往存在效 率问题低、数据指标难统一等问题,具体而言有以下几个比较突出的 情况:广告人群USP、DMP系统每
2、天需要通过HiveServer以流的方式 从数仓导出数据到本地,每个人群的数据量从几十万到几个亿,人群 数量2w+,每个人群运行时间在30min+,部分大人群的运行直接超 过1h,在资源紧张的情况下,人群延迟情况严重。数仓的数据在被数据产品使用时,需要为每个表新生成一个单独 的接口,应用端需要为每一种访问方式(如Presto、ClickHouse) 区分使用不同的接口,导致数据产品接口暴涨,不方便维护,影响开 发及维护效率。数据在不同的存储时,需要包含clickhouse-client, presto-client 等等第三方 jar 包。不同数据产品中都需要使用一些常用的数据指标,如销售额、
3、订 单数、PV、UV等,而这些数据在不同数据产品的实现口径、实现方 式都不一样,无法形成数据共享,每个数据产品都重复进行相同的指 标建设。因此,在不同数据产品查看相同指标却发现数值不同的情况 下,难以判断哪个数据产品提供的数据是准确的。图1.数据流入流出方式为解决以上问题,数据服务应运而生。目前数据服务的主要优势 有:屏蔽底层的存储引擎、计算引擎,使用同一个APKone service), 数仓数据分层存储,不同Engine的SQL生成能力,自适应SQL执 行以及统一缓存架构保障业务SLA,支持数据注册并授权给任何调用 方进行使用,提高数据交付效率。通过唯一的ID标识,数据产品可通过ID查阅数
4、据,而非直接 访问对应的数仓表。一方面,指标服务统一了指标的口径,同时也支持快速构建新的数据产品。架构设计数据服务能给业务带来运营和商业价值,核心在于给用户提供自 助分析数据能力。Hera整体架构基于典型的Master/slave模型, 数据流与控制流单独链路,从而保障系统的高可用性。数据服务系统 主要分为三层:应用接入层:业务申请接入时,可以根据业务要求选择数据服务 API(TCPClient),HTTP以及OSP服务接口(公司内部RPC框架)。数据服务层:主要执行业务提交的任务,并返回结果。主要功能 点包括:路由策略,多引擎支持,引擎资源配置,引擎参数动态组装, SQL Lispengin
5、e生成,SQL自适应执行,统一数据查询缓存, FreeMaker SQL动态生成等功能。数据层:业务查询的数据无论在数仓、Clickhouse、MySQL还是 Redis中,都可以很好地得到支持,用户都使用同一套API。智能故据开发应用隈 r&A.V阿心tHJAE瞄gL 项 L J I J L. L J Ifff散据服务r,RHlBM号 IFF,蜻数据层* 冒*il#CIcMgialUs棒人方式 MliKl-KAPIHTTP,冒OSPKK图2.数据服务整体架构图调度系统的整体流程大致包含以下模块:Master:负责管理所有的 Worker、TransferServer、AdhocWorker
6、节点,同时负责调度分发作业;Worker:负责执行ETL和数据文件导出类型的作业,拉起 AdhocWorker进程(Adhoc任务在AdhocWorker进程中的线程池中 执行),ETL类型的作业通过子进程的方式完成;Client:客户端,用于编程式地提交SQL作业;ConfigCenter:负责向集群推送统一配置信息及其它运行时相关 的配置和SQLParser (根据给定的规则解析、替换、生成改写SQL语 句,以支持不同计算引擎的执行);TransferServer:文件传输服务。_ff_li5Rnin4VI$K -广 f _ 一 H,/jr,f 图3.数据服务调度流程图主要功能Hera数据
7、服务的主要功能有:多队列调度策略、多引擎查询、 多任务类型、文件导出、资源隔离、引擎参数动态组装、自适应Engine 执行和SQL构建。多队列调度策略数据服务支持按照不同用户、不同任务类型并根据权重划分不同 调度队列,以满足不同任务类型的SLA。多引擎查询数据服务支持目前公司内部所有OLAP和数据库类型,包括 Spark、Presto、Clickhouse、Hive、MySQL、Redis。会根据业务具 体场景和要求,选择当前最佳的查询引擎。多任务类型数据服务支持的任务类型有:ETL、Adhoc、文件导出、数据导入。 加上多引擎功能,实现多种功能组合,如Spark adhoc和Presto a
8、dhoc。文件导出主要是支持大量的数据从数据仓库中导出,便于业务分析和处理, 比如供应商发券和信息推送等。具体执行过程如下:用户提交需要导出数据的SQL,通过分布式 engine执行完成后,落地文件到hdfs/alluxio.客户端通过TCP 拉取文件到本地。千万亿级的数据导出耗时最多10min。数据导出在 人群数据导出上性能由原来的30min+,提升到最多不超过3min, 性能提升1030倍。具体流程如下:HCFS集季1 一开恰下莅女件,.突敏童试旃的一1提变眄1 业辑提交文件导地任房近回持果图4.数据服务文件下载流程图资源隔离(Worker资源和计算资源)业务一般分为核心和非核心,在资源分
9、配和调度上也不同。主要 是从执行任务Worker和引擎资源,都可以实现物理级别的隔离,最 大化减少不同业务之间相互影响。引擎参数动态组装线上业务执行需要根据业务情况进行调优,动态限制用户资源使 用,集群整体切换等操作,这个时候就需要对用户作业参数动态修改, 如OLAP引擎执行任务时,经常都要根据任务调优,设置不同参数。针对这类问题,数据服务提供了根据引擎类型自动组装引擎参数,并 且引擎参数支持动态调整,也可以针对特定任务、执行账号、业务类 型来设定OLAP引擎执行参数。自适应Engine执行业务方在查询时,有可能因为引擎资源不足或者查询条件数据类 型不匹配从而导致执行失败。为了提高查询成功率和
10、服务SLA保障, 设计了 Ad Hoc自适应引擎执行,当一个引擎执行报错后,会切换到 另外一个引擎继续执行。具体自适应执行逻辑如下图所示:图5.自适应Engine执行SQL构建数据服务SQL构建基于维度事实建模,支持单表模型、星型模 型和雪花模型。单表模型:一张事实表,一般为DWS或者ADS的汇总事实表。星型模型:1张事实表(如DWD明细事实表)+ N张维表,例 如订单明细表(事实表FK二商品ID) +商品维表(维度表PK=商 品 ID)。雪花模型:1张事实表(如DWD明细事实表)+N张维表+M张 没有直接连接到事实表的维表,例如订单明细表(事实表FK二商品ID) +商品维表(维度表PK二商品
11、ID,FK二品类ID) +品类维 表(维度表PK二品类ID)。图6.SQL维度模型任务调度基于Netty库收发集群消息,系统仅仅使用同一个线程池对象EventLoopGroup来收发消息,而用户的业务逻辑,则交由一个单独 的线程池。选用Netty的另外一个原因是“零拷贝”的能力,在大量数据 返回时,通过文件的形式直接将结果送给调用者。多队列+多用户调度业务需求通常包含时间敏感与不敏感作业,为了提高作业的稳定 性和系统的可配置性,Hera提供了多队列作业调度的功能。用户在提交作业时可以显式地指定一个作业队列名,当这个作业 在提交到集群时,如果相应的队列有空闲,则就会被添加进相应的队 列中,否则返
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 唯品会亿 级数 服务 平台 实践
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5083889.html