百观科技基于阿里云 EMR 的数据湖实践分享

作者:百观科技数据工程团队 高级工程师 齐鹏

背景介绍

公司介绍

百观科技成立于 2016 年,是以数据为核心驱动力的市场研究和信息服务公司。百观以全域数据为基础,通过客观科学的数据分析,解锁数据价值,为客户提供具有现实指导意义的洞察和解决方案。

百观的数据产品和解决方案目前覆盖 10+行业、200,000+企业的上百种商业分析维度,获得了市场广泛的认可。当前,百观的客户主要包括国内外大型基金、主权基金、PE/VC 机构、头部咨询和企服公司、知名消费企业和互联网企业等。

业务特征

自 2016 年起,百观持续积累了海量的行业数据,并且每年都呈现显著的增长趋势。这些数据不仅规模庞大,更兼具多样的数据类型、复杂的数据结构和丰富的数据场景 。为了从这些数据中挖掘有价值的洞见,百观的数据团队需要执行繁琐且复杂的数据处理流程 ,包括数据清洗、转换、聚合以及多维度综合分析等多个环节。尤其是在业务高峰时期,完整的数据处理流程叠加庞大的数据体量,使得算力需求呈指数级增长

百观数据工程团队认为,技术方法论的本质是一种经济学:在供需框架下,以尽可能小的成本满足尽可能多的需求场景,发挥最大效能,创造技术价值。因此,如何平衡灵活丰富的数据分析算法与海量数据处理需求,以及如何在高算力需求下实现成本优化,成为了百观数据工程团队面临的核心挑战和亟待解决的关键问题。

为了应对新的业务挑战,百观选择与阿里云合作,利用其强大的 EMR 平台对老系统进行重构,落地了符合业务场景和分析师习惯的工程解决方案。

为什么选择阿里云 EMR

在这样的业务场景下,数据工程团队面临以下挑战:

维度 稳定性 性能 可扩展性 成本
存储 + 长期存储 + 避免意外丢失 + 多粒度备份 + 有效灾备 + 海量规模高速读写 + 备份易找回 + 易于扩展容量 + 支持多种数据格式 + 高性价比 + 支持冷热分层
计算 + 日常保证基础算力 + 能够正确处理任务异常和失败 + 高峰期应对计算资源突增,响应速度快 + 在原生 Spark 生态基础上,引入中间件,进一步压榨计算性能 + 支持核心软件的自定义配置 + 支持计算环境的开发与扩展 + 高性价比 + 进一步提高计算资源利用率

面对这些技术痛点,相较于其他数据平台产品,阿里云 EMR 具备显著的优势:

  1. 依托高可用的 OSS 存储

相较于其他数据生产平台,EMR 依托 OSS 实现数据存储,因此得以搭建完善的 LakeHouse,从而既能够向下支持多样化的数据,又能够向上承载复杂的数据操作和业务生产。

  1. 开箱即用的标准开源技术生态

EMR 除了包含核心的 Spark、Hadoop 生态之外,还支持多种数据生态的各类软件,包括:

  • LakeHouse 的关键实现:Iceberg/Hudi/Delta
  • 实时数据流框架:Paimon/Flink
  • OLAP 分析平台:Trino/Presto等

这些平台工具已经做到开箱即用的状态,无需重新部署,只需根据需求调整参数,即可用于生产环境。

  1. 高度可定制化的运行环境

在保留开箱即用的基础上,EMR 为用户提供了高度定制化的选项,除了内置软件的参数均可调整之外,对于有能力的用户,可以深入 EMR 集群的系统内部做更自由的开发,以满足复杂且多样的生产需求。

  1. 兼容面广的 Datalake Formation

LakeHouse 需要一套功能完善、兼容广泛且高性能的数据目录(Catalog),Datalake Formation(DLF)能够满足这一需求,并且配合 DLF-Auth 得以实现更精细的数据权限管控。

  1. 灵活的弹性调度控制

作为弹性计算,EMR 提供丰富的细节参数,让用户可以根据自身业务特征定制弹性策略。

