写点什么

从 Hadoop 到 Kubernetes:Pinterest 在 AWS EKS 上的可扩展 Spark 架构

  • 2025-07-29
    北京
  • 本文字数:1339 字

    阅读完需:约 4 分钟

大小:648.47K时长:03:41
从Hadoop到Kubernetes:Pinterest在AWS EKS上的可扩展Spark架构

Pinterest最近将其基于Hadoop的数据平台替换为Moka,这是一个在 AWS EKS 上运行 Spark 的 Kubernetes 原生系统。Moka 实现了容器化作业隔离,支持基于 ARM 的实例,通过 YuniKorn 改进调度,并简化部署,同时降低基础设施成本,提高了数据处理工作负载的效率。

 

Pinterest 做出了一个战略性决定,从传统的基于Hadoop的架构转型到基于KubernetesSpark模型,更好地与现代基础设施实践保持一致。它选择 Kubernetes 是因为它对容器编排和安全性的原生支持,以及它在部署混合实例类型(如 ARM 和 x86)方面的灵活性:

 

凭借这些需求,我们在 2022 年对在各种平台上运行 Spark 进行了全面评估。我们倾向于 Kubernetes 为中心的框架,因为它们提供了以下优势:基于容器的隔离性和安全性,作为平台的一等公民,易于部署,内置了框架和性能调整选项。

 

此外,Moka 在传统平台上引入了关键的成本和效率改进。通过利用基于容器的隔离,Pinterest 将具有不同安全要求的工作负载整合到共享集群中,从而减少了对多个集群的需求。

 

Pinterest 的工程师也承认,“基于容器的系统提供了更强的隔离,允许移除专用但利用率低的 Hadoop 环境,转而在同一 Moka 集群上运行具有不同安全要求的作业。”该平台支持基于ARM的实例和机会式自动扩展,在非高峰时段扩展集群,进一步有助于基础设施成本的节省。

 

替换 Hadoop 需要重新设计与作业提交、调度、存储和可观测性相关的几个关键组件——“多年来,Hadoop 和 Monarch (Pinterest 的 Hadoop 平台)已经涵盖了大量的功能。构建一个替代方案意味着开发替代品...”。Pinterest 开发了新的服务,如用于作业提交的 Archer,采用Apache YuniKorn进行基于队列的调度,将存储从HDFS迁移到S3,并集成了Apache Celeborn远程混洗服务,以保持大规模的性能。


Moka 最初的高级设计(来源

 

在 Moka 的初始设计中,Spinner,Pinterest 基于Airflow的编排系统,将计划的工作流程分解为单独的作业提交,并发送给 Archer,即 EKS 作业提交服务。Archer 将每个作业转换为 Kubernetes 自定义资源,并提交给支持 Spark 的 EKS 集群。Archer 处理作业排队、状态跟踪和与 Kubernetes API 的集成,实现跨集群的可靠部署和高效资源路由,同时保持与现有工作流程的兼容性。


Spark Operator(来源

 

Pinterest 的工程师选择使用Spark Operator在 Kubernetes 上原生执行 Spark,并使用 Apache YuniKorn 进行批量调度。Spark Operator 公开了 SparkApplication 自定义资源定义(Custom Resource Definition,CRD),允许以声明方式的定义 Spark 应用程序,并将所有底层提交细节留给 Spark Operator 处理。在内部,Spark Operator 仍然使用原生的 spark-submit 命令。


Moka 资源管理(来源

 

YuniKorn 提供基于队列的调度、应用程序配额和抢占,并使 Pinterest 能够在团队之间强制执行资源隔离,并根据工作负载层和业务关键性动态调整作业的优先级。

 

一旦 YuniKorn 调度作业,SparkSQL作业就会连接到Hive Metastore,然后使用来自 AWS ECR 的容器镜像执行工作负载。在执行过程中,Archer 跟踪作业状态,系统将日志上传到 S3,将指标上传到内部仪表板。用户可以通过网络代理访问正在运行的作业 UI,也可以通过 Spark History Server 检索历史日志,所有这些都可以通过只读的 Moka UI 呈现出来。

 

原文链接:

https://www.infoq.com/news/2025/07/pinterest-spark-kubernetes/

2025-07-29 12:005512

评论

发布
暂无评论

系统性能分析从入门到进阶

阿里巴巴中间件

云计算 阿里云 云原生 中间件

如何画好流程图

Hockor

前端 流程图

招聘|欢迎加入非凸,学习Rust,了解内存和线程安全问题

非凸科技

单线程的 JavaScript 是怎么实现异步的?

CRMEB

可能是全网第一个使用RediSearch实战的项目

越长大越悲伤

redis 中文分词 全文检索 SpringBoot 2 实战案例

架构实战训练营模块七

刘帅

对话达梦副总经理冯源 | 假如你身处被“科技制裁”的俄罗斯-墨天轮专访

墨天轮

数据库 oracle 国产数据库 达梦

我和TiDB的故事 | 毫无准备地不期而遇,却想说与你相遇好幸运

TiDB 社区干货传送门

湖仓一体架构解析

五分钟学大数据

数据湖 4月月更

怒肝 JavaScript 数据结构 — 数组篇(二)

杨成功

JavaScript 数据结构 4月月更

Go Error 最佳实践

宇宙之一粟

Go 语言 Error 4月月更

Ben Fisch等联创爆出道德、法律丑闻,Espresso Systems风雨飘摇

BlockChain先知

什么是数据库?5分钟深入理解数据库原理。

喀拉峻

数据库 网络安全

【ELT.ZIP】《CCF开源高校行第一期》观后感

ELT.ZIP

Linux LVS OpenHarmony ELT.ZIP CCF开源高校行

今晚7点直播!聊一聊“进击的开源操作系统”

OpenAnolis小助手

InfoQ 龙蜥社区 CentOS停服 开源操作系统 今晚直播

后端开发【干货知识】—Redis,Memcached,Nginx网络组件

Linux服务器开发

reactor 中间件 后端开发 组件 Linux后台开发

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

阿里巴巴中间件

阿里云 云原生 中间件 混沌工程

张国荣《热·情》演唱会再现荧幕:AI修复解锁的经典与视听生活

脑极体

面试突击36:线程安全问题是怎么产生的?

王磊

Java java面试

当东数西算变成一场西游记……

脑极体

集合去重的境界

flyhero

Java 程序员 后端 4月月更

数字化转型-信息技术引发的系统性变革

Geek_XOXO

企业数字化转型

百度智能云天工边云融合物联网平台,助力设备高效上云

百度开发者中心

多批爱心物资驰援,妙可蓝多助力上海抗疫

科技新消息

SkyWalking 分布式系统追踪

Rubble

4月日更

BFF治理与优化实践

码猿外

架构 微服务 BFF 软件架构治理

漏洞挖掘之目录遍历漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

淘特 Flutter 流畅度优化实践 · 二期

阿里巴巴终端技术

flutter

能直接调试的开放API?这个API Hub绝了

Liam

Jmeter Postman API swagger Mock

【ELT.ZIP】OpenHarmony啃论文俱乐部——细数生活中的压缩点滴

ELT.ZIP

OpenHarmony 数据压缩 ELT.ZIP

企业为什么需要文档协同

小炮

文档协同 团队协同

从Hadoop到Kubernetes:Pinterest在AWS EKS上的可扩展Spark架构_架构_Eran Stiller_InfoQ精选文章