百观科技基于阿里云 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 等,这些产品有着突出的优势,值得进一步尝试与合作,共同探索弹性计算的创新场景。

相关推荐
·薯条大王3 小时前
MySQL联合查询
数据库·mysql
TDengine (老段)4 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
morris1315 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
hycccccch5 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
这个懒人6 小时前
深入解析Translog机制:Elasticsearch的数据守护者
数据库·elasticsearch·nosql·translog
Yan-英杰6 小时前
【百日精通JAVA | SQL篇 | 第二篇】数据库操作
服务器·数据库·sql
NineData6 小时前
NineData云原生智能数据管理平台新功能发布|2025年3月版
数据库
百代繁华一朝都-绮罗生8 小时前
检查是否存在占用内存过大的SQL
数据库·sql
吾日三省吾码8 小时前
Python 脚本:自动化你的日常任务
数据库·python·自动化
CZIDC8 小时前
win11 系统环境下 新安装 WSL ubuntu + ssh + gnome 桌面环境
数据库·ubuntu·ssh