加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

快手大数据开发平台建设实践与演进之路

发布时间:2022-12-10 13:35:54 所属栏目:大数据 来源:互联网
导读: 0 导读
大数据是企业发展的重要生产力,数据开发是数据资产内容建设的主战场,是数据价值生产过程中的核心环节。近年来随着快手业务的高速发展,越来越多不同角色的用户开始进行数据开发。

0 导读

大数据是企业发展的重要生产力,数据开发是数据资产内容建设的主战场,是数据价值生产过程中的核心环节。近年来随着快手业务的高速发展,越来越多不同角色的用户开始进行数据开发。开发平台面临如何低门槛满足产品、技术、运营、数据工程师等角色开发需求;超过EB级别数据量和日均百万级的任务数,如何能够降低运维成本;在资源有限的情况下如何保证数据准时产出等挑战。本文主要介绍面临如上挑战快手大数据开发平台的解决方案和实践经验。

本文是快手数据平台在SACC 2022中国系统架构师大会《大数据架构应用设计与实践》专题分享内容整理而成,主要围绕下面三点展开介绍:

1 快手大数据平台

快手是一款全民短视频社区,用于用户记录和分享生产、生活的平台。快手的使命是帮助人们发现所需、发挥所长,持续提升每个人独特的幸福感。一些核心数据如下:

大数据开发简历模板_大数据开发需要学什么_大数据开发

快手大数据平台作为业务的重要合作伙伴。希望以领先的大数据技术,激活数据价值,赋能业务,打造快手核心竞争力 ,为快手业务的飞速发展提供数据新能源。快手作为头部短视频平台,快手大数据的体量规模巨大,当前整个大数据集群规模数万台、总数据量EB级别、日净增数据量PB级别、日任务数数十万级别、平台日活跃用户数万级别。

大数据开发简历模板_大数据开发_大数据开发需要学什么

2 快手大数据开发平台建设实践

本节主要从以下三个部分来展开介绍

2.1 平台定位与发展历程

从数据的流动上看大数据生命周期主要包括六个阶段:

快手一站式大数据开发平台主要涵盖数据同步、加工、分发三个核心环节,满足用户的一站式数据开发和运维体验。

大数据开发简历模板_大数据开发需要学什么_大数据开发

快手一站式大数据开发平台的发展历史可以主要划分为三个阶段:

大数据开发简历模板_大数据开发需要学什么_大数据开发

快手大数据开发平台目前服务包括短视频、直播、电商、广告等内部业务。整体规模在业界属于头部平台,目前离线任务量在数十万级别、实时任务量在数万级别、日增数据量在PB级别、重要链路任务数超过数千。

大数据开发_大数据开发简历模板_大数据开发需要学什么

2.2 平台整体架构

整体架构主要分为三层:

服务层:由于数据同步、离线开发、实时开发所面临的挑战和技术差异较大,所以在服务能力上分为3个服务独立建设

产品层:

大数据开发需要学什么_大数据开发简历模板_大数据开发

2.2 平台核心模块与关键技术

本节主要从数据同步、离线开发、实时开发以及SLA保障四个模块来展开介绍

2.2.1 数据同步

典型业务场景:

整体架构主要分为三层

大数据开发_大数据开发简历模板_大数据开发需要学什么

在快手,每天的Kafka消息数非常大,可以达到数十万亿量级。业务对数据的时效性要求非常高,需要分钟级的就绪时间。面对实时同步的低延迟保障,主要有两个问题:

流量过大消费不及时。快手的业务场景,高峰期QPS高达几个亿,pb非常复杂可能会有上千甚至上万个字段。在活动数据量徒增10倍甚至100倍等场景时,无法通过扩分区等常规手段进行处理。快手通过多线程模式解决该问题,将数据同步过程中各个环节通过队列解耦,数据读取后放入到队列中,由多个线程并发来进行数据解析、转换和写入操作。并且可以通过配置来指定线程的数量,从而更好的充分利用计算资源加速大数据量的同步效率。

拖尾问题。数据同步是一个分布式系统,整个同步任务完成时间取决于最晚完成的子任务决定,例如100个分区,只有1个没有完成数据也无法就绪。常见的导致拖尾问题的原因有数据倾斜、调度不均匀、算力不均匀。为了优化拖尾问题快手主要通过以下方式

经过优化目前快手的平均拖尾时间大概在2min左右

大数据开发简历模板_大数据开发需要学什么_大数据开发

在快手,目前大概有几十种存储引擎,针对离线同步数据源种类非常多的问题,借鉴星型模型思想,通过引入同步框架层实现数据源读和写插件化开发,加速离线同步接入新引擎的效率。

离线同步任务执行过程,读插件读取数据来源存储中的数据,通过统一数据传输对象完成数据的转换处理,之后写插件完成数据写入到数据去向存储中。同时为加速大数据量任务的执行速度,基于MR框架实现任务的分布式执行,首先会将数据来源存储的底层文件进行分组,之后父任务会拆分成对应数量的子任务,每个子任务处理一个文件组的数据实现并发执行,之后将子任务的结果进行合并。

大数据开发需要学什么_大数据开发简历模板_大数据开发

2.2.2 离线开发

产品层,提供包括数据查询、任务开发、任务运维、监控告警、系统管理等产品化能力

