Apache Spark简介

118 阅读5分钟

Apache Spark简介

现代世界对大数据并不陌生。在过去的2年中,我们产生了有史以来所有数据的90%左右。我们可以将大数据的起源追溯到数据库管理系统变得越来越普遍的时候--1970-2000年间。存储、仓储(将大量异质数据存储在一起)和分析都主要在关系型数据库管理系统(RDBMS)上进行,该系统管理结构化和同质化的数据。然而,自21世纪初以来,互联网使用的增长改变了数据的数量、速度、种类和真实性。今天产生的80-90%的数据都是非结构化的。这意味着搜索,从这些数据中获得洞察力,以及管理这些数据是极具挑战性的。

Hadoop

Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集群中分布式处理大型数据集。Hadoop的两个主要特点是分布式存储(Hadoop Distributed File System)和集群计算(MapReduce)。

HDFS是。

  • **无模式,**没有预定的结构
  • **持久性,**能够处理组件故障而无需人工干预
  • **自动的,**平衡整个集群的磁盘空间消耗。

Hadoop MapReduce是一个软件框架,用于轻松编写应用程序,以可靠、容错的方式在廉价硬件的大型集群(分布式设置中的数千个节点)上并行处理大数据。HDFS和MapReduce构成了Hadoop生态系统的基本组成部分,其开发目标是使整个世界范围内的网络都能被搜索到。

地图重构

MapReduce是在HDFS的基础上实现的,HDFS已经将输入文件作为键值对在其集群节点内划分。MapReduce在分布式数据上执行三种功能。

  • **地图。**工作节点(负责计算的节点)同时对存在于其本地系统中的输入文件应用 "map "功能,并将输出写入临时存储中。
  • **洗牌。**通过在节点之间重新分配/洗牌,将所有与同一输出键相关的数据归入同一工作节点。
  • **减少。**工作者节点对每个键的输出进行并行处理。

例子。img

虽然Hadoop MapReduce对于经济地线性处理大型数据集来说是革命性的,但如果需要复杂或快速的实时处理,它并不表现。

MapReduce的架构意味着MapReduce作业的结果需要存储在磁盘中才能再次使用。这使得它在执行迭代过程时本身就没有空间效率。MapReduce也是一个低级别的框架,这意味着需要在它上面使用一些其他技术来普及它的使用,这使得它的实现变得复杂。

进入Spark

Apache Spark是一个开源的分布式通用集群计算引擎。Spark的运行速度是MapReduce的100倍,并提供了一个易于使用的编程接口,可以对整个集群进行编程,具有隐含的数据并行性和容错性,支持Java、Scala、Python、R和SQL。它可以访问许多数据源并在不同的设置上运行。Spark既能进行高效的批处理,也能进行流式处理,并能在同一应用中结合流式分析和SQL。Spark有4个内置库--Spark Core、Spark SQL和Dataframes、Spark Streaming、MLLib和GraphX。

与MapReduce相比,Spark的计算速度的差异来自于框架的架构差异。MapReduce在磁盘上读取和写入计算的中间结果,这导致需要前一个函数的结果来继续的迭代过程出现相当大的延迟。另一方面,Spark在内存中处理数据,只有在数据不足的时候才会溢出到磁盘上。

因此,只要有足够的内存,Spark的执行速度可以比MapReduce快100倍。由于数据的频繁重复使用,机器学习和图形算法等迭代算法受到Spark的极大影响。

工作

Spark使用弹性分布式数据集(RDDs),这是一个只读的数据多集。一个多集是一个包含同一元素的多个实例的集合。这个RDD是分布在机器集群中的。Dataframe和Dataset API是在这些RDD之上提供的一种抽象。这些RDDs在一个有限的共享内存形式下被处理,其中给了分布式程序一个固定的时间间隔来执行,使其能够使用迭代和非线性编程技术。

集群管理器,分配资源,是Spark所需要的。Spark支持Spark原生集群管理器,它也可以运行在单机、YARN、Kubernetes或Mesos上。它还需要一个分布式存储系统,并且可以很好地工作在目前的大多数分布式存储系统中。它也可以在单台计算机的本地文件系统上工作,用于开发/测试目的。

Spark把它的节点隔离成驱动者工作者。驱动节点有一个驱动程序,它创建一个SparkContext 对象。工作者节点有运行计算和存储数据的进程,称为执行者SparkContext ,连接到集群管理员和执行者,并在它们之间进行协调。SparkContext ,将任务分配给执行者,以并行运行。驱动程序在执行器上安排任务,并发送应用程序代码。img
图片来源。Apache Spark

总结

Apache Spark是大数据计算的前沿解决方案,它提供了API来缓解分布式进程编码中的困难。它也比它的替代品MapReduce更快,主要归因于内存管理的架构差异。这种计算速度上的优势可以在迭代和非线性编程范式中观察到。

Spark可以在广泛的存储设置和集群管理器上运行。Spark的Python APIPyspark是最简单的,也是最流行的开始使用Spark的方法。在接下来的文章中,我们将通过探索使用Spark核心库的RDD编程概念来学习使用Spark,以快速有效的方式从大型数据集中获得有用的见解。