Spark理论分析

Spark简介

什么是Spark?

Spark 是基于内存计算的通用大规模数据处理框架

Spark已经融入了Hadoop生态系统,可支持的作业类型和应用场景比MapReduce更为广泛,并且具备了MapReduce所有的高容错性和高伸缩性特点。

spark.jpg

为什么会诞生Spark

并不是所有的问题都可以简单的分解成Map和Reduce两步模型处理

Mapreduce 缺点

  1. 延迟高: 不适合交互式SQL分析
  2. 迭代计算力不从心:斐波那契数列
  3. 流式数据处理: 统计网站的PV、UV数据

Spark

     一站式解决:

           离线批处理

流式计算

在线实时分析

Spark为何快

MapReduce会将中间结果输出到本地磁盘:例如Shuffle过程Map的中间结果

 

shuffle.jpg

有多个MapReduce任务串联时,依赖HDFS存储中间结果的输出对磁盘的IO操作太频繁

例如:hive

hdfs 迭代 (1).jpg

Spark 尽可能减小中间结果写入磁盘,尽可能减少不必要的Sort/Shuffle  反复用到的数据进行Cache 对于DAG进行高度的优化、划分不同的Stage ,使用延迟计算技术。

hdfs 迭代 (3).jpg

弹性分布式数据集RDD

   Spark 将数据缓存在分布式内存中

如何实现?rdd

   Spark的核心

   分布式内存抽象

提供一个高度受限的共享内存模型

逻辑上集中但是物理上是存在在集群的多台机器上

RDD属性和特点

   只读

         通过HDFS或者其它持久化系统创建RDD

         通过transformation将父RDD转化得到新的RDD

         RDD 上保存着前后的之间的依赖关系

   Partition

         基本组成单位,RDD在逻辑上按照Partition分块

         分布在各个节点上

          分片数量决定并行计算的粒度

RDD中保存如何计算每一个分区的函数

   容错

        失败自动重建

如果发生部分分区数据丢失,可以通过依赖关系重新计算

 

Spark编程模型

  1. 对于RDD有四种类型的算子

Create:

SparkContext.textFile()

       SparkContext.parallelize()

Transformation

     作用于一个或者多个RDD,输出转换后的RDD

     例如:map,filter,groupby

Action:

     会触发Spark提交作业,并将结果返回Diver Program

      例如:reduce,countByKey

Cache:

      cache 缓存

      persist持久化

惰性运算  遇到Action时才会真正的执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值