Apache Spark是一个为速度和通用目标设计的集群计算平台。

Spark是什么?用Spark进行数据剖析(spark数据分析是什么)  spark 数据分析 第1张

1. 什么是Apache Spark?

Apache Spark是一个为速度和通用方针规划的集群核算渠道。

从速度的视点看,Spark从盛行的MapReduce模型承继而来,能够更有用地支撑多种类型的核算,如交互式查询和流处理。速度在大数据集的处理中十分重要,它能够决议用户能够交互式地处理数据,仍是等几分钟乃至几小时。Spark为速度供给的一个重要特性是其能够在内存中运转核算,即便对依据磁盘的杂乱运用,Spark仍然比MapReduce更有用。

从通用性来说,Spark能够处理之前需求多个独立的散布式体系来处理的使命,这些使命包含批处理运用、交互式算法、交互式查询和数据流。经过用同一个引擎支撑这些使命,Spark使得兼并不同的处理类型变得简略,而兼并操作在出产数据剖析中频频运用。并且,Spark降低了保护不同东西的办理担负。

Spark被规划的高度易拜访,用Python、Java、Scala和SQL供给简略的API,并且供给丰厚的内建库。Spark也与其他大数据东西进行了集成。特别地,Spark能够运转在Hadoop的集群上,能够拜访任何Hadoop的数据源,包含Cassandra。

2. 一个一致的栈

Spark项目包含多个严密集成的组件。作为其中心,Spark是一个“核算引擎”,担任在多个作业机器之间或一个核算集群上调度、分发和监控由核算使命组成的运用。Spark中心引擎速度快且具有通用性,它能够驱动针对各式各样负载的不同组件,例如SQL或机器学习。这些组件能够严密交互,使得你能够向库程序相同在一个软件项目中组合他们。

紧耦合的办法有许多优点。***,一切栈中的库和高层组件都能够从低层组件的改善中获益。例如,当Spark的中心引擎进行了优化,SQL和机器学习库会主动加快。第二,运转栈的开支最小化,由于不需求运转5-10个独立的软件体系,只运转一个就够了。这些运转开支包含布置、保护、测验、支撑和其他操作。这意味着每逢Spark栈有新的组件参加,运用Spark的团队能够当即试用这个新组件。曩昔测验一个新的数据剖析软件需求下载、布置和学习,现在只需求晋级Spark即可。

***,紧耦合办法的一个***的优点是能够树立运用,这些运用能够不停地兼并不同的处理模型。例如,经过Spark能够写一个运用,依据输入的数据流运用机器学习来实时的进行分类操作;于此一起,剖析员能够经过SQL实时地查询成果数据。并且,更多的数据工程师和数据科学家能够用Pyhton Shell拜访数据来进行广告剖析。其他人员可能在独自的批处理运用中拜访数据。从头到尾,IT团队只需求保护一个体系。

这儿咱们将简略介绍Spark的每个组件,见图1-1

Spark是什么?用Spark进行数据剖析(spark数据分析是什么)  spark 数据分析 第2张

图1-1 Spark栈

3. Spark 中心组件

Spark中心组件包含Spark的基本功用,有使命调度组件、内存办理组件、容错康复组件、与存储体系交互的组件等。Spark中心组件供给了界说弹性散布式数据集(resilient distributed datasets,RDDs)的API,这组API是Spark首要的编程笼统。RDDs表明散布在多个不同机器节点上,能够被并行处理的数据调集。Spark中心组件供给许多API来创立和操作这些调集。

Spark SQL

Spark SQL是Spark用来处理结构化数据的包。它使得能够像Hive查询言语(Hive Query Language, HQL)相同经过SQL句子来查询数据,支撑多种数据源,包含Hive表、Parquet和JSON。除了为Spark供给一个SQL接口外,Spark SQL答应开发人员将SQL查询和由RDDs经过Python、Java和Scala支撑的数据编程操作混合进一个单一的运用中,从而将SQL与杂乱的剖析结合。与核算密集型环境严密集成使得Spark SQL不同于任何其他开源的数据仓库东西。Spark SQL在Spark 1.0版别中引进Spark。

