Spark简介

1.  Spark是近年来发展较快的分布式并行数据处理框架,可以与Hadoop联合使用,增强Hadoop的性能。同时,Spark还增加了内存缓存、流数据处理、图数据处理等更为高级的数据处理能力。

2.Spark的特点:

    ○ 高可伸缩性

    ○ 高容错

    ○ 基于内存计算

3.Spark的生态体系:BDAS

    ○ MapReduce属于Hadoop生态体系之一,Spark则属于BDAS生态体系之一

    ○ Hadoop包含了MapReduce、HDFS、HBase、Hive、Zookeeper、Pig、Sqoop等

    ○ BDAS包含了Spark、Shark(相当于Hive)、BlinkDB、Spark Streaming(消息实时处理框架,类似Storm)等等

4.Spark与MapReduce相比的优势:

    ○ MapReduce通常将中间结果放到HDFS上,Spark是基于内存并行大数据框架,中间结果存放到内存,对于迭代数据Spark效率高。

    ○ MapReduce总是消耗大量时间排序,而有些场景不需要排序,Spark可以避免不必要的排序所带来的开销

    ○ Spark是一张有向无环图(从一个点出发最终无法回到该点的一个拓扑),并对其进行优化。

5.Driver程序启动多个Worker,Worker从文件系统加载数据并产生RDD(即数据放到RDD中,RDD是一个数据结构),并按照不同分区Cache到内存中。

6.RDD

    ○ 英文名:Resilient Distributed Dataset

    ○ 中文名:弹性分布式数据集

    ○ RDD是一个只读、分区记录的集合,可以理解为一个存储数据的数据结构,在Spark中一切基于RDD

    ○ RDD可以从以下几种方式创建:

        1、集合转换

        2、从文件系统(本地文件、HDFS、HBase)输入

        3、从父RDD转换(为什么需要父RDD呢?容错,下面会提及)

    ○ RDD的计算类型:

        1、Transformation:延迟执行,一个RDD通过该操作产生的新的RDD时不会立即执行,只有等到Action操作才会真正执行。

        2、Action:提交Spark作业,当Action时,Transformation类型的操作才会真正执行计算操作,然后产生最终结果输出。

        3、Hadoop提供处理的数据接口有Map和Reduce,而Spark提供的不仅仅有map和reduce,还有更多对数据处理的接口

7.容错Lineage

概念:  ○ 每个RDD都会记录自己所依赖的父RDD,一旦出现某个RDD的某些partition丢失,可以通过并行计算迅速恢复

8.Narrow Dependent(窄依赖)和Wide Dependent(宽依赖)

 ○ RDD的依赖又分为Narrow Dependent(窄依赖)和Wide Dependent(宽依赖)

        ○ 窄依赖:每个partition最多只能给一个RDD使用,由于没有多重依赖,所以在一个节点上可以一次性将partition处理完,且一旦数据发生丢失或者损坏可以迅速从上一个RDD恢复

        ○ 宽依赖:每个partition可以给多个RDD使用,由于多重依赖,只有等到所有到达节点的数据处理完毕才能进行下一步处理,一旦发生数据丢失或者损 坏,则完蛋了,所以在这发生之前必须将上一次所有节点的数据进行物化(存储到磁盘上)处理,这样达到恢复。

9.缓存策略

    Spark通过useDisk、useMemory、deserialized、replication4个参数组成11种缓存策略。

    useDisk:使用磁盘缓存(boolean )

    useMemory:使用内存缓存(boolean)

    deserialized:反序列化(序列化是为了网络将对象进行传输,boolean:true反序列化false序列化)

    replication:副本数量(int)

10.提交时使用spark-submit提交

原文地址:https://www.cnblogs.com/Mandylover/p/5154210.html