目前 EMR 已支持托管弹性策略,用户亦可以忽略复杂的参数,直接一键开启弹性计算模式。

  1. 完善的服务保障

在以上完备的技术方案基础上,阿里云提供了专业的技术支持,可以帮助优化方案的实现并解答各种疑难问题。

技术方案设计

百观数据平台,主要面向数据工程师、数据分析师和数据科学家,其业务场景以数据的即席分析为主,以定时调度任务为辅,并提供简单易读的 OLAP 查询,覆盖数据接入、数据清洗、数据分析与聚合、数据交付全流程。

数据接入

数据从外部系统,通过百观数据工程团队自研工具等方式,定时写入 OSS。这种方法简单直接,避免了各个数据引擎之间的对接和转换,最大程度提高研发效率。

数据清洗

数据接入 OSS 后,即可使用 Spark 和 Iceberg 等方式,通过拆解、整理和清洗等方式,最终接入数据湖,并生成 Catalog。这一步沿用了先前的 Iceberg 方案,并且会将数据作业集成到 Airflow 上,定时发送到 EMR 集群进行处理。

聚合与分析

在这一环节,数据分析师与数据科学家合作,完成聚合、分析及更多数据科学方面的研究。这部分工作主要是通过自建的 Notebook 提交到 EMR 集群,其计算环境复杂多样,不同场景下的计算量也有巨大差异。

EMR 的标准化、自研定制化、高灵敏弹性调度等特性能够很好地应对这种复杂数据研究的场景,不仅确保开发者灵活处理复杂数据,还降低了运维难度,甚至直接降低计算成本。

核心组件的实践

以下介绍三个核心组件的实践。

DLF on Iceberg 方案

在数据工程团队测试中,DLF 能够完美继承 Spark/Hive 表,同时也能够接入 Iceberg 表。但数据工程团队发现了潜在的致命问题,在大规模 Iceberg 表的场景中,DLF 疑似存在性能下降,这些性能问题会导致计算失败,致使核心业务受阻。在发现该隐患后,数据工程团队立刻将该问题上报给 EMR 产研团队,并且与其紧密合作,从多份日志中拼凑出问题的全貌,共同分析问题有可能的成因和解决方案。最终,EMR 产研团队成功解决该问题,由此可以打通 DLF 与 Iceberg 的高性能无缝集成,也实现了 LakeHouse 的完整构建。

EMR 集群弹性调度策略

阿里云 EMR 早先并未提供托管弹性调度,而是将调度配置直接交给用户选择,经验丰富的用户可以根据自身业务特性调配出多样化的弹性规则。数据工程团队先前直接使用当时托管的弹性调度算法,并未深入研究 EMR 弹性资源调度的问题。因此,尽管数据工程团队对该问题颇有见解,但由于缺乏实践操作和相关数据,且难以复刻生产环境进行测试,一旦调整不当,就会陷入"既无法满足业务响应,又无法及时回收空闲资源"的两难境地。于是,数据工程团队决定求助于 EMR 产研团队,而EMR 产研团队亦能及时响应,多次主动与百观数据团队进行沟通,最终共同设计出一套阶梯式的高效低成本的弹性调度模式。

目前EMR 托管弹性调度已上线三个月,这期间百观数据工程团队依托该功能持续稳定为公司业务提供支持,集群利用率由原先 45%左右提高至接近 70%。

OLAP 方案的打磨

数据工程团队此前使用AWS Athena,这套 OLAP 引擎依托于 Trino 实现了 Serverless 式的数据查询服务,这意味着:

  1. 已有的查询 SQL 均符合 Trino 语法
  2. 单条查询成本低
  3. Serverless Trino 的计算资源充足,性能有保障

阿里云数据产品生态包含多种类型的数据库,这些数据库在各自领适用领域内有足够强的优势。尽管目前没有直接提供 Serverless版本的Trino,但阿里云EMR内包含有社区版Trino。

数据工程团队对该场景的考量,优先是存量SQL兼容性,其次是成本,因此在做过几轮对比后,最终选择EMR Trino作为该场景的解决方案。