Shark是一个较老的由加利福尼亚大学和伯克利大学开发的Spark上的SQL项目,经过修正Hive而运转在Spark上。现在现已被Spark SQL替代,以供给与Spark引擎和API更好的集成。

Spark流(Spark Streaming)

Spark流作为Spark的一个组件,能够处理实时流数据。流数据的比如有出产环境的Web服务器生成的日志文件,用户向一个Web服务恳求包含状况更新的音讯。Spark流供给一个和Spark中心RDD API十分匹配的操作数据流的API,使得编程人员能够更容易地了解项目,并且能够在操作内存数据、磁盘数据、实时数据的运用之间快速切换。Spark流被规划为和Spark中心组件供给相同等级的容错性,吞吐量和可伸缩性。

MLlib

Spark包含一个叫做MLlib的关于机器学习的库。MLlib供给多种类型的机器学习算法,包含分类、回归、聚类和协同过滤,并支撑模型评价和数据导入功用。MLlib也供给一个低层的机器学习原语,包含一个通用的梯度下降优化算法。一切这些办法都能够运用到一个集群上。

GraphX

GraphX是一个操作图(如交际网络的老友图)和履行依据图的并行核算的库。与Spark流和Spark SQL相似,GraphX扩展了Spark RDD API,答应咱们用和每个节点和边绑定的恣意特点来创立一个有向图。GraphX也供给了各式各样的操作图的操作符,以及关于通用图算法的一个库。

集群办理器Cluster Managers

在底层,Spark能够有用地从一个核算节点扩展到成百上千个节点。为了在***化灵活性的一起到达这个方针,Spark能够运转在多个集群办理器上,包含Hadoop YARN,Apache Mesos和一个包含在Spark中的叫做独立调度器的简易的集群办理器。假如你在一个空的机器群上装置Spark,独立调度器供给一个简略的办法;假如你现已有一个Hadoop YARN或Mesos集群,Spark支撑你的运用答应在这些集群办理器上。第七章给出了不同的挑选,以及怎么挑选正确的集群办理器。

4. 谁运用Spark?用Spark做什么?

由于Spark是一个面向集群核算的通用结构,可用于许多不同的运用。在序言中咱们指出了这本书的两种读者:数据科学家和数据工程师。咱们细心地剖析一下这两种人和他们运用Spark的办法。明显地,典型的运用事例是不同的,但咱们能够将他们粗略地分为两类,数据科学和数据运用。

当然了,这是一个不精确的分类和运用形式,许多人一起具有着两种技能,有时扮演数据发掘科学家的人物,然后又编写一个数据处理的运用。虽然如此,区分为两个组以及他们的运用事例仍然是有意义的。
数据科学的使命

数据科学,近几年呈现的一门学科,专心于剖析数据。虽然没有一个规范的界说,咱们以为一个数据科学家的首要作业是剖析和建模数据。数据科学家可能会SQL,统计学,猜测模型(机器学习),用Python、MATLAB或R编程。数据科学家能将数据格局化,用于进一步的剖析。

数据科学家为了答复一个问题或进行深入研讨,会运用相关的技能剖析数据。一般,他们的作业包含特别的剖析,所以他们运用交互式shell,以使得他们能在最短的时间内看到查询成果和代码片段。Spark的速度和简略的API接口很好地契合这个方针,它的内建库意味着许多算法能够随时运用。

Spark经过若干组件支撑不同的数据科学使命。Spark shell使得用Python或Scala进行交互式数据剖析变得简略。Spark SQL也有一个独立的SQL shell,能够用SQL进行数据剖析,也能够在Spark程序中或Spark shell中运用Spark SQL。MLlib库支撑机器学习和数据剖析。并且,支撑调用外部的MATLAB或R言语编写的程序。Spark使得数据科学家能够用R或Pandas等东西处理包含很多数据的问题。

