美文网首页
Spark 基础

Spark 基础

作者: 九七学姐 | 来源:发表于2016-11-29 09:33 被阅读106次

    --------“道路是曲折的,前途时光明的。”

    一. Spark 是什么

    分布式计算框架,核心是一个对由许多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。
    Spark核心引擎的特点——速度快、通用
    大一统的软件栈,其组件——Spark Core、Spark SQL(结构化数据)、Spark Streaming(实时计算)、MLib(机器学习)、GraphX(图计算)
    设计原理——组件之间密切结合,好处:1)均可从底层优化改进中获益; 2)运行整个软件栈的代价减少; 3)构建无缝整合不同处理模型的应用

    Spark软件栈.png

    二. Spark 特点:

    1. 分布式:多台机器并行化
    2. 基于内存存储(某些情况下也会基于磁盘,比如内存中放不下的时候)
    3. 特别适合于迭代计算
    4. 高效的容错机制

    三. 各组件

    1 Spark Core

    1)实现Spark的基本功能,包括任务调度、内存管理、错误恢复、与存储系统交互等模块。
    2)包括对弹性分布式数据集(RDD)的API定义(RDD表示分布在多个计算节点上可以并行操作的元素集合,是Spark主要的编程抽象),Spark Core提供了创建和操作这些集合的多个API。

    2 Spark SQL

    Spark SQL是Spark用来操作结构化数据的程序包,可使用SQL或者HQL来查询数据。
    1)扩展了Spark的RDD API

    3 Spark Streaming

    Spark提供的对实时数据进行流式计算的组件。
    1)提供了用来操作数据流的API,并且与Spark Core中的RDD API高度对应。
    2)从底层来看,Spark Streaming支持Spark Core同级别的容错性、吞吐量以及可伸缩性

    4 MLib

    提供机器学习功能的程序库
    1)提供了很多种机器学习算法,包括分类、回归、聚类、协同过滤等
    2)提供了模型评估、数据导入等额外的支持功能
    3)还提供了一种更底层的机器学习原语,包括一个通用的速度下降优化算法
    所有这些算法都被设计为可以在集群上轻松伸缩的架构。

    5 Graphx

    用来操作图(比如社交网络的)的程序库,可以进行并行的图计算。
    1)扩展了Spark的RDD API,能用来创建一个定点和边都包含任意属性的有向图
    2)支持针对图的各种操作
    3)支持一些常用的图算法

    6 集群管理器

    就底层而言,Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
    为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos,以及Spark 自带的一个简易调度器,叫做独立调度器。
    若在装有Hadoop YARN或Mesos的集群,通过Spark对这些集群管理器的支持,我们的应用也同样能运行在这些集群上。在把Spark部署到Amazon EC2上时,Spark有个自带的脚本可以启动独立模式集群以及各种相关服务。
    不同集群管理的区别
    1)自带的独立模式:在一堆机器上只运行Spark
    2)Hadoop YARN或Mesos集群管理器:既可以运行Spark作业有可以运行hadoop作业

    四. 弹性分布式数据集(RDD)

    RDD——是一个不可变的、容错的、分布式对象集合,可并行操作这些集合并且RDD提供了丰富的数据操作接口。
    RDD是对分布式计算的抽象,数据集本身表示要处理的数据,它是一系列数据分片,分布在各个节点的内存或者磁盘中。
    弹性之一:自动进行内存和磁盘数据存储的切换
    弹性之二:基于lineage的高效容错(若第900个出错,直接从第900个开始恢复就可以)
    弹性之三:Task如果失败会自动进行特定次数的重试,默认尝试4次
    弹性之四:Stage如果失败会自动进行特定次数的重试(!注意!只计算失败的分片)。默认是尝试3次

    五. Spark的存储层次

    Spark不仅可以将任何Hadoop分布式文件系统(HDFS)上的文件读取为分布式数据集,也可以支持其他支持Hadoop接口的系统,比如本地文件、亚马逊S3、Cassandra、Hive、HBase等。我们需要弄清楚——hadoop并非Spark的必要条件,Spark支持任何实现了hadoop接口的存储系统。Spark支持的hadoop输入格式包括文本文件、SequenceFile、Avro、Parquet等。
    Know more,do more

    相关文章

      网友评论

          本文标题:Spark 基础

          本文链接:https://www.haomeiwen.com/subject/fsxopttx.html