Spark

什么是 Apache Spark?

Apache Spark 是一个开源框架,可以简化数据分析工作的开发并提高其效率。其通过 80 多个数据转换和动作操作符支持各类 API 和语言,掩盖了群集计算的复杂性。 

谁构建并维护 Spark?

来自 300 多家公司的众多开发人员共同构建了 Spark,同时通过庞大的用户社区帮助不断完善该框架。很多行业的组织都在使用 Spark 并且其开发人员社区是最大的大数据社区。

相关 HPE 解决方案、产品或服务

Spark 为何备受青睐?

据报道,Spark 的速度比类似分析引擎快 100 倍,可以访问可变数据源并在多个平台(包括 Hadoop、Apache Mesos、Kubernetes)上独立运行,也可在中运行。无论您处理批量数据还是流数据,均可获得最高性能,这要归功于一流的 Spark DAG 调度器、查询优化器以及物理执行引擎。

Spark 为何性能强大?

Spark 独一无二的强大性能来自其内存处理。它使用内存占用较多节点的分布式池和精简的数据编码,再配合优化的查询规划器,将执行时间缩至最短并将内存需求降至最低。

因为 Spark 在内存中执行计算,数据处理速度比在磁盘上处理数据的框架要快 100 倍。这是处理机器学习和 AI 的分析和训练模型所需大批量数据的首选工具。

此外,Spark 运行多个本机库,可提供专家机器学习和类似 SQL 的数据结构,让您在处理大型数据集时获得卓越的性能。再加上超过 80 个高级操作符,Spark 使创建并行应用轻而易举。

Spark 从何起源?

2009 年,加利福尼亚大学伯克利分校的 AMPLab 起初发布了几篇研究生论文,结果很快研究成果就转化为现在熟知的 Spark。2010 年,AMPLab 开源 Spark 和更广泛的协作开始起步。到了 2013 年,Spark 社区进一步壮大,归于 Apache 软件基金会麾下。

自那时起,来自数百个组织的 1200 多名开发人员帮助 Spark 不断演进,最终使其成为如今性能强大的接口。实际上,据 2016 年的问卷调查显示,1000 多个组织都在生产中使用 Spark。

Spark 和 Hadoop 有何不同?

Spark 和 Hadoop 有几个相似之处。两者都是用于分析数据处理的开源框架;两者都归 Apache 软件基金会所有;两者都包含机器学习库;并且两者均可以多种不同语言编程,如 Java、Python、R 或 Scala。

然而,编写 Spark 是为了扩大通过 Hadoop 可以实现的计算数量,因此只应该比较 Spark 对 Hadoop 的本机数据处理组件(称为 MapReduce)的增强程度。

例如,Hadoop 只分批处理数据,而 Spark 既可分批处理又可实时处理流式数据。此外,虽然两者都拥有机器学习库,但只有 Spark 利用内存中的数据执行处理功能,因而速度远远快于 Hadoop。最后,Spark 和 Hadoop 之间最大的不同就是效率。Hadoop 使用两段式执行过程,而 Spark 创建了有向无环图 (DAG) 调度任务并管理工作节点,这样可以并行处理从而提高效率。

Apache Spark 的优势

Spark 相较其他框架有许多优点。它提供了简单易用的高级分析功能,并具有加快处理速度和提高效率所需的灵活性及可扩展性。部分优势包括:

速度

由于数据经过整理以扩大分布式群集节点的内存处理规模,还因为 Spark 不必将数据写回磁盘存储就能进行处理,所以在内存中处理时对批处理作业的处理速度比 MapReduce 快 100 倍,并且比在磁盘上处理的速度快十倍。 

 

多语言

Spark 以 Scala 编写,还配备了 API 连接器以使用 Java 和 Python,此外还带有一个 R 编程包可以让用户处理数据科学家需要的大型数据集。 

易于使用

由于 Spark 可以让数据以更高效的方式在节点和群集间分布,因此可以执行并行数据处理和数据抽象。并且,Spark 能够将多种类型的数据库联系在一起并从多种数据存储中计算数据,因此可以在多个用例中使用 Spark。 

性能强大

支持者表示,Spark 可以处理多达数 PB 的大批量数据,而且允许用户对此 PB 级数据执行探索性数据分析而不必缩小采样。

高级分析

