来自:维基百科,自由的百科全书

Apache Spark是一个开源簇运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于HadoopMapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了内存内运算技术,能在数据尚未写入硬盘时即在内存内分析运算。Spark在内存内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。[1]Spark允许用户将数据加载至簇内存,并多次对其进行查询,非常适合用于机器学习算法。[2]

使用Spark需要搭配簇管理员和分布式存储系统。Spark支持独立模式(本地Spark簇)、Hadoop YARNApache Mesos的簇管理。[3] 在分布式存储方面,Spark可以和HDFS[4]、 Cassandra[5] 、OpenStack SwiftAmazon S3等接口搭载。 Spark也支持伪分布式(pseudo-distributed)本地模式,不过通常只用于开发或测试时以本机文件系统替换分布式存储系统。在这样的情况下,Spark仅在一台机器上使用每个CPU核心运行程序。

在2014年有超过465位贡献家投入Spark开发[6],让其成为Apache软件基金会以及巨量数据众多开源项目中最为活跃的项目。

历史[编辑]

Spark在2009年由Matei Zaharia加州大学柏克莱分校AMPLab开创,2010年通过BSD许可协议开源发布。2013年,该项目被捐赠给Apache软件基金会并切换许可协议至Apache2.0。[7]。2014年2月,Spark成为Apache的顶级项目。2014年11月,Databricks团队使用Spark 刷新数据排序世界记录。[8]

项目构成要素[编辑]

Spark项目包含下列几项:

Spark核心和弹性分布式数据集(RDDs)[编辑]

Spark核心是整个项目的基础,提供了分布式任务调度,调度和基本的I/O功能。而其基础的程序抽象则称为弹性分布式数据集(RDDs),是一个可以并型操作、有容错机制的数据集合。 RDDs可以通过引用外部存储系统的数据集创建(例如:共享文件系统、HDFS、HBase或其他 Hadoop 数据格式的数据源)。或者是通过在现有RDDs的转换而创建(比如:map、filter、reduce、join等等)。

RDD抽象化是经由一个以ScalaJavaPython的语言集成API所呈现,简化了编程复杂性,应用程序操纵RDDs的方法类似于操纵本地端的数据集合。

Spark SQL[编辑]

Spark SQL在Spark核心上带出一种名为SchemaRDD的数据抽象化概念,提供结构化和半结构化数据相关的支持。Spark SQL提供了领域特定语言,可使用Scala、Java或Python来操纵SchemaRDDs。它还支持使用使用命令行界面和ODBC/JDBC服务器操作SQL语言。在Spark 1.3版本,SchemaRDD被重命名为DataFrame。

Spark Streaming[编辑]

Spark Streaming充分利用Spark核心的快速调度能力来运行流分析。它截取小批量的数据并对之运行RDD转换。这种设计使流分析可在同一个引擎内使用同一组为批量分析编写而撰写的应用程序代码。

MLlib[编辑]

MLlib是Spark上分布式机器学习框架。Spark分布式内存式的架构比Hadoop磁盘式的Apache Mahout快上10倍,扩充性甚至比Vowpal Wabbit要好。[9] MLlib可使用许多常见的机器学习和统计算法,简化大规模机器学习时间,其中包括:

GraphX[编辑]

GraphX是Spark上的分布式图形处理框架。它提供了一组API,可用于表达图表计算并可以模拟Pregel抽象化。GraphX还对这种抽象化提供了优化运行。

GraphX最初为加州大学柏克莱分校AMPLab和Databricks的研究项目,后来捐赠给Spark项目。[10]

特色[编辑]

  • Java、Scala、Python和R APIs。
  • 可扩展至超过8000个结点。[11]
  • 能够在内存内缓存数据集以进行交互式数据分析。
  • Scala或Python中的交互式命令行接口可降低横向扩展数据探索的反应时间。
  • Spark Streaming对即时数据流的处理具有可扩充性、高吞吐量、可容错性等特点。
  • Spark SQL支持结构化和和关系式查询处理(SQL)。
  • MLlib机器学习算法和Graphx图形处理算法的高级库。

参考资料[编辑]

  1. ^ Xin, Reynold; Rosen, Josh; Zaharia, Matei; Franklin, Michael; Shenker, Scott; Stoica, Ion. Shark: SQL and Rich Analytics at Scale(PDF). June 2013.
  2. ^ Matei Zaharia. Spark: In-Memory Cluster Computing for Iterative and Interactive Applications. Invited Talk at NIPS 2011 Big Learning Workshop: Algorithms, Systems, and Tools for Learning at Scale.
  3. ^ Cluster Mode Overview - Spark 1.2.0 Documentation - Cluster Manager Types. apache.org. Apache Foundation. 2014-12-18 [2015-01-18].
  4. ^ Figure showing Spark in relation to other open-source Software projects including Hadoop
  5. ^ Doan, DuyHai. Re: cassandra + spark / pyspark. Cassandra User mailing list. 2014-09-10 [2014-11-21].
  6. ^ Open HUB Spark development activity
  7. ^ The Apache Software Foundation Announces Apache&#8482 Spark&#8482 as a Top-Level Project. apache.org. Apache Software Foundation. 27 February 2014 [4 March 2014].
  8. ^ Spark officially sets a new record in large-scale sorting
  9. ^ Sparks, Evan; Talwalkar, Ameet. Spark Meetup: MLbase, Distributed Machine Learning with Spark. slideshare.net. Spark User Meetup, San Francisco, California. 2013-08-06 [10 February 2014].
  10. ^ Gonzalez, Joseph; Xin, Reynold; Dave, Ankur; Crankshaw, Daniel; Franklin, Michael; Stoica, Ion. GraphX: Graph Processing in a Distributed Dataflow Framework (PDF). Oct 2014.
  11. ^ Apache Spark FAQ. apache.org. Apache Software Foundation.[5 December 2014].

