AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

节省数亿成本,OPPO 数据平台降本增效实践 | QCon

  • 2021-11-04
  • 本文字数:4225 字

    阅读完需:约 14 分钟

节省数亿成本,OPPO 数据平台降本增效实践 | QCon

大数据、AI 和云计算的深入结合,让无数企业正在启动数智化转型。本文聚焦 OPPO 公司,探讨数智化转型背景下,OPPO 如何构建新一代数据平台?这个过程中,它面临着哪些挑战?数据平台的构建和升级给 OPPO 带来了哪些收益?......


带着这些问题,InfoQ 记者有幸在 QCon 2021 全球软件开发大会·上海站,采访到 OPPO 数据平台负责人 周强老师,和他探讨新一代数据平台建设的话题。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    OPPO 数据平台负责人 周强


    InfoQ:您好,周强老师,请您先简要做一下自我介绍


    周强:大家好,我叫周强,此前曾在土豆网、支付宝和阿里云做数据平台的工作。目前,任职 OPPO 云计算中心数据平台部,负责 OPPO 数据平台的建设与技术演进。


    InfoQ:这几年,为适应业务需求,OPPO 构建了新一代大数据基础设施,即 Cloud Lake。可以向大家介绍一下吗?


    周强:随着 OPPO 的数智化转型,OPPO 对数据的应用要求越来越高,海量数据下算力、调度和存储都面临着巨大挑战。Cloud Lake 面向未来五年,为公司提供新一代的大数据计算、存储服务,为 OPPO 数据驱动公司业务发展打好坚实的基础。


    InfoQ:请问,Cloud Lake 诞生的背景是什么?


    周强:Cloud Lake 带一个“Cloud(云)",不得不先说下 OPPO 云。OPPO 用两年时间(2019 年和 2020 年)构建了符合自己业务特点的混合云。目前,OPPO 业务已经拓展到东南亚、印度、欧洲和北美。OPPO 云主要解决业务快速发展过程中基础设施的成本与效率问题。


    OPPO 云是一朵混合云、云上云。在国内,我们有自己的机房,部署 OPPO 的云服务以及各类云上产品。在海外,更多选择与公有云合作,采购公有云的机器资源,包括 AWS 、谷歌,在公有云上部署我们自己的云服务,从而实现降低本增效的目的。


    经过两年多实践,OPPO 在线业务已经实现 100%迁到 OPPO 云,给公司节约了数亿成本,在内部得到了比较好的评价。


    这样一个背景下,回到数据平台。OPPO 的数据平台,集群机器规模已近万台,存储近 EB 数据,每天离线计算任务有近百万级,实时计算任务也有数千。根据近年的统计数据,差不多每年有 30%左右的规模增涨。这样一个存量和增量的基础上,我们的平台目标是什么呢?


    数据平台有两点必须保障:第一是 SLA ,即平台稳定,不出现各类故障。在此基础上需要保障业务任务准点率。我们平台上面跑了近百万的数据任务,必须保证这些数据任务准点执行完成。在 SLA 三个 9 和准点率 100%要求下,我们还要把成本降下来。这驱使我们必须通过技术升级,平衡好 SLA 、准点率和成本。


    InfoQ:OPPO 构建 Cloud Lake 的目的是什么?想解决哪些问题?


    周强:一句话来概括,在保障我们数据平台 SLA、 准点率这个前提下,通过技术升级达到降本增效的目的。


    InfoQ:Cloud Lake 的构建过程分为几个阶段?关键性动作有哪些?


    周强:大致分为两个阶段。在介绍 Cloud Lake 前,必须介绍另一项工作,数据治理。我们发现,基于老平台的数据应用存在很多不合理的地方。治理手段缺失,缺少数据地图、数据热力、任务诊断、成本核算、质量监控等一系列数据治理的系统能力,帮助用户保障数据及数据任务的准确、合理、高效。这部分工作是我们数据平台稳定和降本的一个必要前提条件。


    所以,在正式开始 Cloud Lake 项目前,我们专门起了项目,补齐数据治理的短板。有了数据治理的保障,我们才开展 Cloud Lake 的技术升级。


    总体来说,可以概括为三个点:


    第一是计算层面,实践批流一体的,减少重复计算,实现元数据与存储的统一。


    第二是融合调度,将云的在线算力与大数据的算力进行统一的调度,实现算力的潮汐补给。


    第三是湖存储,把原来 HDFS 存储,逐步迁移到云平台的对象存储,进而衍生到统一的湖存储。


    InfoQ:Cloud Lake 建设过程中,数据湖存储的技术选型是怎么做的?


    周强:说起存储,我们中间经历了一些试错,也有组织和管理上的考量。大数据应用,使用 HDFS 通常采用三副本策略,做高可用和性能保障,成本相对比较高昂。存储成本优化通常会采用纠删码技术(EC),将数据 X3 变成 X1.2 到 X1.5 这样的规模。决定引入 EC 后,又有两个选择,是使用 HDFS 的 EC,还是使用对象存储的 EC。考虑 OPPO 云计算中心有比较强大的存储团队,同时,参考公有云的发展,大数据存储正慢慢走对象存储的技术路线。所以我们决定将数据迁移到云存储的对象存储 OCS 中。截止目前,我们已经将 100PB 左右的冷存数据迁移到了 OCS。


    除了冷数据,还有很多热数据。热数据的处理对我们系统挑战更大。我们的选择是把公司内部成熟的文件存储系统 CBFS 和刚才介绍的对象存储系统 OCS 做融合,统一两者的元数据,并对存算分离后的性能要求做逐级缓存,同是输出 S3 协议和 HDFS 协议,供用户对接使用,形成新的数据湖存储 ADLS。通过这样的技术融合,实现冷、热、温数据分层、分介质存储,保障用户无感知迁移。


    InfoQ:在构建 Cloud Lake 过程中,你们面临的比较大的挑战有哪些?针对这些挑战,你们又是如何解决的?


    周强:大数据技术发展已经有十多年历史,OPPO 对大数据的应用也不是这一两年的事。随着公司业务的发展,OPPO 数据平台建设走过了 5 个年头。平台目前有很多存量的机器,也运行着很多存量业务。此时做技术升级,好比开着汽车换发动机,需要在保障好业务运行稳定的前提下进行技术升级。


    在技术选型过程中,我们优先结合现有的储备基础,尽量的少颠覆 ,多融合,攫取我们技术储备各个点上的长处,充分利用,奔着降本增效的核心目标努力,这是很重要的一点。


    具体体现在升级过程中的两个点上:


    第一,以云数融合调度为例,业内普通推崇云原生,OPPO 的大数据平台是否也要走云原生这条路?我们测试了云原生方案,利用 K8s 调度 Spark 计算任务,可以调,但并不能完全满足性能要求。因为 K8s 调度逻辑比 Yarn 复杂,对于频繁创建、释放资源的场景并没有优势


    我们选择把 Yarn 和 K8s 做融合。第一层调度,K8s 将 Yarn 的资源拉起来,第二层调度,通过 Yarn 对任务做资源分配。两者结合后,同样达到在线的算力资源释放给大数据,同时又能够保证我们原来一套基于 Yarn 构建的支撑体系不变(必须考虑用户习惯和成本账单)。既达到了目标,又让我们的技术升级更加平滑。


    第二,存储方面,自研的数据湖存储 ADLS,结合我们之前在互服业务上多年沉淀的文件存储,对象存储管理研发经验,充分融合,同时兼容 HDFS,S3 接口,达到业务的无感知迁移。


    InfoQ:Cloud Lake 构建完成后,给你们带来的收益有哪些?


    周强:第一,实实在在降本。刚开始启动项目时,我们粗略估计了一下,按照 30%的业务增量,我们计划 2021 和 2022 年少采买机器,预估少买 50%还是有把握的。立项会上,评委给我们提出了更高要求,是否能够不买机器。老实说,当时我们心里并没有底,但还是答应了下来,因为我们相信做这个项目的价值与意义。实践中,我们发现,这并非是一个无法达到的目标。从实际情况看,我们离线集群夜间是高峰,整个集群资源利用率在 90%到 100%,而日间利用率只有 40%和 50%左右,只要能扛过夜间的高峰,以现有的机器规模完全可以满足未来一年 30%的业务增量。


    经过云数融合的实践,夜间把一些在线资源释放到我们的离线集群。未来一年,大概有八万核左右的算力缺口,目前融合调度已经可以释放了一万核算力。相信未来一年不采买算力机器是一个完全可达到的目标。


    第二,简化技术体系。大数据和在线业务原本是两套技术栈。OPPO 通过云数融合,形成跨领域的技术交流,让做大数据存储的伙伴了解在线业务使用的对象存储,做 K8S 调度的伙伴和做 YARN 调度的伙伴能够将各自领域的技术优势进行融合。同时,运维方面,也可以通过一套技术体系管理公司在线业务和离线业务。


    第三,简化组织和管理。有了技术上的融合,数据平台团队和弹性计算团队的伙伴逐步融合成一个大团队,实现了人才复用。


    InfoQ:从 OPPO 的实践中,你觉得有哪些重要的经验可以分享给对方?


    周强:数据平台的建设必须结合自己公司的实际情况,考虑公司的业务规模,来决定自己的技术路线。现在的共有云厂商,普遍提供优秀的数据平台服务。当业务规模较小的时候,使用公有云方便、快捷且成本上也比较划算。随着业务规模的扩展,自建平台的成本优势会慢慢显现出来,所以我们要判断好公有云成本曲线与自建平台成本曲线的交汇点,做出合理的选择。


    InfoQ:未来,你们在 Cloud Lake 上还会有哪些新的尝试与打算?


    周强:我们的技术升级有三点:批流一体的计算、云数融合调度、数据湖存储。批流一体的计算,我们做到了元数据统一,存储统一。计算引擎统一,是未来可以积极探索的方向。虽然以 Flink 为代表的计算引擎,不断地宣称自己能做到批流一体,但是从实践角度,一个系统想做得多,往往不能再每个方向上都做到极致。统一的计算引擎我持保留意见,但不排斥这个方向的探索。这点上,我个人更倾于在批、流和交互式计算引擎上有一个公共层,通过这个公共层屏蔽不同引擎带来的适配成本,而非在引擎层实现完全的计算统一。


    关于云数融合调度,目的是实现资源弹性,目前主要通过定时机制实现。因为我们知道业务资源利用规律,把这样的规律通过规则配置到我们弹性策略中。但是,弹性调度应该是更敏捷型,更灵活的,系统可以感知负载情况,自动进行资源的释放和回收。因为日常业务中会经常会有大规模任务重跑,任务突增等情况。这种情况下,灵活自主的扩缩容策略会对我们的业务有更好的帮助。


    最后,在存储方面,刚才我们提到的冷、热、温分层存储目前还需要用户来定义。如某张事实表数据多久变冷存,某张维表是否一直需要热缓存加速。随着业务的变化,冷数据可能变成热数据,也需要手动做参数调整。其实,数据冷、热、温的划分,可以根据动态监测到的一些指标数据,通过算法自动地进行标识,转化,以达到不同数据使用不同存储介质,进而拥有更合理的存储成本。


    InfoQ:近年来,数据平台有哪些新的技术热点?企业或技术人员应该对哪几个技术热点进行重点关注?


    周强:近年数据平台的热点不算多,个人比较看好数据平台会往一个更实时化的方向演进,这个实时化方向不仅是以 Flink 为代表的实时计算,而是弥合了实时计算和离线计算边界的基础上,整体的数仓体系更倾向于准实时化、实时化。Hudi、Iceberg 这两个开源项目近年非常活跃可见一斑。


    InfoQ:能不能展望一下,未来数据平台的发展趋势是什么样?


    周强:数据平台更多还是要与云充分融合。近年来广泛讨论的 Snowflake ,将数据仓库搬到云上,同时支持多云部署,非常有代表性。我们的产品和能力嫁接到云上,能够更广泛的输出我们的服务。从实践过程来看,OPPO 数据平台通过与云的融合,在运维管理、稳定性、还有成本方面都得到了很好的收益。

    2021-11-04 16:434269
    用户头像
    万佳 前InfoQ编辑

    发布了 677 篇内容, 共 369.4 次阅读, 收获喜欢 1803 次。

    关注

    评论

    发布
    暂无评论
    发现更多内容

    GitHub开源:4行代码实现《黑客帝国》数字雨特效

    不脱发的程序猿

    GitHub 开源 程序人生 4月日更 黑客帝国

    饿了么EMonitor演进史

    阿里巴巴中间件

    可观测性 饿了么 emonitor etrace

    2021年处置非法集资部际联席会议:密切关注打着区块链、虚拟货币等旗号的新型风险

    CECBC

    一周信创舆情观察(4.12~4.18)

    统小信uos

    推荐5个4K视频下载网站 (百万优质资源)

    科技猫

    网站 分享 视频 经验 资源分享

    LiteOS内核源码分析:动态内存之Bestfit分配算法

    华为云开发者联盟

    LiteOS Huawei LiteOS 动态内存 Bestfit 分配算法

    这份阿里P8技术专家整理的《一面到底》Java岗,GitHub已标星79k

    Java架构之路

    Java 程序员 架构 面试 编程语言

    走完线上 BUG 定位最后一公里

    阿里巴巴中间件

    可观测性 bug bug修复

    插件化库VirtualAPK详解

    寻找生命中的美好

    android 插件化 VirtualAPK

    开发环境上云,打造五星级开发体验

    CODING DevOps

    Kubernetes 云原生 CODING Nocalhost

    阿里巴巴的“双11”高并发秒杀终极版教程!(Java语言设计)

    Java 编程 程序员 架构

    全网最全 ECMAScript 攻略

    清秋

    JavaScript ecmascript 大前端 ES6 Ecma

    4种语义分割数据集Cityscapes上SOTA方法总结

    华为云开发者联盟

    语义分割 OCR 数据集Cityscapes HRNet SegFix

    真的香!Github一夜爆火被各大厂要求直接下架的面试题库也太全了

    Java架构之路

    Java 程序员 架构 面试 编程语言

    万字精华:好好巩固你的Nginx知识体系

    学Java关注我

    Java 编程 架构 程序人生 计算机

    架构实战营模块二作业

    刁寿钧

    架构实战营

    暴涨暴跌的牛市,普通人怎么和平发育?

    CECBC

    区块链

    阿里“秘密团队”整理出来的一份Java面试复盘手册!全面复盘在望

    Java架构之路

    Java 程序员 架构 面试 编程语言

    redis常见应用场景

    Sakura

    4月日更

    悲观锁与乐观锁的实现(详情图解)

    Java架构师迁哥

    Rust从0到1-代码组织-模块

    rust modules 模块

    合约跟单系统搭建,合约一键跟单app

    Golang Test

    escray

    学习 极客时间 Go 语言 4月日更

    理性看待区块链+大宗商品

    CECBC

    区块链

    线程的故事:我的3位母亲成就了优秀的我!

    王磊

    Java 线程 多线程

    破解class文件的第一步:深入理解JAVA Class文件

    华为云开发者联盟

    Java JVM 索引 class文件

    总是记不住java的IO流用法?用N个问题教你掌握java IO流

    华为云开发者联盟

    Java 字符串 IO流 字节输入流 字符流

    开发知识 | 即时通讯是怎么做到的?

    YonBuilder低代码开发平台

    大前端 即时通讯 APP开发 小程序制作 开发技巧

    Android组件化和插件化开发

    寻找生命中的美好

    android 组件化 插件化

    Flink的状态一致性

    大数据技术指南

    flink 4月日更

    加密原理详解:对称式加密VS非对称式加密

    Java架构师迁哥

    节省数亿成本,OPPO 数据平台降本增效实践 | QCon_大数据_万佳_InfoQ精选文章