赞
踩
Hadoop虽然已经成为大数据技术的事实标准,但其本身存在很多缺陷。比如,mapreduce计算模型延迟过高,无法实现实时快速计算的需求,只适用于离线批处理,I/O磁盘开销大。
spark在借鉴mapreduce优点同时,很好解决了mapreduce存在的缺陷:
1、spark计算也属于mapreduce计算,但不局限于map和reduce操作;
2、spark提供内计算,中间结果放入内存,提高迭代运算效率;
3、基于DAG的任务调度执行机制,优于mapreduce调度机制。
1、运行速度快; 2、容易使用; 3、通用性; 4、运行模式多样性。
spark Core包含spark最基础、核心功能
在学习spark之前,我们首先要明白以下名词的意思:
spark采用 主从架构,即一个master(driver)和若干个worker构成;
(1)首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控
(2)资源管理器为Executor分配资源,并启动Executor进程
(3)SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,并提供应用程序代码
(4)Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源
一个应用由一个driver和若干个作业(worker)组成;
一个作业由多个阶段构成;
一个阶段由多个没有shuffle关系的任务构成
RDD分布式对象集合,本质上是一个只读的分区记录集合,不能直接修改,通过转换得到新的RDD。
在RDD的执行过程中,真正的计算发生在行动操作中,在前面的所有转换,spark只是记录下转换操作应用的一些基础数据集和RDD生成轨迹,不会触发计算。
A、B是两个RDD,转换spark只记录了RDD生成和依赖关系,从而得到DAG图;
动作,生成一个作业,向DAG调度提交作业,触发从起点开始的真正计算。
优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单、高效的容错性、存放的数据可以是JAVA对象
以是否包含shuffle操作作为判断依据:RDD可以分为宽依赖、窄依赖
对于窄依赖其父RDD与子RDD之间为一对一、多对一关系;反之,对于宽依赖其父RDD与子RDD之间为一对多关系:
窄依赖可以实现“流水线”优化;但宽依赖包含shuffle操作无法实现“流水线”优化。
Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。