Spark学习笔记之浅释

jopen 9年前

概述:

    Spark是一个基于内存计算的开源集群计算系统,目的是让数据分析更加快速。

    Spark非常小巧玲珑,由加州伯克利大学AMP实验室的小团队开发。使用的语言

是Scala,项目的core部分的代码只有63个Scala文件。(AMP实验室名字有点意思:

Algorithm Machine People,算法、机器、人)

    Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同

之处,这些有用的不同之处使得Spark在某些工作负载方面表现得更加优越,换句话

说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代

工作负载。

    Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,

Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作

分布式数据集。

    Spark还引进了丰富的RDD(弹性分布式数据集)。RDD是分布在一组节点中的只

读对象集合。这些集合是弹性的,如果数据集一部分丢失,则可以对他们进行重建。

重建部分数据集的过程依赖于容错机制,该机制可以维护“血统”(即允许基于数

据衍生过程重建部分数据集的信息)。RDD被表示为一个Scala对象,并且可以从文

件中创建它;


总结:
  1.Spark是一个开发库
  2.任何能运行成功的库都可能成为Spark的一部分
  3.通用,它可以和spark SQL,Spark Streaming,MLlib(machine leaning),Graphx无缝集成
    它是一个平台,是一个通用的开发库
  4.各个行业及专家的构思可集合至Spark,成为强大的API
  
Spark优势:

  1.首先Spark是基于内存的计算

  2.提供了支持DAG图的分布式并行计算框架,减少多次计算之间的中间结果IO开销

  3.提供Cache机制来支持多次迭代计算或者数据共享,减少IO开销

  4.RDD之间维护了血统关系,一旦RDD挂掉了,能通过父RDD自动重建保证了容错性

  5.移动计算而非移动数据,RDD分区可以就近读取分布式文件系统中的数据块到各

    个节点内存中进行计算

  6.使用多线程池模型来减少task启动开销

  7.shuffle过程中避免不必要的sort操作

  8.使用容错的高可伸缩性的akka做为通讯框架

  
运行框架:

  1.Hadoop的MapReduce框架平台YARN

  2.Apache Mesos框架平台

  3.Spark的Standalone框架平台

  4.亚马逊的AWS平台


另,与Hadoop2.7.0一样,社区决定从Spark1.5将不再支持JDK1.6
JDK1.7的参考资料:
http://liujunjie51072.blog.163.com/blog/static/868916212009915105633843/