为何 SPARK 在应用 GPU 后表现更出色

news2024/11/23 3:08:25

什么是 APACHE SPARK?

伴随数据的巨量增长,Apache Spark 已成为分布式横向扩展数据处理的热门框架之一,可以在本地和云端数以百万计的服务器上运行。

Apache Spark 是应用于大型数据处理的快速通用分析引擎,可在 YARN、Apache Mesos、Kubernetes 上运行,也可独立或在云端运行。借助用于 SQL、流处理、机器学习和图形处理的高级运算符及库,Spark 使开发者能够通过交互式 shell、笔记本或应用程序包来使用 Scala、Python、R 或 SQL 轻松构建并行应用程序。通过功能编程模型和相关查询引擎 Catalyst,Spark 支持批量和交互式分析,可将作业转换为查询方案,并跨集群节点调度查询方案中的操作。

Spark 核心数据处理引擎之上存在多个用于 SQL 和 DataFrame、机器学习、GraphX、图形计算和流处理的库。用户可在来自各种数据源(例如 HDFS、Alluxio、Apache Cassandra、Apache HBase 或 Apache Hive)的海量数据集上结合使用这些库。

Apache Spark 组件

为何选择 APACHE SPARK?

Apache Spark 继续了 Apache Hadoop 在 15 年前开始的大数据分析工作,并已成为大规模分布式数据处理的先进框架。

2010 年代初,大数据分析的流行促使 Hadoop 的使用量增长,而 Hadoop MapReduce 的性能限制成为了阻碍。MapReduce 的性能因其磁盘检查点结果模型而遭遇瓶颈。同时,MapReduce 的低级别编程模型也限制了 Hadoop 的采用。

Apache Spark 最初是加利福尼亚大学伯克利分校 AMPLab 的一个研究项目,其目标是维持 MapReduce 可扩展、分布式、容错处理框架的优势,同时促使该框架变得更高效、更易于使用。Spark 能够重复利用多线程轻量级任务(并非启动和终止进程),还能跨迭代将数据缓存于内存中,无需在各阶段间写入磁盘,因此 Spark 在数据流程和迭代算法方面比 MapReduce 更高效。Spark 使用容错分布式 DataFrame 来增强并行性能,并可实现 SQL 的易用性。

Spark 于 2014 年成为 Apache 软件基金会的高级项目,如今,遍及 16000 多家企业和组织的成千上万名数据工程师和科学家都在使用 Spark。Spark 在 Hadoop 的基础上继往开来的原因之一是,与 MapReduce 相比,其内存数据处理性能能够以快达 100 倍的速度完成某些任务。这些功能由 250 多家公司的 1000 多位贡献者在一个开放社区中创建。Databricks 的创始人率先进行了这项工作,仅仅是其平台每天就运行着 100 多万个虚拟机来分析数据。

为何 SPARK 在应用 GPU 后表现更出色

Spark 的各个版本均有所改进,有助于更轻松地编程和执行。Apache Spark 3.0 通过创新来维持此趋势,改善 Spark SQL 性能和 NVIDIA GPU 加速。

图形处理器 (GPU) 因其超低浮点运算(性能)单价深受欢迎,其还可通过加快多核服务器的并行处理速度,解决当前的计算性能瓶颈问题。CPU 由专为按序串行处理优化的几个核心组成。而 GPU 则拥有一个大规模并行架构,当中包含数千个更小、更高效的核心,专为同时处理多重任务而设计。与仅包含 CPU 的配置相比,GPU 的数据处理速度快得多。过去数年中,GPU 一直推动 DL 和机器学习 (ML) 模型训练的发展。然而,数据科学家 80% 的时间都花费在了数据预处理上。

虽然 Spark 是以分割数据形式在节点分区中分发计算,但其向来是在 CPU 核心上执行计算操作。Spark 虽然通过添加内存数据处理缓解了 Hadoop 中存在的 I/O 问题,但现在瓶颈问题已从 I/O 转变为日益增多的应用程序的计算问题。随着 GPU 加速计算的出现,此性能瓶颈问题迎刃而解。

为满足并超越数据处理的现代需求,NVIDIA 一直与 Apache Spark 社区进行合作,通过推出 Spark 3.0 版本和用于 Spark 的开源 RAPIDS 加速器,将 GPU 应用于 Spark 的本机处理。在 Spark 中引入 GPU 加速具有诸多优势:

  • 数据处理、查询和模型训练能够更快完成,缩短结果获取时间。

  • 同一个 GPU 加速的基础设施可用于 Spark 和 ML/DL(深度学习)框架,因而无需使用单独的集群,并让整个流程都能获得 GPU 加速。

  • 减少所需的服务器数量,降低基础设施成本。

