当前位置: 首页 > article >正文

Taboola如何用GPU加速Spark处理海量数据

1. 项目背景与挑战解析Taboola作为全球领先的内容推荐平台每天需要处理海量的用户交互数据。其核心数据处理流程涉及从用户浏览器或移动设备采集数据经过多个数据中心处理最终生成个性化的广告推荐。这个过程中最关键的环节是构建页面视图(pageview)数据结构——一个包含1500多个字段、每小时产生超过1TB数据的庞大数据实体。传统架构依赖Apache Spark CPU集群处理这些数据但随着业务增长我们遇到了明显的瓶颈计算资源饥渴每小时1TB原始数据的处理需求加上2小时、6小时、12小时和48小时的延迟数据处理任务使得CPU集群长期处于高负载状态成本压力数据中心的硬件成本和运维开支随着集群规模线性增长扩展性限制新分析器的不断加入使得系统负载持续增加传统水平扩展方式已接近极限关键发现通过性能分析工具发现我们的Spark作业在CPU集群上运行时大量时间消耗在数据序列化、网络传输和磁盘I/O上实际计算资源利用率不足40%。2. GPU加速方案选型2.1 为什么选择RAPIDS Accelerator在评估多种加速方案后我们最终选择NVIDIA RAPIDS Accelerator for Apache Spark作为技术栈核心主要基于以下考量无缝集成作为Spark插件运行无需重写现有业务逻辑代码列式处理优势完美适配我们的宽表数据结构(1500列)成熟的生态支持由NVIDIA官方维护与Spark版本同步更新成本效益比初步测试显示GPU方案有望达到3倍以上的性价比提升2.2 硬件选型过程我们对比测试了多种NVIDIA GPU型号的性能表现GPU型号显存容量计算性能(TFLOPS)每小时处理能力性价比指数P10016GB9.30.8TB1.0(基准)V10032GB141.2TB1.5A10040GB19.51.6TB1.8A3024GB10.31.4TB2.1最终选择A30作为主力机型因其在性价比和显存容量间取得了最佳平衡特别适合我们的宽表数据处理场景。3. 迁移实施与性能优化3.1 基准测试方法论为确保测试结果具有代表性我们建立了严格的评估体系数据集使用网络星期一真实生产数据(1.5TB/小时的ZSTD压缩Parquet文件)查询样本选取15个最具代表性的生产查询覆盖聚合操作(占比42%)窗口函数(23%)UDF调用(18%)复杂嵌套查询(17%)评判标准设定最低3倍的加速比(X因子)作为迁移门槛3.2 参数调优实战初始测试结果令人失望部分查询甚至出现性能下降。通过系统调优我们发现了几个关键配置项# 关键Spark配置参数 spark.sql.files.maxPartitionBytes2g # 从默认128MB提升适应GPU大吞吐特性 spark.rapids.sql.concurrentGpuTasks4 # 优化GPU任务并发度 spark.rapids.sql.batchSizeBytes1g # 调整批处理大小减少内核启动开销 # Parquet读取优化 spark.rapids.sql.format.parquet.reader.footer.typeNATIVE经验分享使用NVIDIA Accelerated Spark Analysis工具可以自动生成针对特定工作负载的优化建议节省了大量手动调参时间。3.3 三大性能瓶颈突破3.3.1 Parquet解析优化原始Java实现的Parquet解析器成为首个瓶颈。当处理1500列的宽表时CPU需要串行解析所有列元数据即使查询只涉及其中少量列。解决方案改用Arrow C实现的Native Parquet阅读器调整文件布局减少row group数量实现元数据索引加速列定位优化后Parquet解析时间从占总查询时间的45%降至不足5%。3.3.2 网络瓶颈突破10GbE网卡无法满足GPU的数据供给需求导致计算单元经常处于饥饿状态。升级方案换装25GbE网卡调整Spark的shuffle服务配置spark.shuffle.service.enabledtrue spark.shuffle.io.maxRetries10 spark.shuffle.io.retryWait30s3.3.3 磁盘I/O重构发现SSD的RAID-1配置导致shuffle写入性能减半且无法满足GPU的高吞吐需求。最终方案替换为6TB NVMe驱动器(RAID-0)优化shuffle参数spark.local.dir/nvme/spark_temp spark.shuffle.spill.compresstrue spark.shuffle.compresstrue平衡GPU与NVMe配比(每2块A30配1块NVMe)4. Kubernetes生产部署4.1 集群架构设计从Mesos迁移到Kubernetes时我们采用了以下架构[Spark Driver Pod] ←→ [Executor Pods(每个Pod独占1GPU)] ↑ [K8s Device Plugin] ←─┘关键配置要点使用nvidia-docker2作为容器运行时通过K8s Device Plugin管理GPU资源为每个Executor Pod配置80%的显存预留(避免OOM)4.2 生产配置示例# k8GPUPodTemplateProduction.yml apiVersion: v1 kind: Pod spec: containers: - name: spark-executor resources: limits: nvidia.com/gpu: 1 memory: 64Gi requests: nvidia.com/gpu: 1 memory: 60Gi volumeMounts: - mountPath: /nvme/spark_temp name: spark-local volumes: - name: spark-local hostPath: path: /nvme/spark_temp type: Directory5. 性能成果与经验总结5.1 量化收益迁移后生产查询获得显著加速查询类型CPU平均耗时GPU平均耗时加速比广告主维度分析586.41s31.91s18.38x实验效果评估3021.6s102.92s29.36x媒体数据趋势222.94s9.8s22.75x收入小时统计487.44s95.03s5.13x整体来看单个A30 GPU可替代约200个CPU核心的计算能力数据中心TCO降低达65%。5.2 关键经验全栈视角调优GPU性能受限于整个数据处理链路中最慢的环节需要系统性地分析CPU、内存、网络、磁盘的协同效应资源配置黄金比例每块A30 GPU配比24GB显存 12个CPU线程 25Gb网络带宽 3TB NVMe存储监控体系升级# 示例GPU利用率监控查询 SELECT query_id, AVG(gpu_utilization) AS avg_gpu_util, MAX(executor_cpu_wait) AS max_cpu_stall FROM spark_metrics GROUP BY query_id HAVING avg_gpu_util 70 # 识别未充分利用的查询成本优化发现某些中等复杂度查询在GPU上反而性能下降最终采用混合执行模式简单查询仍用CPU复杂查询用GPU6. 未来优化方向当前架构仍有一些待改进空间动态资源分配基于查询复杂度自动选择CPU/GPU执行路径冷热数据分层将热点数据缓存在GPU显存中查询重写优化开发针对GPU特性的SQL优化器规则跨数据中心负载均衡利用GPU集群实现全局资源调度在实际运维中我们发现夜间批量作业的GPU利用率可以提升到85%以上而日间实时查询时段则在60%左右波动。这提示我们可以进一步优化资源调度策略比如在低峰期运行训练任务等计算密集型作业。

