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. 笔记之monkey自定义脚本

    自定义脚本的稳定性测试 常规MOnkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景者时候就需要用到自定义脚本,Monkey支持执行用户自定义脚本的测试,用户之需要按照Monk ...

  2. 《笨方法学Python》加分题33

    while-leep 和我们接触过的 for-loop 类似,它们都会判断一个布尔表达式的真伪.也和 for 循环一样我们需要注意缩进,后续的练习会偏重这方面的练习.不同点在于 while 循环在执行 ...

  3. 用DOM方式解析XML

    一.用DOM方式解析XML 此例子节点结构如下: 1.获取book节点属性 (1).如果不知道节点的属性,通过 NamedNodeMap attrs = book.getAttributes(); 来 ...

  4. 进程&线程(转)

    (摘自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html) 在传统的操作系统中,进程拥有独立的内存地址空 ...

  5. Python学习——1

    我是一名刚入IT行业的小白,目前主要是做网络运维这一块.曾经总是认为我是做网络运维的,学习代码干啥啊?后来就慢慢发现,传统的运维方式让我的效率好像不如别人效率高,关键还TM看别人比我更轻松.每一个网络 ...

  6. opencv的安装

    网上搜了好多文章安装opencv3.2.0都未能成功,写的也个不相同,后来找到了opencv官网的教程,看了后才发现,这上面才是最详细的. 于是按照opencv官网教程安装,安装的一半就中断了.经过苦 ...

  7. keras常见参数input_dim、input_length理解

    在看keras文档embedding层的时候,不太理解其中的input_dim 和input_length 这两个参数,查阅了一下资料,记录下来. keras.layers.Embedding(inp ...

  8. Linux学习---类型修饰符

    auto eg:aoto int a;   默认情况--------->分配的内存可读可写的区域. register eg:register int a; 限制变量定义在寄存器上的修饰符 定义一 ...

  9. LOJ-10096(强连通+bfs)

    题目链接:传送门 思路: 强连通缩点,重建图,然后广搜找最长路径. #include<iostream> #include<cstdio> #include<cstrin ...

  10. 第一次OO总结

    作业1——多项式加减法 看到这个名字就开始瑟瑟发抖了,毕竟一年前用C语言让我写这么一个程序都很头疼,什么堆栈啊还有结构都稀里糊涂的,更别说用一个完全没接触过的语言来完成最简单的一次作业.像我这样越老心 ...