数据工程团队充分评估了阿里云倚天ARM ECS机型的性格规格,认为其卓越的内存计算能力与Trino的OLAP应用高度契合。基于倚天机型的EMR Trino不仅完美满足了兼容性需求,同时还在性价比上展现出巨大优势,对比测试结果如下:

方案 成本 SQL 兼容性 性能
EMR Trino x86_64 较高 兼容 一般
EMR Trino 倚天 相同规模显著低于 x86_64 兼容 相同成本下好于x86_64

最终,数据工程团队选择 EMR Trino 搭配倚天机型,这是符合业务需求的最优 OLAP 方案,且性价比提高 20%以上。得益于阿里云 EMR 高度开放的技术生态和其产研团队的精细打磨,这套技术方案在生产系统上长期稳定运行。

显著的提升

相较于百观先前使用的系统,在完成平台重构后,新旧平台在性能、成本等方面有显著收益。

性能层面

由于 EMR 集群性能的提升,以下指标得到了显著优化:

性能指标 重构前 重构后 优化百分比
EMR 集群启动速度 13min+ 3min+ 70%+
EMR 集群扩容速度 10min+ 2min+ 70%+
EMR 集群缩容速度 5min+ 2min+ 60%+
核心作业执行时间 45min+ 15min+ 60%+

成本层面

在同等数据规模、相同计算量的条件下,以下成本指标得到了显著优化:

成本指标 重构前 重构后 优化百分比
单位时间的计算成本 - 元/CU/时 - 中位数 1 CU按照1核CPU+4GB内存折算 0.72 0.23 68%

在此基础上,EMR 的月均成本也得到 50%以上的优化。

业务层面

得益于性能和成本方面的双重优化,业务层面获得了多方面收益:

  • 数据响应时间: 部分业务由小时级提高到分钟级,生产速度得到大幅提升。
  • 数据研发模式: 更快的数据生产有利于分析师进行更密集的数据操作,使团队间协作更为紧密。
  • 数据探查深度: 更强的计算性能有利于业务方进行更复杂的数据探查,以便得出更有价值的数据研究。
  • 业务增长空间: 总体优化为业务增长提供了有力支持。

总结与展望

百观科技作为数据要素市场的重要开拓者和数据技术的先进践行者,其业务团队和数据工程团队一致认可此次平台重构。百观 CTO 说:"本次EMR数据湖系统的构建,全面满足了百观的业务需求、提高计算效率、大幅降低成本,是百观与阿里云之间一次成功的深度合作,这离不开阿里云深厚技术积淀和阿里云同事们高效且专业的帮助。事实证明,阿里云 EMR 系列产品及背后的团队已经做到了'国际主流,国内领先'的水准。"

随着业务的发展,百观将继续开展更加多样化、更加有深度的数据洞察,这需要在技术架构、技术过程、技术工具等方面进行立体式升级。阿里云在数据场景还有更多成熟的解决方案,如:实时数仓 Hologres、EMR Serverless Spark 等,这些产品有着突出的优势,值得进一步尝试与合作,共同探索弹性计算的创新场景。

相关推荐
jjkkzzzz22 分钟前
Linux下的c/c++开发之操作Redis数据库
数据库·c++·redis
老华带你飞1 小时前
实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·实习记录小程序
源码技术栈2 小时前
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
java·大数据·云计算·云his·his系统·云医院·区域his
Elastic 中国社区官方博客2 小时前
Elasticsearch 索引副本数
大数据·数据库·elasticsearch·搜索引擎·全文检索
Eternity......2 小时前
SparkSQL基本操作
大数据·spark
冬瓜的编程笔记2 小时前
【八股战神篇】MySQL高频面试题
数据库·mysql·面试
268572592 小时前
Elasticsearch 初步认识
大数据·elasticsearch·搜索引擎·全文检索·es
python算法(魔法师版)3 小时前
网络编程入门(一)
大数据·网络·网络协议·计算机网络
赵渝强老师3 小时前
【赵渝强老师】Memcached的路由算法
数据库·redis·nosql·memcached