用于 APACHE SPARK 的 RAPIDS 加速器

RAPIDS 是一套开源软件库和 API,可完全在 GPU 上执行端到端数据科学和分析流程,能够实现大幅的速度提升,在大型数据集上尤是如此。用于 Apache Spark 的 RAPIDS 加速器基于 NVIDIA CUDA 和 UCX 构建,支持 GPU 加速的 SQL/DataFrame 操作和 Spark shuffle,且无需更改代码。

Apache Spark 加速的端到端 AI 平台堆栈

加速 SQL/DataFrame

Spark 3.0 支持 SQL 优化器插件,使用列式批量(而非行式)处理数据。列式数据非常适合 GPU,并且 RAPIDS 加速器可插入此功能以加速 SQL 和 DataFrame 运算符。针对 RAPIDS 加速器,Catalyst 查询优化器进行了修改,可识别通过 RAPIDS API 加速的查询方案(主要是一对一映射)中的运算符,并可在执行查询方案时在 Spark 集群中的 GPU 上调度这些运算符。

加速 Shuffle

在阶段之间从现有 DataFrame 创建新 DataFrame 时,按值对数据进行排序、分组或合并的 Spark 操作必须移动分区之间的数据,此过程称为 shuffle,其中涉及磁盘 I/O、数据序列化和网络 I/O。新的 RAPIDS 加速器 shuffle 实施利用 UCX 优化 GPU 数据传输,尽可能在 GPU 上保留更多的数据,通过使用优质的可用硬件资源,找到在节点间移动数据的快速路径(包括绕过 CPU 执行 GPU 到 GPU 显存的节点内和节点间传输)。

加速器感知型调度

为推动旨在更好地统一深度学习和数据处理的重要 Spark 计划,GPU 在 Apache Spark 3.0 中现已成为可调度资源。这使得 Spark 能够使用特定数量的 GPU 来调度执行程序,并且用户可以指定每个任务所需的 GPU 数量。Spark 将这些资源请求传送至底层集群管理器、Kubernetes、YARN 或 Standalone。用户还可以配置发现脚本,检测集群管理器分配的 GPU。这大大简化了需要 GPU 的 ML 应用程序的运行,因为之前用户需要处理 Spark 应用程序中缺少 GPU 调度的问题。

加速 XGBoost

XGBoost 是一种可扩展的分布式梯度提升决策树 (GBDT) ML 库。

XGBoost 提供并行树提升功能,是应用于回归、分类和排序问题的出色 ML 库。RAPIDS 团队与 Distributed Machine Learning Common (DMLC) XGBoost 组织密切合作,而且 XGBoost 现已包含无缝嵌入式 GPU 加速。另外,Spark 3.0 XGBoost 现已与 Rapids 加速器集成,借助 Spark SQL/DataFrame 操作的 GPU 加速、XGBoost 训练时间的 GPU 加速,以及内存优化存储功能的高效 GPU 显存利用率,可改善性能、准确性和成本。

在 Spark 3.0 中,您现在可以有单个流程,从数据提取到数据准备,再到在 GPU 驱动的集群上训练模型,皆包含在内

SPARK 用例示例

欺诈检测

对于需要快速决策并涉及多个数据源的情况而言,运行快速的 Spark 是不二之选。例如,金融机构检测信用卡欺诈的方法之一是,分析单一帐户上的交易量和交易地点。如果交易次数超出个人能力范围,或者多个交易发生在不同地点,而交易地点相距不合情理,则表明一个帐户已被泄露。

银行可以使用 Apache Spark 来根据使用模式创建帐户持有者的统一视图。机器学习可用于根据先前观察到的模式,检测超出规范的模式。这还可以使机构更好地根据客户个人需求来定制优惠。

医疗健康

在美国,药物的不良相互作用是第四大致死原因,排在肺癌、糖尿病和肺炎之前。确定多种药物如何相互作用以对患者造成不良后果,这一问题的复杂程度呈指数级增加,随着新药不断推出,这一问题在每一年都更加复杂。

借助 Spark,数据科学家可以创建算法,扫描数百万份病例记录并查找提及的药物类型。某些药物的组合可以与治疗结果相关联,并按原先存在的状况和病史等因素加权。然后可以将结果应用于个别患者的健康记录,在开具处方或填写处方之前提醒医生和药师注意出现不良反应的可能性。