相关文章:

Taboola如何用GPU加速Spark处理海量数据

1. 项目背景与挑战解析Taboola作为全球领先的内容推荐平台,每天需要处理海量的用户交互数据。其核心数据处理流程涉及从用户浏览器或移动设备采集数据,经过多个数据中心处理,最终生成个性化的广告推荐。这个过程中,最关键的环节是…...

Windows Defender终极移除指南:三步彻底告别系统性能瓶颈!

Windows Defender终极移除指南:三步彻底告别系统性能瓶颈! 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com…...

从‘网红CP’到‘质量CPK’:给产品经理和项目经理的质量管理入门课

从“网红CP”到“质量CPK”:技术管理者必备的过程能力解码手册 当团队晨会上有人惊呼"这个需求迭代的CP值爆表了",新来的产品经理一脸茫然地以为大家在讨论办公室恋情——这或许就是数字化时代质量管理术语的尴尬现状。我们早已习惯用"CP…...

[特殊字符] GitHub README 改造接第一单:一个比“AI副业”更具体的小服务

先给结论:这个项目能做,但别把它包装成“AI代运营”或者“开源项目咨询”。 它真正卖的是一件很小、很具体的事: 帮独立开发者、小工具作者、开源项目维护者,把混乱的 GitHub README 改成更容易让人看懂、试用、点 Star 的项目门面。 这不是大生意,但很适合普通人做第一笔…...

PX4+FlightGear联合仿真入门:从QGroundControl连接、虚拟摇杆设置到首次飞行实操

PX4FlightGear联合仿真实战:从零操控到首次飞行全解析 当FlightGear的蓝天白云界面在屏幕上展开,而PX4控制台闪烁着待命光标时,许多无人机爱好者会陷入短暂的迷茫——环境搭建只是起点,真正的挑战在于如何让这架虚拟飞机听从指令翱…...