Spark 附带多个代码库以执行数据分析应用。例如,MLlib 拥有可用于高级统计数据操作的机器学习代码,而 Spark Streaming 库支持用户实时分析数据。 

更强的大数据访问能力

Spark 将存储和计算分隔开来,让客户可以单独扩展其规模以满足分析应用的性能需求,并且它可以无缝执行批处理作业以将数据迁入数据湖或数据仓库中进行高级分析。

动态质量

Spark 包括帮助用户动态扩展节点规模的工具以根据不断变化的工作负载做出调整。在处理周期结束时,节点在 Spark 中更易于自动重新分配。

Spark 开发人员需求

为保持竞争优势,企业越来越需要更快的分析处理能力,对 Spark 开发人员的需求水涨船高。而且,随着按需机器学习占据市场主流,那些可以促进深度学习加速器和 AI 技术的人对企业来说必不可少。

什么是 Spark 框架?

使用 Java 或 Kotlin 的开发人员想要利用有限的样板文件开发更富表现力的 Web 应用时,往往会转而采用 Spark 框架。Spark 采用声明性和表达性语法,旨在打造更高效的快速开发流程以实现更出色的编码。

作为微框架,Spark 允许开发人员不必通过繁琐的流程即可充分利用 Java 虚拟机 (JVM) 的优势。而且,Spark 具有相当简洁的代码语法,使用它进行编码要比使用其他 Java Web 框架简便流畅的多。

此外,Spark 框架语言已经内置类型,设计用于在服务器端运行。这有助于使用静态类型语言的 NodeJS 开发人员编译 JavaScript(如 TypeScript),并且越来越多的采用服务器端 Web 开发。

Spark 操作多个数据结构,因而性能比其他替代框架更强。这些替代框架包括 RDD、DataFrames、Datasets、Tungsten 和 GraphFrames,描述如下:

 

  • Resilient Distributed Dataset (RDD):RDD 跨群集分布数据,允许同时执行各种处理任务。如果群集中任何节点发生故障,则可以重新计算任务,因此操作可以不必中断而继续进行。
  • DataFrames:DataFrames 将数据分列整理以执行 SQL 操作。这样不会提供数据类型安全性,尽管数据集本身自带安全性。
  • Datasets:Datasets 也将数据分列整理以执行 SQL 查询。它们确实提供数据类型安全性措施。
  • Tungsten:Tungsten 数据结构是最近新增的一种框架,引入目的是为了将 Spark 的性能提升至裸机性能级别。该结构针对内存管理、二进制文件处理、代码生成和算法开发以实现更快的处理速度。
  • GraphFrames:有了 GraphFrames 数据结构,便可以在内存中运行图形查询以获得最高性能。

通过将这五种数据类型结合在一起,Spark 可以准备数据并提供类似其他框架的描述性分析和搜索。同时,Spark 还提供了预测性分析、机器学习和图形处理,支持企业更快速地做出更明智的决策。

HPE 提供了哪些技术以使 Spark 达到最高性能?

追求数据优先的企业可以利用任意数量的 HPE 解决方案帮助释放其内部部署、多云或边缘部署中数据的价值。HPE 引领数字化转型的潮流,提供了突破性服务,即将 Spark 集成到笔记本中以加速机器学习和 AI 工作负载,更快获得提升业务价值的洞见。

例如,HPE Ezmeral 是一款弹性平台,通过多租户控制面板、GPU 加速、完全隔离与控制以及预置数据分析工具扩展 Apache Spark 工作负载的规模。HPE Ezmeral 是第一个将云原生功能带给本地分析、机器学习和 AI 的湖仓一体平台。最近的测试表明 HPE Ezmeral、NVIDIA RAPIDS 和 Tensor Core A100 GPU 将 Spark AI 和 ETL 工作负载速度加快 29 倍。[i]

除此之外,HPE 最近推出了 HPE Ezmeral Unified Analytics,这是行业首创的云湖仓一体平台,将 Spark 作为满足特定要求的堆栈的一部分与其他一流开源工具集成在一起。也可以通过 HPE GreenLake 使用 HPE Ezmeral Unified Analytics。  

 

[1] HPE 利用由 HPE Ezmeral、NVIDIA A100 40GB GPU 和 HPE ProLiant DL385 Gen10 Plus v2 管理的 Kubernetes Pod,基于 Big-Data 基准测试对我们的测试模型进行了标准化。