为何 APACHE SPARK 如此重要

Spark 3.0 是数据科学家和数据工程师在分析和 AI 领域协作的一个重要里程碑,其使 ETL 操作得到加速,同时 ML 和 DL 应用程序也能够利用相同的 GPU 基础设施。

数据科学团队

将数据转化为可用形式需要完成众多普通任务,数据科学的“魔力”对此也无计可施。该过程涉及对数百万或数十亿条记录中的非结构化数据(例如邮政编码、日期和 SKU 编号)进行分类和排序。数据集越大,处理时间越长。据估计,数据准备会占用数据科学家 80% 的时间。

Hadoop 是一项大规模执行数据分析的突破性技术,使数据科学家能够针对超大型数据存储执行查询。但是,处理时间通常很长,尤其是在需要对现有数据集执行重复扫描时,这在进行分类和数据发现时经常发生。

Spark 专为跨大型数据集的迭代查询而构建。与 Hadoop/MapReduce 相比,其速度快达 100 倍,迅速获得了数据科学家的青睐。Spark 还可轻松适应 Python、R 和 Scala 等面向数据科学的开发语言。由于大多数数据科学家都习惯于使用单个编程工具,因此 Spark 能够轻松适应个人需求。

Spark SQL 还引入了名为 DataFrame 的数据抽象概念,该概念支持结构化和半结构化数据,并且支持多语言操作。通过这种概念,熟悉的 SQL 语言能够以新方式应用于非结构化数据。Spark ML 提供了一套统一的高级别 API,这些 API 基于 DataFrame 构建,用于搭建 ML 流程或 ML 工作流程。基于 DataFrame 构建 ML 流程可实现分区数据处理的可扩展性,且便于通过 SQL 进行数据操作。

数据工程团队

数据工程师弥补了数据科学家与开发者之间的差距。数据科学家选择合适的数据类型和算法来解决问题,而数据工程师则与数据科学家和开发者开展合作,处理与数据流程创建相关的所有工作,用于数据提取转换、存储和分析,以构建大数据分析应用程序。

Spark 将复杂性从存储方程中抽象出来。该框架可以处理几乎任何底层存储(包括 Hadoop 分布式文件系统),因此比 Hadoop 更灵活,更适用于云和本地基础设施的组合。Spark 还可以轻松整合流数据源,使其成为适用于新一代物联网应用程序的引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器

作为程序员,变量命名应该是我们编程的开端,也是我们每天都必须需要做的事情。变量命名规范的重要性,相信大家都知道非常重要,良好的代码风格,带来好处有: 1、具有良好的可读性; 2、维护代码时…

【独立篇】React UI组件库

文章目录1、React UI组件库1.1、material-ui(国外)1.2、ant-design(国内蚂蚁金服-antd)2、AntD的简单使用2.1、CODE2.2、Result1、React UI组件库 1.1、material-ui(国外) 官网: http://www.material-ui.…

硬件定义软件?还是,软件定义硬件?

文章目录**1 软件和硬件****1.1 软件和硬件的定义****1.2 “硬件定义软件”和“软件定义硬件”的定义****1.3 CPU,软件和硬件解耦****1.4 CPU的软硬件定义****2 硬件定义软件****2.1 系统从软件逐步到硬件****2.2 硬件架构决定了软件设计****2.2.1 ASIC的硬件定义**…

【车辆配送】基于模拟退火 (SA)求解车辆配送 (VPR) (Matlab代码实现)

目录 1 车辆配送问题 2 模拟退火法 3 实现结果 4 参考文献 5 Matlab代码实现 1 车辆配送问题 式(9)~( 12)中, 为配送车辆到达需求点i的时间;为需求点i到需求点j的运输成本;、分别为配送车辆提前到达需求点i的或者滞后到达需求点i的单位时间内的等待成本以及惩罚成本。该数…

基于vue项目的代码优化

前言 项目上线后其整体性能的优良是用户也是研发人员所关注的。项目优化非常重要,一丝一毫的提升都是对用户的负责。因此我们在开发中就应该注重细节,优化工作从日常开发做起。本篇文章就分享一些在日常开发中代码层面的优化手段。 开发常用优化手段 …

04-Docker-容器数据卷