Phi-4-mini-flash-reasoning推理能力展示:解决经典计算机组成原理问题

Phi-4-mini-flash-reasoning推理能力展示:解决经典计算机组成原理问题 1. 开场白:当AI遇上计算机组成原理 最近测试了一款名为Phi-4-mini-flash-reasoning的AI模型,它在技术推理方面的表现让我眼前一亮。特别是当我拿计算机组成原理的经典问…...

MySQL查询返回空结果如何排查_检查where条件与连接逻辑

最常见的空结果原因是WHERE条件写错,包括值不存在、类型不一致(如VARCHAR字段未加引号导致隐式转换)、大小写敏感、NULL判断错误、LEFT JOIN后WHERE过滤右表字段、字段或表名拼写错误、别名在WHERE中不可用、保留字未加反引号、时区不一致导致…...

Jetway MTX-TWL1工业主板:无风扇设计与工业自动化应用

1. Jetway MTX-TWL1工业级主板深度解析 在工业自动化和嵌入式系统领域,选择一款可靠的主板往往意味着项目成功了一半。今天我要详细介绍的Jetway MTX-TWL1就是这样一款专为严苛环境设计的工业级解决方案。作为一款采用Intel Twin Lake处理器(N150/N250&a…...

OpCore Simplify:智能配置黑苹果的终极解决方案

OpCore Simplify:智能配置黑苹果的终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而头疼吗&#x…...

【DOA估计】基于均匀圆阵相干信号二维doa估计Matlab实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

PEMFC水淹膜干故障深度诊断【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于FLUENT的多物理场仿真与故障数据集构建&#x…...

终极指南:5分钟打造你的专属Zotero插件商店,告别插件安装烦恼

终极指南:5分钟打造你的专属Zotero插件商店,告别插件安装烦恼 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zo…...

MySQL数据库突然变成只读了?别慌,5分钟教你用SET GLOBAL read_only=0搞定

MySQL数据库突然变成只读了?5分钟紧急恢复写入权限指南 问题现象与紧急判断 凌晨三点,你正熬夜赶一个紧急版本上线,突然发现应用日志里爆出一连串刺眼的错误:"The MySQL server is running with the --read-only option so i…...

【202511】Cosmos-Predict2.5-02-模型篇:用于PhysicalAI的基于视频基础模型的世界模拟【网络架构:DiT】【视觉Tokenizer:WAN2.1 VAE】【16fps】

《World Simulation with Video Foundation Models for Physical AI》 Method 3. 方法 In this section, we first discuss our flow-matching formulation and then present the network architecture. 在本节中,我们首先讨论我们的 flow-matching 表述,然后介绍网络架构。…...

Vue2项目实战:如何给你的原生下拉框加上‘模糊搜索’和‘多选标签’功能(附完整代码)

Vue2下拉框功能升级实战&#xff1a;模糊搜索与多选标签的优雅实现 下拉框作为表单交互的核心组件之一&#xff0c;其用户体验直接影响着系统的整体易用性。传统的原生<select>元素功能单一&#xff0c;无法满足现代Web应用对搜索过滤、多选标签等高级交互的需求。本文将…...

数字随机存内计算(DS-CIM)架构解析与边缘AI应用

1. 数字随机存内计算架构的技术背景边缘AI设备面临着计算能力与能耗之间的根本矛盾。以ResNet-18为例&#xff0c;单张224x224图像的前向推理需要约1.8G次乘加运算(MAC)&#xff0c;而典型的边缘设备功耗预算往往不超过1W。传统数字电路采用二进制加权计算&#xff0c;虽然精度…...

Unity新手避坑指南:DoTween插件从安装到第一个动画的保姆级教程

Unity新手避坑指南&#xff1a;DoTween插件从安装到第一个动画的保姆级教程 第一次打开Unity的Package Manager时&#xff0c;许多开发者会被琳琅满目的插件列表晃花了眼。当你在Asset Store搜索"动画插件"时&#xff0c;DoTween总会出现在推荐列表的前几位——这不是…...

ARM CoreSight ETM11调试技术详解与应用实践

1. ARM CoreSight ETM11技术架构解析作为ARM11处理器家族的核心调试组件&#xff0c;CoreSight ETM11&#xff08;Embedded Trace Macrocell&#xff09;采用三级流水线跟踪架构&#xff0c;包含指令采集、数据标记和协议封装三个主要阶段。其创新性地通过硬件级指令插桩技术&a…...

MediaCreationTool.bat:让Windows系统安装变得前所未有的简单

MediaCreationTool.bat&#xff1a;让Windows系统安装变得前所未有的简单 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

TPFanCtrl2:ThinkPad双风扇嵌入式控制器直连温控架构解析与128级精准调速优化方案

TPFanCtrl2&#xff1a;ThinkPad双风扇嵌入式控制器直连温控架构解析与128级精准调速优化方案 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 TPFanCtrl2是专为ThinkPa…...

原神60帧限制破解指南:如何安全解锁高帧率游戏体验

原神60帧限制破解指南&#xff1a;如何安全解锁高帧率游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否在原神中感受过画面卡顿&#xff1f;是否觉得60帧的限制让你无法充分…...

自动驾驶系统模型驱动开发与ROS 2集成实践

1. 自动驾驶系统模型开发的关键挑战在开发自动驾驶系统时&#xff0c;工程师们面临着两个看似矛盾的需求&#xff1a;一方面需要处理来自各种传感器&#xff08;如摄像头、激光雷达、毫米波雷达等&#xff09;的实时数据流&#xff0c;另一方面又要确保控制指令的精确时序。这种…...

详解中间人攻击中的流量欺骗与流量劫持总结,黑客技术零基础入门到精通实战教程建议收藏!

中间人攻击简介 中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称MITM攻击&#xff09;是一种网络安全攻击&#xff0c;攻击者通过在通信的两端之间插入恶意节点&#xff0c;从而达到监视、篡改或劫持通信流量的效果 中间人攻击常见的手法包括: ARP 欺骗(AR…...

5分钟掌握城通网盘直连解析工具:告别龟速下载的终极指南

5分钟掌握城通网盘直连解析工具&#xff1a;告别龟速下载的终极指南 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾经面对城通网盘的下载页面&#xff0c;看着那几十KB的下载速度而陷入绝望&a…...

告别卡顿!用Advanced SystemCare 16给你的旧电脑来一次深度SPA(附保姆级设置指南)

让老旧电脑重获新生的终极优化指南&#xff1a;Advanced SystemCare 16实战手册 你是否还记得刚买电脑时那种丝滑流畅的体验&#xff1f;随着时间推移&#xff0c;系统逐渐变得迟缓&#xff0c;开机时间从几秒变成几分钟&#xff0c;打开浏览器都要等上半天。这不是你的错觉—…...

Firefox兼容性深度解析:GM_addElement底层机制揭秘

Firefox兼容性深度解析&#xff1a;GM_addElement底层机制揭秘 【免费下载链接】scriptcat ScriptCat, a browser extension that can execute userscript; 脚本猫&#xff0c;一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat …...

【技术视角】从0到1拆解机乎AI:AI社交平台的技术架构与产品设计

前言最近在研究AI社交赛道&#xff0c;发现了一个有意思的产品——机乎AI。作为国内头部的AI社交平台&#xff0c;它的架构设计和产品逻辑有不少值得学习的地方。今天从技术视角做一个深度拆解&#xff0c;聊聊它的核心机制和技术实现思路。一、产品定位与技术选型机乎AI的产品…...

2026 AI社交发展报告:Agent社交如何成为下一代数字生态的核心

数据来源&#xff1a;机乎平台2026年2-4月公开运营数据、Moltbook行业分析报告、长江证券研究报告&#xff08;2026年2月&#xff09;、国家网信办等五部门《人工智能拟人化互动服务管理暂行办法》&#xff08;2026年4月10日公布&#xff09;、GII全球AI社交市场报告&#xff0…...

如何永久保存微信聊天记录?这个免费工具让你的数字记忆永不丢失

如何永久保存微信聊天记录&#xff1f;这个免费工具让你的数字记忆永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending…...

从零开始学iOS开发(第三十二篇):SwiftUI 拖拽交互 —— 构建流畅的拖放体验

欢迎来到本系列教程的第三十二篇。在前三十一篇中&#xff0c;你已经学习了从Swift基础到数据可视化的全方位iOS开发技能。现在&#xff0c;你能够构建出功能完善、数据清晰的应用了。但是&#xff0c;如何让用户与应用进行更自然的交互&#xff1f;如何让用户通过拖拽来重新排…...