导读 火花思维作为在线教育领域的佼佼者,深知数据对于决策和运营的重要性。为进一步释放数据资源的价值,公司从 0 到 1 构建了一站式数据开发治理平台,实现了数据集成、数据开发、数据分析、数据服务等全流程整合,为公司的长远发展奠定了坚实的数据基础。
1. 背景
2. 产品简介
3. 关键技术与创新点
4. 实施与运营
5. 成效与收获
6. 总结与展望
01
数据开放自助程度明显不足,严重制约了数据价值的充分释放; 系统性故障频发,对数据资产的可靠性构成了严重挑战; ETL 效率低下已成为制约数据处理能力的关键因素。为了解决这些问题,我们需要一个更加高效、智能的数据开发治理平台,以提升数据价值的挖掘能力、保障数据资产的可靠性、优化数据处理效率,并降低技术成本。
产品简介
1. 功能介绍
离线开发模块:此模块致力于为数据生产者提供高效的数据处理工具。它支持定时及依赖触发的离线任务,任务类型丰富,涵盖 HiveSQL、DorisSQL、Python、Mysql 与 Hive 间的数据交互,以及 Hive 至 ES/MQ、Hive 至 Doris 的数据同步。此外,我们提供了一键 API 生成功能,使得数据消费者能够便捷地通过接口获取所需数据,极大地提升了数据获取的效率。 实时开发模块:基于 Spark 和 Flink 两大引擎,我们构建了准实时/实时任务开发平台。目前,该平台已成功支撑运营分析、指标监控、日志采集、CDC 同步等多元化场景的需求,为用户提供实时数据处理和分析的能力。 运维中心模块:在运维方面,我们提供多维度的看板分析,从任务成功率、及时率、成本等多个角度全面展示数据处理的状况。同时,我们还支持上下游查询、重跑当前及下游、数据回溯、批量下线、任务监控等基础功能,确保数据处理流程的顺畅与高效。 自助提数模块:该功能基于 Hive、Spark 和 Presto 三种引擎,为数据分析师提供了强大的 SQL 交互能力,使他们能够轻松地提取和下载所需数据。此外,我们还特别针对增长业务,提供了用户三方标签的提取和下载功能,满足用户在增长业务场景下的数据需求。 数据地图模块:数据地图作为平台的重要组成部分,为用户提供了详尽的数据资产信息。用户可以通过该模块查看数据目录、明细信息、血缘关系、调度信息、更新记录以及生产逻辑等关键信息,从而更好地理解和利用数据资源。 控制台模块:控制台作为项目管理员和系统管理员的操作后台,具备强大的管理功能。管理员可以通过该模块管理项目成员、数据源、库表权限、队列分配以及敏感信息查询记录等,确保数据的安全性和合规性。
2. 架构设计
交互层:采用了主流的 Vue 框架和 Monaco 插件,为用户提供了简洁直观的数据探查和任务发布界面。用户可以通过简单的操作,轻松地进行标准化 ETL 流程的定义和执行。此外,用户交互层还提供了丰富的可视化功能,使用户能够直观地监控和管理任务的执行情况。交互层还支持多语言界面,方便全球用户使用。 服务层:这些服务包括 SQL 开发套件、集成调试、依赖推荐、元数据管理等。此外,服务层也为各自项目提供了全方位的权限管理和资源管理功能。服务层还提供 API 接口,方便与其他系统进行集成。该层整体采用微服务架构,服务之间的界限和功能清晰,不同模块不同服务,各自按照需求场景选择适合的技术栈和扩展应用,同时,独立部署和运行,这有助于提高开发部署效率以及系统容错性。 引擎层:通过对接各种生态组件,并封装存储计算能力,使得上层应用无需关心过多的技术栈和升级优化。例如,HiveSql 调试在引擎层既支持 Hive On Tez,也支持 SparkSql,并兼容各自的参数优化。这使得用户可以灵活地选择适合自己业务需求的引擎进行数据处理。引擎层还提供了丰富的插件和横向扩展机制,能够根据用户的需求进行定制化开发。引擎层还支持多租户模式,方便多个项目共享数据工厂资源。 组件层:数据工厂的底层组件包括调度引擎所依赖的 Airflow、Python 引擎依赖的腾讯云 SCF 产品 API 等。这些底层组件为数据工厂提供了稳定可靠的运行基础。底层组件还采用了高可用架构,支持容错处理和数据备份,确保数据工厂的稳定运行。底层组件还支持分布式架构,方便水平扩展和性能提升。
3. 使用场景
T/H+x链路:T/H+x 是行业通用的离线计算,主要用于离线数仓、数据报表、应用统计等场景。具体实现方式是通过数据集成组件定时将 Mysql、日志等数据源的数据同步到数仓 ODS 层,其中 80% 的数据会被加工成主题宽表,然后被其他数据生产者利用,按需构建 ADS 应用数据,并最终以数据库表、消息队列或者 API 方式提供数据服务。 分钟级链路:分钟级应用主要针对 OLAP 多维分析场景,通过 FlinkCDC 等方式将数据源数据同步到 OLAP 引擎,然后逐层定时拉宽聚合,最终以 API 方式对外提供数据。早期的 OLAP 引擎主要是 Kudu 和 ClickHouse,现在以 Doris 为主。 实时链路:实时计算链路主要包括以 Spark Streaming 为核心计算栈的定制化数据服务和以 Flink 和 IceBerg 为核心的实时湖仓。其中,Spark Streaming 主要用于历史遗留的 ToC 数据场景,如学员学情报告、CRM 运营数据、用户标签建设等。而 IceBerg 则主要用于解决实时日志流水链路,Flink 则既可以用于构建实时数据报表,也可以用于运营监控统计。 AI 链路:AI 计算链路主要用于训练和推理模型,包括数据预处理、模型训练、模型评估和模型部署等环节。
关键技术与创新点
1. 离线 ETL
2. 调度系统
3. 实时计算
4. 监控预警
实施与运营
1. 演进历程
2021 年 11 月,Athena 数据工厂迈出了坚实的第一步,v1.0 版本的上线标志着它正式踏入数据开发领域。这个版本以离线开发、调度配置、任务运维三大核心功能为基础,为用户提供了稳定可靠的数据开发平台。 仅仅三个月后,2022 年 2 月,我们成功完成了数据仓库的 HiveSQL 和 mysql<->hive 相关任务的全量迁移,这标志着 Athena 数据工厂在支撑火花思维基础数据处理能力上迈出了重要的一步。 同年 4 月,我们又实现了 Hadoop 集群从依赖社区自建到商业化 EMR 的顺利迁移,这一变革极大地提升了基础组件的稳定性和性能。 2022 年 7 月,Athena 数据工厂再次迎来重大更新,新增了 Doris 引擎和 SparkSQL 引擎,为用户提供了更多样化的数据处理引擎的选择。此外,上线一键 API 生成功能,方便数据生产者通过 API 通道分享数据。 同年 10 月,我们整合了原《大数据实时开发平台》至 Athena 数据工厂,构建了独立的实时开发模块,以满足用户对于实时数据处理的需求。 进入 2023 年,Athena 数据工厂的迭代速度更是加快。3 月实现表级别血缘关系解析以及整合公司 GitLab 实现版本管理,并基于此上线依赖推荐、跨周期依赖、数据回溯、BI 建模血缘跟踪等辅助开发能力。 6 月,成功实现了离线开发和自主提数的 SQL 引擎对商业化 ServerLess 的适配,进一步提升了数据处理效率。 8 月推出了字段级血缘关系以及数据监控功能,为用户提供了更加精细化的数据管理和质量保证。同时,基于 HiveMeta 实现表资产生命周期治理能力。 2023 年 11 月,基于腾讯云云函数产品,我们推出了 Python 开发模块,为 BA、算法、研发等角色提供了解决 SQL 无法实现或较难实现场景的全新功能。 到了 2024 年 1 月,我们再次进行了一次重大的技术革新,适配 Hdfs 迁移至 COS,实现了用户无感的存算分离,为各项目空间提供了更加灵活和高效的数据存储和计算服务。
2. 日常运营
成效与收获
1. 释放自助能力
2. 提升可靠性
事前检查:在任务上线之前,Athena 数据工厂会进行强逻辑的检查,以确保数据任务的稳定、正确产出。这些检查规则包括脚本语法、调度配置、资源权限等多方面的检查,可以避免数据上线后出现错误和异常,从根本上降低值班人员起夜率。
事中预警:在数据生产和消费过程中,平台会进行实时监控,并提供丰富的预警机制。当数据出现异常或达到预警阈值时,平台会及时发出预警信号,通知相关人员进行处理。这样就可以及时发现和解决数据异常,避免数据丢失和错误,保证数据的可靠性和稳定性。
事后复盘:故障发生后,QA 同学利用 GPT 依据 5why 分析法构建了复盘机器人,带领故障干洗人对 SLA 问题进行深度引导分析,找到根本解决方法,并预防类似问题的再次发生。
3. 优化 ETL 效率
DAG 优化:首先,通过分析 Airflow 节点资源利用率,结合各类型任务 Client 执行所需的 CPU 和内存资源,合理分配整体 Pool 和 Worker Pool 的阈值,实现执行节点任务吞吐最大化。其次,由于各类型 DAG 运行周期交叉,最典型的就是天调度 DAG 与零散 DAG 的交叉,会发生调度资源、算力资源甚至 IO 资源竞抢,通过分析统计各 DAG 任务重要性和影响度,以及任务特征,合理分配各DAG 的 Pool 大小,实现整体资源利用最大化。最后,根据单 DAG 上依赖模型和各任务自身特点,动态调整各 SLA 等级的任务权重,让重依赖、重保障的任务尽早运行,从而实现更高效的任务执行。 慢任务优化:治理团队投入最大的精力就是识别优化慢 SQL,而慢 SQL 最常见的场景就是两种:(1)数据扫描量大,要么忘记加分区限制要么读取分区太多;(2)通常是嵌套 With as 较多临时查询的任务,导致解析计划中某一个或几个Reduce 卡住,但写 SQL 的人员优先满足计算口径,而忽略数据倾斜或笛卡尔问题。由于目前底层 SQL 算力引擎已弹性,故在基线保障和成本控制的背景下,优先解决慢任务是效果最佳的治理手段,也是持续保障任务平均执行效率和性能的最佳实践。 组件优化:无论是 SQL 任务或是集成任务,都会依赖其他组件,而很多时候,随着数据量或读写压力的增加,组件出现性能瓶颈,而在任务角度观察是整体运行变慢或夯死,这时候就可以通过多维分析任务运行数据,观测拐点的任务特征,结合干系组件的性能监控波动,识别并对症下药。例如:JournalNode、RDBS 以及磁盘故障等。
4. 降低成本
总结与展望
1. 经验教训
注重目标用户体验:我们深刻认识到用户体验是平台成功的关键因素。在平台建设前期,团队投入了大量的时间与精力,组织数次产品 MVP 功能调研问卷,对目标用户群体进行了深入的调研,明确了他们的需求和期望。这不仅帮助我们确定了平台需要实现的核心功能,还让我们能够避免在设计过程中添加不必要的功能和复杂性,确保平台始终保持简洁、直观和易于使用的特性。此外,为了进一步优化用户体验,产品上线首年每月进行 Top3 用户测试和反馈收集,倾听用户的声音,并根据他们的反馈对平台进行了持续改进。 选择合适的技术栈:选择合适的技术栈对于平台的成功同样至关重要。在选择技术栈时,我们充分考虑了平台规模、性能需求、可扩展性以及维护成本等因素。我们进行了深入的技术调研和评估,与业内专家进行了充分的沟通和交流,最终选择了既符合平台需求又具有前瞻性的技术组合。 构建可扩展的架构:在构建平台的过程中,我们还特别注重架构的可扩展性。我们深知,随着业务的发展和数据的增长,平台的架构必须能够轻松应对未来的挑战。因此,我们采用了分布式系统、微服务架构等技术手段,确保平台能够灵活地扩展和适应新的需求。这种可扩展的架构不仅提高了平台的性能和稳定性,还为我们后续的维护和升级带来了极大的便利。 学习和不断改进:产品构建是一个不断学习和改进的过程。在产品的开发、测试、上线和运营等各个阶段,我们都保持高度的敏感性和警觉性,不断反思和评估平台的性能、用户需求反馈。虽然我们暂未建立成熟的“数据飞轮”,但积极收集和分析数据,通过数据驱动的方式发现平台存在的问题和不足,并制定相应的改进措施。这种持续改进的态度不仅帮助我们不断优化平台的功能和用户体验,还让我们能够紧跟行业发展的步伐,保持平台的竞争力和创新性。
2. 未来迭代
对于用户自助开发过程中的代码调试和报错任务,提供基于 AI 的分析协助能力。利用大语言模型,我们能够快速准确地理解用户的问题,并提供有针对性的解决方案。这种智能化的分析协助能力不仅可以提高用户的工作效率,还可以减少用户的焦虑和压力,提升他们的使用体验。
优化可观测能力,解决大任务等对稳定性和性能带来的系统性负面影响。持续评估和优化计算资源的性能,确保它们在处理大量数据时高效运行。定期进行基准测试和性能评估,以确定计算资源的瓶颈和潜在优化机会。利用性能监控工具和指标来实时监测计算资源的使用情况,并及时采取措施解决性能问题。同时,优化计算资源的配置,例如调整 CPU、内存、存储等参数,以提高资源利用率和性能。
将核心功能和底层引擎容器化,这样可以实现资源的动态分配和管理,提高系统的灵活性和可扩展性。同时,可以更轻松地部署和管理应用程序,提高资源利用率和效率,降低成本,并确保系统的稳定性和可靠性。同时,要开始在架构层次思考低成本支持跨平台和云原生应用,这可以提高系统的灵活性和可扩展性,同时降低开发和维护成本。