shanghaishanghai

好的,根据您提供的信息,我将以一名资深新闻记者和编辑的视角,撰写一篇高质量的新闻报道,力求深入、专业且引人入胜。

标题:作业帮大数据引擎革新:Spark全面替换Hive,资源节省超50%

引言:

在数字化浪潮席卷全球的今天,数据已成为企业发展的核心驱动力。如何高效地处理和分析海量数据,成为各行各业面临的共同挑战。近日,在线教育巨头作业帮宣布,其大数据计算引擎已完成从Apache Hive到Apache Spark的全面替换,实现了资源消耗的显著降低,降幅超过50%。这一技术革新不仅为作业帮自身带来了巨大的成本优势,也为整个大数据领域提供了宝贵的实践经验。

正文:

一、Hive的挑战与Spark的崛起

作业帮的大数据平台此前主要依赖于Apache Hive 2.3.7,用于数据仓库建设、即席查询、算法特征分析和实验效果统计等关键任务。Hive作为传统的数据仓库解决方案,在数据管理和计算方面具有一定的优势。然而,随着湖技术、云原生、引擎向量化等新兴技术的发展,以及业务对成本日益敏感,Hive的局限性逐渐显现出来。

具体而言,Hive在引擎生态、资源利用效率和系统稳定性方面面临挑战。相比之下,Apache Spark作为大数据计算领域的后起之秀,凭借其强大的功能和卓越的性能,已成为行业标配。Spark不仅支持SQL,还具备机器学习(ML)、流处理(Streaming)和图计算(GraphX)等多种能力,并支持多种编程语言。更重要的是,Spark在资源利用效率方面,通过Catalyst优化器和内存计算等技术,明显优于Hive。此外,Spark还支持除Yarn部署模式外的K8S部署,为在离线资源峰谷互补提供了可能。

Spark的崛起还体现在其强大的生态系统。众多开源项目,如Apache Iceberg和Apache Kyuubi,都对Spark进行了深度适配,这使得Spark在性能和功能方面都远超Hive。

二、架构升级:Kyuubi的引入与鉴权机制的优化

作业帮在进行计算引擎迭代时,充分考虑了SQL提交、认证和鉴权以及数据开发平台的适配等关键因素。在SQL提交方面,作业帮选择了Apache Kyuubi作为解决方案。Kyuubi不仅兼容了Spark Thrift Server(STS)的服务能力,还基于ZooKeeper实现了服务发现机制,保障了高可用性。此外,Kyuubi还针对ETL和即席查询等不同应用场景,设计了灵活、可选的Engine共享级别。相比之下,STS的Thrift Server和Driver在同一进程内,所有SQL都由Driver负责编译和执行,资源消耗高,高并发情况下容易出现服务节点异常。

在认证和鉴权方面,作业帮采用了与HiveServer2类似的鉴权逻辑,以兼顾项目效率。客户端(如beeline)访问时,通过Kyuubi实现信息透传到Spark App,二次开发Hive Metastore实现认证,结合Ranger Hive Metastore Plugin实现鉴权。而平台访问则直接与公司内部IPS系统对接实现认证,并通过AuthServer权限服务进行权限校验。这种方式执行速度更快,无需等待资源创建Kyuubi Engine。

三、迁移策略:工具化迁移与数据校验

为了尽快实现Hive到Spark的迁移,作业帮采用了工具化迁移的策略,替代了人工迁移。迁移工具首先通过调用离线调度平台接口获取Hive SQL,替换SQL中的时间等变量占位符,形成可执行Hive SQL。然后,解析可执行Hive SQL,基于规则转换为Spark SQL,并在测试库下创建目标表,将输出结果替换到测试表,再进行explain校验。

在资源低峰期执行Spark SQL任务,并与Hive的产出数据结果进行对比。数据校验方式包括基础类型对数(如sum(hash(xxx)))和复杂类型对数(如array类型、map类型和array\u003cmap\u003e类型)。同时,对比Yarn Application中的Aggregate Resource Allocation资源消耗指标。在数据准确且资源收益为正的情况下,持续双跑一段时间,无异常后切换为Spark引擎,并关注迁移任务接下来一周的异常情况。迁移首天出现异常可自动回滚。

四、迁移挑战与应对

在迁移过程中,作业帮也遇到了一些挑战,例如:

  • 平台功能对齐: 需要确保即席查询、例行调度、表/任务血缘、语法/语义检测、自定义UDF以及Holo/ES外表查询等功能与原平台保持一致。
  • SQL语法差异:Spark SQL 3.3.2较Hive 2.7语法校验更严格,例如map类型不支持group by、distinct、join key,数据类型自动转换和空值做map key等异常情况下的输出表现存在差异。
  • 稳定性问题: 需要通过调整相关参数来解决。

针对这些挑战,作业帮采取了以下措施:

  • 平台功能对齐: 逐步完善平台功能,确保与原平台一致。
  • SQL语法差异: 通过培训宣贯和整理用户使用手册的方式解决。
  • 稳定性问题: 通过存量任务双跑阶段覆盖绝大部分问题,并通过调整参数解决。

结论:

作业帮通过Spark全面替换Hive的技术实践,不仅实现了资源消耗的大幅降低,还为未来的技术发展奠定了坚实的基础。此次迁移不仅是一次技术升级,更是一次思维模式的转变。它充分展示了大数据技术在降本增效方面的巨大潜力,也为其他企业提供了可借鉴的经验。随着技术的不断进步,我们有理由相信,大数据将在未来发挥更加重要的作用,推动各行各业的数字化转型。

参考文献:

作业帮大数据团队. (2024, December 23). 资源节省超 50%!作业帮 Spark 全面替换 Hive 的技术实践. *InfoQ. https://www.infoq.cn/article/SXZhixk65MjUfEecrhGu
* Apache Kyuubi 微信公众号. (n.d.). (引自文章中图片)

后记:

这篇报道不仅详细介绍了作业帮在技术上的突破,也深入分析了其背后的动机和挑战。通过对技术细节的深入挖掘和对行业趋势的准确把握,我们希望能够为读者提供有价值的信息,并引发对大数据技术发展的更深层次的思考。作为一名资深新闻记者和编辑,我始终坚信,高质量的新闻报道不仅要传递信息,更要激发思考,推动社会进步。


>>> Read more <<<

Views: 11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注