Spark概述

概述

Spark是一个快如闪电的统一分析引擎(计算框架)用于大规模数据集的处理。Spark在做数据的批处理计算,计算性能大约是Hadoop MapReduce的10~100倍,因为Spark使用比较先进的基于DAG任务调度,可以将一个任务拆分成若干个阶段,然后将这些阶段分批次交给集群计算节点处理。
在这里插入图片描述
MapReduce VS Spark

  • MapReduce

MapReduce作为第一代大数据处理框架,在设计初期只是为了满足基于海量数据集的计算的迫切需求。自2006年剥离自Nutch(java 搜索引擎)工程,主要解决的是早期人们对大数据的初级认知所面临的的问题。
在这里插入图片描述
整个MapReduce的计算实现的是基于磁盘的IO计算,随着大数据技术的不断普及,人们开始重新定义大数据的处理方式,不仅仅满足于能在合理的时间范围内完成对大数据的计算,还对计算的实效性提出了更苛刻的要求,因为人们开始探索使用Map Reduce计算框架完成一些复杂的高阶算法,往往这些算法通常不能通过1次性的Map Reduce迭代计算完成。由于Map Reduce计算模型总是把结果存储到磁盘中,每次迭代都需要将数据磁盘加载到内存,这就为后续的迭代带来了更多延长。

  • Spark

Spark发展如此之快是因为Spark在计算层方面明显优于MapReduce的磁盘迭代计算,因为Spark可以使用内存对数据做计算,而且计算的中间结果也可以缓存在内存中,这就为后续的迭代计算节省了时间,大幅度的提升了针对于海量数据的计算效率。

在这里插入图片描述
不仅如此,Spark在设计理念中也提出了One stack ruled them all战略,并且提供了基于Spark批处理之上的计算服务分支。例如:实现基于Spark的交互查询、近实时流处理、机器学习、Grahx图形关系存储等。

在这里插入图片描述
从图中不难看出Spark处于计算层,Spark项目在战略上起到了承上启下的作用,并没有废弃原有以hadoop为主体的大数据解决方案。因为Spark向下可以计算来自于HDFS、HBase、Cassandra和亚马逊S3文件服务器的数据,也就意味着使用Spark作为计算层,用户原有的存储层架构无需改动。

计算流程
因为Spark计算是在MapReduce计算之后诞生,吸取了MapReduce设计经验,极大地规避了MapReduce计算过程中的诟病。

  • MapReduce
    在这里插入图片描述
    缺点:

1.MapReduce虽然基于矢量编程思想,但是计算状态过于简单,只是简单的将任务分为Map state和Reduce state,没有考虑到迭代计算场景。
2.在Map任务计算的中间结果存储到本地磁盘,IO调用过多,数据读写效率差。
3.MapReduce是先提交任务,然后在计算过程中申请资源。并且计算方式过于笨重。每个并行度都是由一个JVM进程来实现计算。

  • Spark
    Spark在计算层面上借鉴了MapReduce计算设计的经验,提出了DAGSchedule和TaskSchedual概念,打破了在MapReduce任务中一个job只用Map state和Reduce state的两个阶段。Spark先将任务状态拆分,Spark在任务计算初期首先通过DAGSchedule计算任务的state,将每个阶段的state封装成一个TaskSet,然后由TaskSchedual将TaskSet提交集群进行计算。可以将Spark计算的流程使用以下的流程图描述:
    在这里插入图片描述
    1)SaprkContext初始化上下文。
    2)向ClusterManager申请计算资源。
    3)启动计算进程服务,并且告知这些进程服务于哪个job。
    4)反向注册给Context、Driver
    5)调用DAG完成阶段的划分
    6)将state转换为TaskSet
    7)将TaskSet分发给executor进程、TaskSet本质上是一个线程集合
    Executor在计算过程中会进行交互。

优点:

1.智能DAG任务划分,将一个复杂计算拆分成若干个state,满足迭代计算场景
2.Spark提供了计算的缓冲和容错策略,将计算结果存储在内存或者磁盘,加速每个state的运行,提升运行效率
3.Spark在计算初期,就已经申请好计算资源。任务并行度是通过在Executor进程中启动线程实现,相比较于MapReduce计算更加轻快。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值