在快手离线开发主要面临如下问题和挑战,

开发效率低、质量差,包括测试流程不规范缺少环境隔离导致线上数据污染,开发流程和规范落地难,测试验证效率低等问题。

快手业务复杂,且数据量非常大(TB级别表),整个任务依赖链路长、执行环节多、涉及系统多。任务分析运维效率非常低。

大数据开发需要学什么_大数据开发简历模板_大数据开发

针对开发效率低、质量差的问题,将离线任务的开发流程标准化为任务编写、配置、调试、审核、上线 5个步骤的模版化开发流程。

大数据开发_大数据开发需要学什么_大数据开发简历模板

数据加工任务执行涉及分布式系统多(任务调度、计算引擎等),问题排查对专业能力要求非常高,用户自助式运维门槛高。同时随着业务发展任务量不断增长导致Oncall压力巨大。

为满足用户自主式运维且降低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层,上游任务超过2千个,且横跨多个部门。再加上资源有限,想要保障数据准时产出十分困难。

大数据开发_大数据开发需要学什么_大数据开发简历模板

为保障数据准时产出,快手整体采用分级保障策略,通过组织 + 规范 + 工具相结合的方式保障策略落地。

快手任务优先级体系分为 P0 ~ P3四个级别,依次是公司级核心数据,部门级重要数据,部门级次要数据和不重要的数据,资源分配的优先级权重依次递减。任务个数和对应的资源消耗也基本呈金字塔分布。

大数据开发_大数据开发简历模板_大数据开发需要学什么

工具层面主要是通过基线工具完成SLA保障的具体实施和监控。主要包括优先级管理和进度监控两大能力。

除了日常场景,针对春节等大型活动,在资源有限的情况下,可通过基线进行快速调整优先级保障活动数据的准时产出。目前保障任务的及时性异常基本可以提前到 90min 监控发现,可以有充足的时间来处理避免故障。

大数据开发_大数据开发简历模板_大数据开发需要学什么

2.3 低代码开发实践

2.3.1 背景介绍

客户端埋点数据可以分为业务埋点,用于描述用户行为,例如访问、曝光等数据;技术埋点,用于分析系统性能、监控等数据。客户端研发在监控和排查问题场景下经常需要对技术埋点数据进行分析,当前在快手进行技术埋点分析面临很多问题,主要包括

自助难:

大数据开发需要学什么_大数据开发简历模板_大数据开发

2.3.2 解决思路

业务埋点分析场景,特点是强调质量、重规范;加工逻辑复杂。对工具要求是流程规范可扩展,通用化基础能力。

技术埋点分析场景,特点是强调效率;加工逻辑简单。对工具要求是低门槛、自闭环

快手针对不同场景特点,进行分层式的加工能力建设,整体自上而下,灵活性提高,效率降低;自下而上,灵活性降低,效率提高。具体包括

大数据开发需要学什么_大数据开发_大数据开发简历模板

2.3.3 技术架构

低代码服务底层依赖埋点元数据、离线开发、实时开发等基础能力。采用“配置即生产”的配置化模式,用户通过表单化的任务配置,即可以便捷地完成数据接入、加工、分发,进行数据加工和分析。任务发布后,自动探查数据来源并通过实时数据分流、任务分组合并、优化计算逻辑等多种方式,减少资源消耗。之后自动解析配置生成任务代码,并完成任务编排和执行。

大数据开发简历模板_大数据开发需要学什么_大数据开发

2.3.4 成功收益

通过上述低代码场景落地,带来收益如下:

门槛降低:通过SQ 配置化,弱化实时逻辑表、离线数据链路,用户无需关心 SQL、逻辑表、离线链路,降低使用门槛。改变以往依赖DE&DA进行数据分析的模式,客户端研发可以自助接入。

操作路径优化:通过场景化任务类型完成通用能力的打通,之前多个平台的操作步骤缩短为1个平台操作

降低成本:通过实时数据分流、任务分组合并、优化计算逻辑等多种方式,减少资源消耗。

通过调研用户反馈平均人效提升70%。

大数据开发_大数据开发简历模板_大数据开发需要学什么

3 未来规划

1.0时代主要实现一站式,2.0时代希望能够进一步降低数据开发门槛实现数据民主化,即人人都会数据开发。具体包括

大数据开发需要学什么_大数据开发_大数据开发简历模板

作者简介:韩江,曾就职于百度。2018年加入快手,当前主要负责快手一站式大数据开发平台的相关的服务和产品建设,包括离线开发、实时开发、任务运维与管理等内容。近几年深耕在数据开发领域,熟知数据生产全链路整体解决方案,有丰富的大数据开发和数据治理相关经验。

快手数据中台团队介绍:快手核心大数据中台团队,为全公司构建业界领先的智能大数据生产和分析平台,赋能全业务线提升公司数据创新效率。目前涉及方向包括数据开发工具链(离线和实时数据开发平台、数据同步、大规模工作流调度、全链路质检平台)、数据服务工具链(智能指标模型平台、百万级并发数据服务化平台)、数据分析工具链(一站式数据分析平台、专题式数据分析产品)、数据管理工具链(全链路元数据平台、资源管理平台、数据地图、数据安全平台)。也欢迎优秀同学加入我们!

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!