vlambda博客
学习文章列表

使Apache Spark更快的11大因素

当世界围绕大数据旋转时,Apache Spark已显示出在各行各业中以重要方式在企业应用程序中的快速采用。该数据处理引擎由UC Berkeley于2009年开发,后来捐赠给了Apache,现在已成为大数据领域最强大的开源数据处理引|擎之一。

凭借其高科技的分析能力和巨大的速度,它可以一次处理8000多个节点的多个PB集群数据。但是,Apache Spark最重要的功能是什么甚至可以取代Hadoop的MapReduce?

答案是SP EED。是的,在大规模数据处理方面,Spark可 以比Hadoop快100倍。但是如何?让我们研究一下Spark的技术方面,这些方面可以使其在数据处理中更快。

Apache Spark的自底向上结构

Apache Spark的主要两个部分是一

Spark Core 一分布式执行引擎。Java, Scala和Python API提供了任何ETL应用程序开发所需的平台。

整个结构旨在实现自底向上的性能。大多数特定于数据科学的机器学习算法都是迭代的。当数据集缓存在内存中时,数据处理会自动加速。另外,Apache Spark具有此内存中缓存属性,从而使其速度更快。

使Apache Spark更快的因素

有几个因素使Apache Spark如此之快,下面将提到这些因素:

1.内存计算

Spark适用于可以处理RAM中的TB级数据的64位计算机。Spark的设计方式是在内存中而不是在磁盘I/ 0中转换数据。因此,它缩短了对磁盘的读/写周期并在内存中存储中间数据的处理时间。这样可以减少处理时间并一次节省存储成本。此外,Spark支 持数据的并行分布式处理,因此在内存上的速度快近100倍,在磁盘上的速度快10倍。

2.弾性分布式数据集(RDD)

Apache Spark的主要抽象是弹性分布式数据集(RDD) ,它是Spark的基本数据结构。RDD可以看作是对象的不可变分布式集合。可以使用cache () 或persist ()这两种方法来缓存这些对象。使用cache ()方法将RDD存储在内存中的好处是一如果数据不适合它发送,则将其存储在内存中将多余的数据存入磁盘或重新计算。基本上,这是RDD中每个数据集的逻辑分区,可以在群集的不同节点上进行计算。由于RDD存储在内存中,因此可以在需要时随时提取RDD,而无需使用磁盘。它使处理速度更快。

3.易于使用

Spark遵循通用编程模型。该模型不限制程序员将其应用程序设计成一堆地图并减少操作。Spark的并行程序看起来非常类似于顺序程序,易于开发。最后,Spark在同一应用程序中处理批处理,交互式和流式作业的组合。结果,Spark作业可以快100倍, 而只需要减少2到10倍的代码编写。

4.磁盘上数据排序的能力

Apache Spark是最大的开源数据处理项目。在磁盘上存储大量数据时,速度很快。Spark具有磁盘数据排序的世界纪录。

5. DAG执行引擎

DAG或直接丙烯酸图表允许用户通过扩展任何阶段的细节来探索数据处理的每个阶段。通过DAG,用户可以获得一一个舞台视图,该舞台视图清楚地显示了RDD的详细视图。Spark拥有 GraphX,这是一一个图形计算库,并提供内置的图形支持以提高机器学习算法的性能。Spark使用DAG在 单个阶段执行所有必需的优化和计算,而不是进行多个阶段。

6.后端的SCALA

Apache Spark的核心是使用SCALA编程语言开发的,该语言比JAVA快。SCALA提供 了不可变的集合,而不是Java中的Threads,它有助于内置的并发执行。这是一种具有表现力的开发API,可提高性能。

7.更快的系统性能

由于其缓存属性,Spark 可以将数据存储在内存中以进行进一步的迭代。结果,它大大提高了系统性能。一旦每次迭代完成,Spark都会利用Mesos (即分布式系统内核)来缓存中间数据集。此外,Spark在缓存的数据集.上运行多次迭代,并且由于这是内存中缓存,因此减少了I/O。因此,算法工作更快且以容错方式运行。

8. Spark MLlib

Spark提供了一个名为MLib的内置库,其中包含机器学习算法。这有助于更快地执行内存中的程序。

9.管道作业

遵循Microsoft的Dryad纸张方法,Spark. 更创新地利用了其管道技术。与Hadoop的MapReduce不同,Spark不会将数据馈送的输出存储在持久性存储中,而只是将一个操作的输出作为另一个操作的输入直接传递。这显着减少了1/ 0操作时间和成本,使整个过程更快。

10. JVM方法

Spark可以在每个数据处理节点上使用其执行器JVM更快地启动任务。这使得启动任务仅需几毫秒,而不是几秒钟。它只需要制作一个RPC并将Runnable添加到线程池。没有jar加载,XML解析等与之关联。因此,整个过程要快得多。

11.懒惰评估

Spark整体利用内存。除非调用诸如sum或count之类的操作方法,否则Spark将不会执行该处理。

结论

由于其高性能,Spark在 大数据行业中的采用激增。Spark与 Cassandra, Hadoop和Apache Mesos一起运行。尽管Spark的采用已显着增加,并且由于速度因素而可能减少了MapReduce的使用,但是这并不是要完全取代MapReduce。相反,据预测,Spark将 促进大数据领域中另一个堆栈的强大增长。到目前为止,Spark没有任何文件管理系统。因此,直到新的Spark专用文件管理系统出现之前,它必须依赖Hadoop的HDFS (分布式文件系统)进行数据处理。