MapReduce给用户提供了简单的编程接口,用户只需要按照接口编写串行版本的代码,Hadoop框架会自动把程序运行到很多机器组成的集群上,并能处理某些机器在运行过程中出现故障的情况。然而,在MapReduce程序运行过程中,中间结果会写入磁盘,而且很多应用需要多个MapReduce任务来完成,任务之间的数据也要通过磁盘来交换,没有充分利用机器的内存。为此,美国加州大学伯克利分校的 AMPLab 设计实现了 Spark 计算框架(Zaharia,et al. 2012),充分利用现在机器的大内存资源,使得大数据计算的性能得到了进一步的提升。Spark 由 Scala 语言编写,Scala 是一种基于Java虚拟机的函数式编程语言,因此 Spark 提供的操作和 MapReduce 相比更加丰富和灵活。

  Spark 设计的核心是一种叫做可靠分布式数据集(Resilient Distributed Dataset,RDD)的数据结构。一个 RDD 是一组数据项的集合,可以是普通的列表,也可以是由键值对构成的字典。在 Spark 中,一个 RDD 可以分布式的保存在多台机器上,也可以保存在磁盘上,也可以保存在内存中。对 RDD 的操作分为动作(action)和变换(transformation)。表 3.4 列出了 RDD 支持的常见操作。与 MapReduce 不同,Spark 的操作都是对 RDD 整体进行的,而不是对具体的每一个数据项。动作操作会直接生效,产生新的 RDD ,而变换操作的执行则是懒惰(lazy)的,操作会被记录下来,直到遇到下一个动作时才产生一个完整的执行计划。Spark 中的 RDD 可以由框架自动或由开发者人为地指定缓存在内存中,在内存足够的情况下对于某些应用可以获得比 MapReduce 快100倍以上的性能。

  Spark 可以独立运行,也可以在 Hadoop 系统上运行,由 YARN 来调度。Spark 支持对 HDFS 的读/写,因此 MapReduce 程序可以很容易地改写成 Spark 程序,并在相同的环境下运行。

  与 Hadoop 类似,Spark 也提供了一些组件,用于不同的应用场景。前面介绍的 Spark 核心组件被称为 Spark Core。Spark SQL 在 Spark Core 的基础上提供了新的数据抽象SchemaRDD,用于处理结构化和半结构化的数据,支持用SQL的语法对SchemaRDD进行查询。与Hive类似,Spark Streaming 提供了流式处理的功能,与Hadoop的Storm/S4类似。MLlib 是 Spark 上的机器学习算法库,提供了类似Mahout的功能。而GraphX则是 Spark的图计算框架,能够完成与Giraph相似的功能。

  总地来说,目前Spark已经发展到比较成熟的阶段,其核心功能涵盖了Hadoop的大部分内容,并且可以在Hadoop生态系统内使用,具有性能上的优势,正在获得越来越广泛的应用。

Spark 介绍的更多相关文章

  1. Spark 介绍(基于内存计算的大数据并行计算框架)

    Spark 介绍(基于内存计算的大数据并行计算框架)  Hadoop与Spark 行业广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持 ...

  2. Spark介绍及安装部署

    一.Spark介绍 1.1 Apache Spark Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架(没有数据存储).最初在2009年由加州大学伯克利分校的AMPLab开 ...

  3. Spark记录-spark介绍

    Apache Spark是一个集群计算设计的快速计算.它是建立在Hadoop MapReduce之上,它扩展了 MapReduce 模式,有效地使用更多类型的计算,其中包括交互式查询和流处理.这是一个 ...

  4. 大数据系列之并行计算引擎Spark介绍

    相关博文:大数据系列之并行计算引擎Spark部署及应用 Spark: Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎. Spark是UC Berkeley AMP lab ( ...

  5. spark介绍

    什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hado ...

  6. Apache Spark介绍及集群搭建

    简介 Spark是一个针对于大规模数据处理的统一分析引擎.其处理速度比MapReduce快很多.其特征有: 1.速度快 spark比mapreduce在内存中快100x,比mapreduce在磁盘中快 ...

  7. spark介绍4(sparksql)ODBC(Windows)gc

    (ODBC是open database connection开源数据连接)  在Windows控制面板的管理工具里面 GC(Garbage Collection):JAVA/.NET中的垃圾回收器 l ...

  8. spark介绍3

  9. spark介绍2

    上述结果是 map 1 filter 1 map 2 filter 2 map 3 filter 3 map 4 filter 4 即说明是并行,且互不干扰,每个task运行到最后

随机推荐

  1. Synchronized和Lock的区别

    ①synchronized是jvm的关键字,Lock是Java类: ②synchronized会自动释放锁,而Lock需要在finally语句中主动释放锁,否则会造成死锁 ③用synchronized ...

  2. 使用Snappy将html或者url转成PDF文件

    这是一个操作简单的html文件或者url转PDF的php库 Github地址 https://github.com/KnpLabs/snappy 安装: $ composer require knpl ...

  3. [转] spring framework体系结构及内部各模块jar之间的maven依赖关系

    很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下 ...

  4. FastDFS api介绍

    1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...

  5. Linux iptables 安全配置(防Ddos)

    *filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-N whitelist-A whitelist -s 58.60 ...

  6. java画按钮的边框

    import javax.swing.*;import java.awt.*;public class demo_4{    public static void main(String [] arg ...

  7. 文件操作命令(TYPE)

    type 命令: // 描述: 显示文本文件的内容. 但不能进行修改. // 语法: type [<Drive>:][<Path>]<FileName> // 参数 ...

  8. Python建立时间事件引擎原理剖析

    作为python小白,学习量化交易的曲线是非常陡峭的,唯一好的办法就是一点点啃代码.以下代码案例来自vnpy的引擎代码. # encoding: UTF-8 #定义时间事件 EVENT_TIMER = ...

  9. mysql传统主从配置与主从监控

    主从简介 在现代企业中,数据显得尤为重要,而存储数据的数据库选择又五花八门,但无论是何种数据库,均存在着一种隐患. 当数据规模非常大,读写量也很高时,一台数据库已经无法负担全部读写任务,就需要多台数据 ...

  10. session随笔

    ·由于cookie中不能保存很多信息,于是Session出现来完成这个功能. ·Session的作用就是在服务器保存一些保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie, ...