• Spark- Spark基本工作原理


    Spark特点:

    1.分布式

      spark读取数据时是把数据分布式存储到各个节点内存中

    2.主要基于内存(少数情况基于磁盘,如shuffle阶段)

      所有计算操作,都是针对多个节点上内存的数据,进行并行操作的

    3.迭代式计算

    对分布式节点内存中的数据进行处理,处理后的数据可能会移动到其他节点的内存中,当需要用到某些数据时,从这些节点的内存中就能找到,迭代出来使用

    Spark与MapReduce的区别

    Spark与MapReduce最大的不同在于,迭代式计算模型:

    MapReduce分为两个阶段,map和reduce,两个阶段完成就结束了,所以我们在一个job里能做的处理有限,只能在map和reduce里处理

    Spark计算模型可以分为n个阶段,因为他是内存迭代式的,我们在处理完一个阶段以后,可以继续往下处理很多个阶段,而不只是两个阶段。所以,Spark相较于MapReduce来说,计算模型可以提供更强大的功能。 

    RDD

    官网上有准确的介绍:http://spark.apache.org/docs/1.6.1/programming-guide.html#resilient-distributed-datasets-rdds

    1.RDD是Spark提供的核心抽象,全称为 Resilient Distributed Datasets (RDDs),即弹性分布式数据集。

      RDD的每个partition ,在Spark 节点上存储时,默认是放在内存中的,但是如果说内存放不下这么多数据时,比如每个节点最多放5万数据,结果你每个partition 是10万数据,那么就会把partition 中的数据写入磁盘上,5万数据在内存,5万在磁盘,进行保存。

      而以上述这一切对于用户来说,都是完全透明的,也就是说,你不用去管RDD的数据存储在哪里,内存,还是磁盘,只要关注人你针对的RDD进行计算和处理等等操作即可。所以说,RDD的这种自动进行内存和磁盘之间权衡与切换的机制,就是RDD的弹性特点所在。

    2.RDD在抽象上来说是一种元素集合,包含了数据,它是被分区的,分为多个分区,每个分区分布在不同的节点上,从而让RDD中的数据可以被并行操作。(分布式数据集)

      一个分区,在逻辑上抽象代表了一个HDFS文件。但是它实际上是被分区的,分为多个分区,多个分区散落在Spark集群中,不同的节点上。比如说有90万数据,分为9个partitions,9个分区

    3.RDD通常通过 Hadoop 上的文件,即HDFS文件或Hive表,来进行创建;有时也可以通过应用程序中的集合来创建。

      Spark围绕着弹性分布数据集(RDD)的概念,RDD是一种容错的并行操作元素集合。创建RDD有两种方法:并行化 驱动程序中的现有集合,或者在外部存储系统(如共享文件系统,HDFS,HBase或提供Hadoop InputFormat的任何数据源)中引用数据集。

    4.RDD最重要的特性是,提供了容错性,可以自动从失败节点中恢复过来。

      即如果某个节点上的RDD partition,因为节点故障,导致数据丢失了,那么RDD会自动通过自己的数据来源重新计算partition。这一切对使用者是透明的。

  • 相关阅读:
    呈现系统-组件间的通信方式(7)
    web项目中图标的前端处理方案
    ADO--数据访问技术
    canvas--绘制路径
    canvas--改变颜色
    canvas-在画布中画两个方块(一个空心一个实体)
    canvas--画布《第一步》
    拼图游戏【简单】
    判断字符串是否为空--string.Empty、string=""、s.length==0
    判断Char是否为数字
  • 原文地址:https://www.cnblogs.com/RzCong/p/7703591.html
Copyright © 2020-2023  润新知