外部链接[编辑]

Apache Spark(转)的更多相关文章

  1. Apache Spark简单介绍、安装及使用

    Apache Spark简介 Apache Spark是一个高速的通用型计算引擎,用来实现分布式的大规模数据的处理任务. 分布式的处理方式可以使以前单台计算机面对大规模数据时处理不了的情况成为可能. ...

  2. 关于Apache Spark

    Apache Spark :  https://www.oschina.net/p/spark-project

  3. Apache Spark源码剖析

    Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著   ISBN 978-7-121-25420- ...

  4. [翻译]Apache Spark入门简介

    原文地址:http://blog.jobbole.com/?p=89446 我是在2013年底第一次听说Spark,当时我对Scala很感兴趣,而Spark就是使用Scala编写的.一段时间之后,我做 ...

  5. Apache Spark技术实战之9 -- 日志级别修改

    摘要 在学习使用Spark的过程中,总是想对内部运行过程作深入的了解,其中DEBUG和TRACE级别的日志可以为我们提供详细和有用的信息,那么如何进行合理设置呢,不复杂但也绝不是将一个INFO换为TR ...

  6. Apache Spark技术实战之8:Standalone部署模式下的临时文件清理

    未经本人同意严禁转载,徽沪一郎. 概要 在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件,这些临时目录和文件又是在什么时候被清理,本文将就这些问题做深入细致的解答. 从 ...

  7. ERROR actor.OneForOneStrategy: org.apache.spark.SparkContext

    今天在用Spark把Kafka的数据往ES写的时候,代码一直报错,错误信息如下: 15/10/20 17:28:56 ERROR actor.OneForOneStrategy: org.apache ...

  8. Apache Spark技术实战之6 -- spark-submit常见问题及其解决

    除本人同意外,严禁一切转载,徽沪一郎. 概要 编写了独立运行的Spark Application之后,需要将其提交到Spark Cluster中运行,一般会采用spark-submit来进行应用的提交 ...

  9. Apache Spark源码走读之24 -- Sort-based Shuffle的设计与实现

    欢迎转载,转载请注明出处. 概要 Spark 1.1中对spark core的一个重大改进就是引入了sort-based shuffle处理机制,本文就该处理机制的实现进行初步的分析. Sort-ba ...

  10. Apache Spark技术实战之4 -- 利用Spark将json文件导入Cassandra

    欢迎转载,转载请注明出处. 概要 本文简要介绍如何使用spark-cassandra-connector将json文件导入到cassandra数据库,这是一个使用spark的综合性示例. 前提条件 假 ...

随机推荐

  1. 高效的 itertools 模块(转)

    原文地址:http://python.jobbole.com/87380/ 我们知道,迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代 ...

  2. 【SPOJ 8093】Sevenk Love Oimaster

    http://www.spoj.com/problems/JZPGYZ/ 查询一个询问串在上面n个串中多少个串的子串. 后缀数组+主席树,常熟有点大... 建出广义SAM,利用parent树的dfs序 ...

  3. 【SAM】POJ1509-Glass Beads

    [题目大意] 求一个循环数列的最小表示法. [思路] 把原创复制一遍放在后面,建立SAM,从s按字典序开始跑长度L即可. 板子来源(作者见连接内):

  4. ElasticSearch安装为Windows服务

    目前我都是在windows的环境下操作是Elasticsearch,并且喜欢使用命令行 启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch 这样直接启动的话集 ...

  5. [NHibernate]使用AttributeNHibernate.Mapping.Attributes

    系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...

  6. Ubuntu下Wine使用教程

    转自:http://blog.csdn.net/wangchangshuai0010/article/details/12057251 用了段时间的Ubuntu,感觉很好!可是工作的时候还是要用到 w ...

  7. javascript 中contentWindow和 frames和iframe之间通信

    iframe父子兄弟之间通过jquery传值(contentWindow && parent),iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法) ...

  8. scrapy-splash抓取动态数据例子三

    一.介绍 本例子用scrapy-splash抓取今日头条网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信 ...

  9. centos 5.4中mysql主从同步配置方法

    安装环境•centos 5.4•mysql 5.1.xx 采用rpm直接安装•xtrabackup 1.2.22 采用rpm直接安装1. Master:/etc/my.cnf  代码如下 复制代码 [ ...

  10. NTP for Linux

    一.服务概述 NTP(network time  protocol 网络时间协议)服务器是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,提供高精度的时间校正,在LAN上与 ...