目录 一、坑!!!! 二、什么是容器卷 三、容器卷的作用 四、容器卷案例 1、宿主vs容器之间映射添加容器卷 五、容器卷ro和rw规则 一、坑!!!! 容器卷记得加入 --privilegedtrue …

2022-11-30 Github Forking 工作流模式

Forking 工作流 fork 操作是在个人远程仓库新建一份目标远程仓库的副本,流程如下: 比如在 GitHub 上操作时,在项目的主页点击 fork 按钮(页面右上角),即可拷贝该目标远程仓库。 假设开发者 A 拥有一个远程仓…

HTML网页设计制作大作业(游戏主题)---电竞

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游戏官网 | 游戏网站 | 电竞游戏 | 游戏介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 …

《MongoDB》Mongo Shell中的基本操作-文档查询

前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 来个关注吧,点个赞…

在Word、WPS中插入AxMath公式导致行间距异常的解决办法

引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常,如下图所示: 查遍互联网,最有效的办法竟然要取消文档网格对齐,这对于一些严格要求的场合是非常不利的,经过我的尝试&#…

xss-labs/level15

因为前一关打不开了 所以直接跳到15关来 查看源代码 他的输出点位于属性值处 所以要想通过<script></script>实现弹窗效果的话 那么就要逃离属性值 那么势必要闭合引号 根据以上的分析 我们做出如下构造 "><script>alert(xss)</script>// …

使用 Mason 创建自己的 Flutter brick

使用 Mason 创建自己的 Flutter brick 原文 https://medium.com/gytworkz/create-your-own-flutter-brick-using-mason-7abc70d0324e 前言 谁不喜欢用最少的努力完成大部分事情呢&#xff1f;我当然知道! &#xff01;Mason 帮我完成了几个简单的步骤。 在本文中&#xff0c;我…

观察者(订阅)模式

文章目录思考观察者模式1.观察者模式的本质2.何时选用观察者模式3.优缺点4.实现手写观察者模式JDK观察者模式思考观察者模式 观察者模式是典型的发布订阅模式&#xff0c;当一个东西有变化了&#xff0c;就通知所有订阅他的人 1.观察者模式的本质 观察者模式的本质:触发联动。 …

什么是等保

等保的全称是信息安全等级保护&#xff0c;是《网络安全法》规定的必须强制执行的&#xff0c;保障公民、社会、国家利益的重要工作。以下是一些有关等保的基本知识&#xff0c;希望通过这些知识能让大家更深刻地认识到等级保护的重要性。 等级保护定义 信息安全等级保护是指…

2.Conv2d实现

[C 基于Eigen库实现CRN前向推理] 第二部分&#xff1a;Conv2d实现 前言&#xff1a;(Eigen库使用记录)第一部分&#xff1a;WavFile.class (实现读取wav/pcm,实现STFT)第二部分&#xff1a;Conv2d实现第三部分&#xff1a;TransposedConv2d实现 (mimo,padding,stride,dilatio…

智工教育:注册计量师职业资格条件已改革!

第一&#xff0c;报名条件发生变化 注册计量师职业资格考试&#xff0c;取消了一级注册计量师职业资格考试报考条件中对工作年限的要求。 凡遵守中华人民共和国宪法、法律、法规&#xff0c;恪守职业道德&#xff0c;诚实守信&#xff0c;从事计量技术工作&#xff0c;符合注册…

Codeforces Round #290 (Div. 2) C. Fox And Names

翻译&#xff1a; Fox Ciel将发表一篇关于FOCS (Fox操作的计算机系统&#xff0c;发音:“Fox”)的论文。她听到一个谣言:报纸上的作者名单总是按照词典顺序排列的。 在查看了一些例子后&#xff0c;她发现有时这不是真的。在一些论文中&#xff0c;作者的名字没有按照正常意义…

【无人机】四轴无人机的轨迹进行可视化和动画处理(Matlab代码实现)

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ ​ 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 随着传感器检测技术、智能控制技术和材料技术的快速发展,四轴无人机及其配套系统的发展越来越成熟。无人机遥感系统具有成本低、…

Java数据结构之Map与Set

文章目录一、搜索&#xff08;一&#xff09;概念及场景&#xff08;二&#xff09;模型二、Map&#xff08;一&#xff09;介绍&#xff08;二&#xff09;Map常用方法说明1.需要注意的几个点2.特别注意的几个方法(1)V getOrdefault(Object key,V defaultValue)&#xff0c;这…

【DL with Pytorch】第 5 章 :风格迁移

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…