设为首页 加入收藏

TOP

大数据学习之路(六)spark
2019-05-12 01:07:34 】 浏览:112
Tags:数据 习之 spark

spark

什么是spark:spark是一个计算框架

MR是一个批量处理框架,和spark里的spark-core一样

spark和MR的比较:

Spark相比MR速度快,MR作为一个job,在中间环节中结果是落地的(会经过磁盘交换),Spark计算过程中数据流转都是在内存的(减少了对HDFS的依赖)

MR spark
优点 资源隔离,稳定性高,开发过程中不涉及内存锁(互斥锁、读写锁)的开发) 多线程模型,速度快,适合低延迟的任务,适合于内存密集型任务
缺点 多进程模型,每个任务启动时间长,所以不适合于低延迟的任务 稳定性差

spark的运行模式:

(1)单机模式:方便人工调试
(2)Standalone模式:自己独立一套集群缺点:资源不利于充分利用
(3)Yarn模式:
1)Yarn-Client模式:Driver运行在本地
适合交互调试
2)Yarn-Cluster模式:Driver运行在集群(AM)
正式提交任务的模式(remote)

spark与mapReduce作业之间的区别

spark中:--Application:spark-submit提交的程序

--Drive:完成任务调度以及和executor和cluster manager进行协调

--Executor:每个spark executor作为一个yarn容器(container)运行

--job:和MR中的job不同,MR中的job主要是map和reduce,而spark中的job很好区分,一个算子就是一个job

--task:是spark中最新的执行单元,RDD一般带有partition,每个partition在executor上运行就是一个task

--stage:是spark中独有的,一般来说一个job会切成一定数量的stage,各个stage按顺序执行

spark中的应用程序

--应用程序:由一个drive program和多个job组成

-job: 由多个stage组成

-stage:对应一个taskset

-taskset:对应一组关联的相互之间没有shullfe依赖关系的task组成

-task:任务完成的最小工作单元

drive program:

-spark的核心组件

-构建sparkContext

-将用户提交的job转化为DAG图

-根据策略将DAG图划分为多个stage,根据分区生成一系列的task

-根据task需求想RM申请资源

-提交任务并检查任务状态

excutor:

– 真正执行task的单元,一个Work Node上可以有多个Executor

spark核心

Spark基于弹性分布式数据集(RDD)模型,具有良好的通用性、容错性与并行处理数据的能力

RDD( Resilient Distributed Dataset ):弹性分布式数据集(相当于集合),它的本质是数据 集的描述(只读的、可分区的分布式数据集),而不是数据集本身

RDD的关键特征:

– RDD使用户能够显式将计算结果保存在内存中,控制数据的划分,并使用更丰富的操作集合来处理

– 使用更丰富的操作来处理,只读(由一个RDD变换得到另一个RDD,但是不能对本身的RDD修改)

– 记录数据的变换而不是数据本身保证容错(lineage)

通常在不同机器上备份数据或者记录数据更新的方式完成容错,但这种对任务密集型任务代价很高

RDD采用数据应用变换(map,filter,join),若部分数据丢失,RDD拥有足够的信息得知这部分数据是如何计算得到的,可通过重新计算来得到丢失 的数据

这种恢复数据方法很快,无需大量数据复制操作,可以认为Spark是基于RDD模型的系统

– 懒操作,延迟计算,action的时候才操作

– 瞬时性,用时才产生,用完就释放

spark有两种算子:transformation和action算子

transformations是RDD之间的变换,action会对数据执行一定的操作

transformations采用懒策略,仅在对相关RDD进行action提交时才触发计算

RDD依赖关系

分为宽依赖和窄依赖,对其原理了解不是很透彻,继续学习,后期会更新在spark深入学习中

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SparkStreaming应用解析(一) 下一篇        ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目