0 简介
大数据是企业发展的重要生产力。 数据开发是数据资产内容建设的主战场,是数据价值生产过程的核心环节。 近年来,随着快手业务的快速发展,越来越多不同角色的用户开始开发数据。 开发平台面临如何低门槛满足产品、技术、运营、数据工程师等角色的开发需求; 当数据量超过EB、日均任务数百万级时,如何降低运维成本; 如何保证资源有限。 准时数据输出等挑战。 本文主要介绍快手大数据开发平台面临上述挑战的解决方案和实践经验。
本文整理快手数据平台在SACC 2022中国系统架构师大会《大数据架构应用设计与实践》上分享的内容。 主要集中在以下三点:
快手大数据平台
快手是全国性的短视频社区,是用户记录和分享生产生活的平台。 快手的使命是帮助人们发现自己的需求,发展自己的优势,持续提升每个人独特的幸福感。 部分核心数据如下:
快手大数据平台是重要的商业合作伙伴。 我们希望利用领先的大数据技术,激活数据价值,赋能业务,打造快手核心竞争力,为快手业务快速发展提供数据新能源。 作为领先的短视频平台,快手快手大数据非常庞大。 目前大数据集群规模为数万级,总数据量为EB,日净增数据为PB,日任务数数十万。 该平台日活跃用户数以万计。
2快手大数据开发平台建设实践
本节主要介绍以下三部分:
2.1 平台定位及发展历程
从数据流向来看,大数据生命周期主要包括六个阶段:
快手一站式大数据开发平台主要涵盖数据同步、处理、分发三个核心环节,满足用户一站式数据开发和运维体验。
快手一站式大数据开发平台的发展历史主要可以分为三个阶段:
快手大数据开发平台目前的服务包括短视频、直播、电商、广告等内部业务。 整体规模处于行业领先平台。 目前离线任务量在数十万,实时任务量在数万,日增数据量在PB级别,重要链路任务数量超过数千。
2.2 平台整体架构
整体架构主要分为三层:
服务层:由于数据同步、离线开发、实时开发等方面存在较大的挑战和技术差异,因此将服务能力分为三个独立的服务。
产品层:
2.2 平台核心模块及关键技术
本节主要介绍数据同步、离线开发、实时开发和SLA保障四个模块。
2.2.1 数据同步
典型业务场景:
整体架构主要分为三层
在快手,每天的Kafka消息数量非常庞大,达到数十万亿条。 业务对数据的时效性要求非常高,需要分钟级的准备时间。 面对实时同步的低时延保证,主要存在两个问题:
流量太大,消费不及时。 在快手的业务场景中,高峰期QPS达到上亿,pb非常复杂,可能有几千甚至上万个字段。 当活动数据量增加10倍甚至100倍时,无法通过扩展分区等常规手段进行处理。 快手通过多线程模式解决了这个问题,通过队列解耦数据同步过程中的各个环节。 数据读取后放入队列,多个线程并发进行数据解析、转换和写入操作。 并且可以通过配置指定线程数量,从而更好地充分利用计算资源,加速大量数据的同步效率。
尾随问题。 数据同步是一个分布式系统。 整个同步任务的完成时间取决于最近完成的子任务。 例如,100个分区中,只有1个分区尚未完成数据,无法就绪。 造成拖尾问题的常见原因包括数据倾斜、调度不均匀、算力不均匀等。为了优化拖尾问题快手在线自助业务平台,快手主要采用了以下方法
经过优化,目前快手的平均拖尾时间约为2分钟。
在快手,目前有数十个存储引擎。 为了解决离线同步数据源类型多的问题,我们借鉴星型模型思想,引入同步框架层,实现数据源读写的插件化开发,加速离线同步接入新的数据源。技术。 发动机效率。
离线同步任务执行过程中,读插件读取数据源存储中的数据,通过统一数据传输对象完成数据转换处理,然后写插件完成将数据写入数据目的地贮存。 同时,为了加快大数据任务的执行速度,基于MR框架实现了任务的分布式执行。 首先,对数据源中存储的底层文件进行分组。 然后父任务被拆分为相应数量的子任务,每个子任务处理一个文件组的数据并发执行,然后合并子任务的结果。
2.2.2 线下开发
产品层提供数据查询、任务开发、任务运维、监控报警、系统管理等产品能力。
快手线下发展主要面临以下问题和挑战:
开发效率低、质量差,包括测试流程不规范、缺乏环境隔离导致线上数据污染、开发流程和规范难以落实、测试验证效率低等问题。
快手业务复杂,数据量非常大(TB级表)。 整个任务依赖的环节长、执行环节多、涉及的系统多。 任务分析和运维效率很低。
为了解决开发效率低、质量差的问题,将离线任务的开发流程标准化为任务编写、配置、调试、审核、上线五步的模板开发流程。
数据处理任务的执行涉及到很多分布式系统(任务调度、计算引擎等)。 问题排查需要非常高的专业能力,用户自助运维门槛较高。 同时,随着业务发展任务的不断增长,Oncall承受着巨大的压力。
以满足用户自主运维,减轻值班压力。 快手构建多层次、全生命周期的任务诊断体系
帮助用户完成从问题发现、问题分析、问题解决的自助运维闭环。 目前可覆盖数据倾斜、OOM、资源不足等15种常见场景,样本验证准确率超过90%。
2.2.3 实时开发
与离线相比,实时具有有效性的优势。 快手已经开始在越来越多的业务场景中向实时化方向发展。 典型的业务场景包括主动大屏、实时监控等业务场景。
关于总体框架
快手实时开发面临的主要挑战是Jar模式开发更加灵活,但门槛高、效率低。 SQL模式门槛较低,但需要连接Kafka、Redis等不同存储。 如何降低实时开发的门槛是重要的建设目标之一。
为了降低实时开发和对接不同异构数据源的成本,将数据源抽象为逻辑表。 在SQL中使用逻辑表来描述不同的数据源。 用户可以方便地使用逻辑表对应的SQL操作完成异构数据源之间的Join等处理操作。 SQL提交后,会自动解析优化并转换为实际的Flink SQL,完成最终的执行和计算。 通过快手的研究,SQL开发效率相比Jar模式提升了70%以上。
2.2.4 SLA保证
随着快手业务的发展,工作量越来越大。 任务之间的依赖关系变得复杂,链接很长。 下图是快手真实任务依赖图。 快手目前有数十万个任务。 以核心日报为例,链路深度超过20层,上游任务超过2000个,跨越多个部门。 再加上资源有限,保证数据的及时输出非常困难。
为了保证数据的及时输出,快手整体采用分层保障策略,通过组织+规范+工具的组合保障策略的实施。
快手任务优先级体系分为四个级别:P0~P3,分别是公司级核心数据、部门级重要数据、部门级次要数据和不重要数据。 资源分配的优先级权重依次递减。 任务数量和相应的资源消耗也基本呈金字塔分布。
在工具层面,SLA保障的具体实施和监控主要通过基线工具完成。 主要包括两大能力:优先级管理和进度监控。
除了日常场景外,对于春节等大型事件,在资源有限的情况下,可以通过基线快速调整优先级,保证事件数据的及时输出。 目前,保障任务中的时效性异常基本可以提前90分钟监控和发现,有足够的时间处理和避免故障。
2.3 低代码开发实践
2.3.1 背景介绍
客户端数据可分为业务数据,用于描述用户行为快手在线自助业务平台,如访问、曝光等数据; 技术数据,用于分析系统性能、监控等数据。客户研发在监控、故障处理等场景中,经常需要分析技术数据。 目前,快手在分析技术数据时面临很多问题,包括
自助困难:
2.3.2 解决思路
业务焦点分析场景的特点是注重质量和规范,处理逻辑复杂。 工具要求是流程规范可扩展、基本能力通用。
技术分析场景特点是注重效率、处理逻辑简单。工具要求门槛低、自闭环
快手根据不同场景的特点构建分级处理能力。 从上到下,灵活性增加,效率降低; 从下到上,灵活性降低,效率提高。具体包括
2.3.3 技术架构
低代码服务底层依赖于埋藏元数据、离线开发、实时开发等基础能力。 采用“配置即生产”的配置模型,用户可以通过基于表单的任务配置轻松完成数据的访问、处理、分发以及数据处理和分析。 任务发布后,通过实时数据分流、任务分组合并、计算逻辑优化等多种方式,自动探索数据源,减少资源消耗。 然后自动解析配置生成任务代码,完成任务编排和执行。
2.3.4 成功收益
通过上述低代码场景的实现,带来的好处如下:
门槛更低:通过SQ配置,弱化实时逻辑表和离线数据链路。 用户无需关心SQL、逻辑表、离线链接,降低了使用门槛。 改变以往依靠DE&DA进行数据分析的模式,客户研发可以自行接入。
操作路径优化:通过场景化任务类型集成通用能力,将以往多平台操作步骤缩短为一个平台操作。
降低成本:通过实时数据分流、任务分组合并、计算逻辑优化等方式降低资源消耗。
通过用户调查反馈,人均效率提升了70%。
3 未来计划
1.0时代主要实现一站式购物,而2.0时代希望进一步降低数据开发门槛,实现数据民主化,即人人都可以开发数据。具体包括
作者简介:韩江,曾就职于百度。 2018年加入快手,目前负责快手一站式大数据开发平台的相关服务和产品建设,包括离线开发、实时开发、任务运维和管理。 近年来,他深度涉足数据开发领域。 熟悉数据生产全链路的整体解决方案,在大数据开发和数据治理方面拥有丰富的经验。
快手数据中台团队简介:快手核心大数据中台团队为全公司打造业界领先的智能大数据生产和分析平台,赋能各业务线,提升公司数据创新效率。 目前方向包括数据开发工具链(离线实时数据开发平台、数据同步、大规模工作流调度、全链路质检平台)、数据服务工具链(智能指标模型平台、百万级并发数据)服务化平台)、数据分析工具链(一站式数据分析平台、专题数据分析产品)、数据管理工具链(全链路元数据平台、资源管理平台、数据地图、数据安全平台)。 也欢迎优秀学子加入我们!
发表评论