有时,经过初始的数据处理阶段后,数据科学家的作业将被产品化,扩展,加固(容错性),从而成为一个出产数据处理运用,作为商业运用的一个组件。例如,一个数据科学家的研讨成果可能会发生一个产品引荐体系,集成到一个web运用上,用来向用户生成产品主张。一般由别的的人员(如工程师)对数据科学家的作业进行产品化。

数据处理运用

Spark的别的一个首要的运用能够从工程师的视点进行描绘。在这儿,工程师指运用Spark来构建出产数据处理运用的很多的软件开发者。这些开发者了解软件工程的概念和准则,如封装、接口规划和面向对象编程。他们一般有核算机学科的学位。他们经过自己的软件工程技能来规划和构建完成某个商业运用场景的软件体系。

对工程师而言,Spark供给了一个简略的办法在集群之间并行化这些运用,躲藏了散布式体系、网络通信和容错处理的杂乱性。体系使得工程师在完成使命的一起,有足够的权限监控、查看和调整运用。API的模块特性使得重用已有作业和本地测验变得简略。

Spark用户运用Spark作为其数据处理运用,由于他供给了丰厚的功用,易于学习和运用,并且老练牢靠。

5. Spark前史简介

Spark是一个开源项目,由多个不同的开发者社区进行保护。假如你或你的团队***次运用Spark,你可能对它的前史感兴趣。Spark由UC伯克利RAD实验室(现在是AMP实验室)在2009年作为一个研讨项目创立。实验室的研讨人员之前依据Hadoop MapReduce作业,他们发现MapReduce关于迭代和交互式核算使命功率不高。因而,在开端阶段,Spark首要为交互式查询和迭代算法规划,支撑内存存储和高效的容错康复。

在2009年Spark创立不久后,就有关于Spark的学术性文章宣布,在一些特定使命中,Spark的速度能够到达MapReduce的10-20倍。

一部分Spark的用户是UC伯克利的其他组,包含机器学习的研讨人员,如Mobile Millennium项目组,该组用Spark来监控和猜测旧金山湾区的交通拥堵状况。在一个十分短的时间内,许多外部的组织开端运用Spark,现在,现已有超越50个组织在运用Spark,还有一些组织发布了他们在Spark Meetups和Spark Summit等Spark社区的运用状况。Spark首要的贡献者有Databricks,yahoo和因特尔。

在2011年,AMP实验室开端开发Spark上的上层组件,如Shark和Spark流。一切这些组件有时被称为伯克利数据剖析栈(Berkeley Data Analytics Stack,BDAS)。

Spark在2010年3月开源,在2014年6月移入Apache软件基金会,现在是其***项目。

6. Spark版别和发布

自从创立以来,Spark是一个十分活泼的项目和社区,每个发布版别的贡献者都在增加。Spark 1.0有超越100个贡献者。虽然活泼等级迅速增加,社区仍然以一个固定的规划发布Spark的更新版别。Spark 1.0在2014年5月发布。这本书首要依据Spark 1.1.0编写,但其概念和比如也适用较早的版别。

7. Spark存储层

Spark能够从存储在Hadoop散布式文件体系(HDFS)中的任何文件,或其他Hadoop API支撑的存储体系(如本地文件体系,Amazon S3, Cassandra, Hive,HBase等)创立散布式数据集。有一点一定要记住,Hadoop对Spark来说不是有必要的,Spark能够支撑任何完成了Hadoop API的存储体系。Spark支撑文本文件、序列文件、Avro、Parquet,以及任何其他Hadoop的输入格局。咱们将在第五章介绍Spark与这些数据源的交互。

转载请说明出处
知优网 » Spark是什么?用Spark进行数据剖析(spark数据分析是什么)

发表评论

您需要后才能发表评论