其他
OPPO 智能湖仓的实践之路
导读 随着业务的快速发展,很多企业正面临着前所未有的数据增长。这些数据无论是来自在线交易、社交媒体互动还是物联网设备,都蕴含着宝贵的洞察力,能够帮助企业做出更明智的决策。然而,随着数据量的激增,传统的数据管理解决方案开始显得力不从心。智能湖仓是一种创新的数据平台,它结合了数据湖的可扩展性和数据仓库的性能优势,旨在为企业提供一个一站式的数据分析和管理解决方案。本文将分享 OPPO 在数据服务领域的实践和相关技术。
今天的介绍会围绕下面五点展开:1. 背景介绍
2. 实时湖仓
3. 数据入湖
4. 技术规划
5. 问答环节
分享嘉宾|陈哲嘉 OPPO 高级大数据平台工程师
编辑整理|李阳
内容校对|李瑶
出品社区|DataFun
1. OPPO 大数据架构
接入层:做了多引擎的适配以及 HBO,由于数据湖对引擎版本要求较高,我们在接入层支持用户手动指定引擎版本。 计算引擎层:部署外部的 shuffle 引擎,Spark 和 Flink 都可以用相同的外部 Shuffle 服务,从而提高了 Shuffle 效率,该项目已经开源,叫做 Shuttle。 调度层:也做了很多工作,特别是今年在海外云,比如针对 AWS 云的调度做了很多优化,降低了成本。 运维诊断系统:对 Spark 任务、Flink 任务进行全自动的诊断,运维人员可以轻松管理集群上的任务,不需要对引擎有很深入的了解,系统可以发现并报告任务的问题。这个项目已经开始对接 Apache,未来可能会成为 Apache 的一个孵化项目。 数据湖 Glacier:主要的工作是流批一体、数据入湖以及索引方面的工作。功能是把引擎层和存储层衔接在一起,替换 Hive 表,达成业务目标。
2. 湖仓一体
Hive 表不够灵活,比如 MySQL 经常会加减字段,Hive 表就需要重新建表,重新导入数据;另外时效性较低,只能做到小时级,难以继续缩小延迟,无法支撑实时业务。 离线数仓升级为实时数仓的过程非常复杂,会使用 Lamda 架构,Flink 加 Kafka,需要按照原来离线的逻辑,从头开始搭建一套实时链路,维护成本非常高。 针对两套引擎,开发人员既要懂离线引擎,又要懂实时引擎相关技术,因此开发门槛很高,实时业务开发效率比较低。
数据一键接入:希望数据可以非常方便地接入,并且可以实现自动的 schema 适应。 流批一体:一条链路,既可以跑流也可以跑批,从而节省成本。 统一入口:对外是统一的引擎,包括 SQL 也是统一的,方便业务做开发。 高实时性 高性能数据分析 使用简化:全托管,相比原来的数仓架构,使用更加简化。 降低成本:降低运维工作量和成本。
3. Glacier service
实时湖仓
1. 流批一体数仓
统一存储
统一入口
统一引擎
2. 统一入湖
客户端混乱,不清楚目前有哪些客户端,存在管理上的问题。 性能方面,每个客户端都会往文件系统中写数据,并且把写的文件提交到数据湖的表中。源数据这边有一个锁,只能单线程写,去生成一个 snapshot,如果有几百个客户端,性能会存在瓶颈,出现堵塞的情况。 数据正确性问题,如果当前有一个 API 执行过程中挂掉,需要重启后重新开始写,因为找不到 API,数据的回滚非常麻烦,因此要保证数据不重复不丢失是很难的。
3. 统一入湖优化
客户端增加标识:首先我们给客户端增加标识 uid。 统一提交:数据的提交从 API 客户端转到了 Glacier Server,客户端只执行数据的写入,Glacier Server 会进行统一提交。比如可以把 100 个任务直接提交成一个 snapshot,这样锁的瓶颈就少了很多,并且源数据写的性能也会提高,整体性能得到了很大提升。 回滚设计:对 snapshot 进行了改造,记录每个文件是从哪个客户端来的,什么时间生成的,解决了 API 执行任务数据失败回滚的问题。
4. 秒级延迟实现
数据入湖
5. 样本拼接
技术规划
问答环节
分享嘉宾
INTRODUCTION
陈哲嘉
OPPO
高级大数据平台工程师
oppo 大数据平台计算引擎负责人,在大数据离线实时计算,数据湖应用和优化等方向上有丰富的经验。
往期推荐
点个在看你最好看