【博学谷学习记录】超强总结,用心分享|Spark的基本介绍和Spark的集群架构
一、Spark的基本介绍
1.1 什么是Spark及Spark产生的背景
定义: Spark是一款用于大规模数据处理分布式的分析引擎。
MR: 是一款用于大规模数据处理分布式的分析引擎
MR存在的弊端:
1- 使用API相对比较低级: 大量的功能代码都需要程序员自己来实现;
2- 计算效率慢: 大量的经过磁盘和内存之间的交互, 基于磁盘计算 IO比较大 (IO密集型框架);
3- 迭代计算非常不方便。
什么是迭代计算:
在计算过程中, 需要将计算流程划分为N个阶段, 每个阶段之间互相依赖, 后一个阶段必须等待前一个阶段执行完成后, 然后才能执行下一个阶段。
对于市场而言, 虽然离线计算对实时性要求一般不高, 但是依然希望能够计算的越快越好, 所以在这样的背景下, 迫切需求一款能够支持大规模的分布式计算的引擎, 同时能有非常高效的迭代计算的性能。Spark就是在这样的背景下, 逐步的产生了出来。
1.2 为什么Spark运行效率要高于MR?
RDD: 是Spark的核心,是Spark的一个数据结构,可以理解为就是一个庞大的容器,整个迭代计算操作都是基于这个容器来进行,整个计算可以基于内存来进行迭代。
因此,Spark运行效率要高于MR的原因主要有2点:
(1)Spark提供了全新的数据结构RDD,支持在内存中进行计算,部分迭代操作支持直接在内存中进行迭代处理。
(2)Spark程序是基于线程运行的,而MR是基于进程来运行,线程的启动和销毁是优于进程的。
1.3 Spark的特点
(1)运行速度快
原因一:提供了一个全新的数据结构:RDD。整个计算操作是基于内存的,当内存不足时也可以放置到磁盘上。
原因二:整个Spark是基于线程运行的,线程的启动和销毁优于进程。
(2)易用性
原因一:Spark提供了多种操作语言的API如:Python SQL scala Java R。
原因二:Spark提供非常多的高阶API,而且这些API在不同的语言中操作基本都是类似的,大大降低了学习成本。
(3)随处运行
原因一:编写好的Spark程序可以被提交到多个不同的资源平台运行: Local 、Spark集群(standlone)、Yarn平台、以及其他支持Spark的云平台。
原因二:Spark框架可以和多种软件进行集成,集成后可以非常方便的对接不同的软件进行数据处理。
二、Spark的集群架构
(1)Spark集群架构是一个主从分布式高可用集群架构。
(2)主节点作用:
1-管理众多的从节点
2-负责资源的分配管理
3-负责接收客户端提交的任务请求,负责分配Driver程序启动到相应的从节点上。
(3)从节点作用:
1-和主节点保持心跳,汇报自己的资源信息
2-负责接收Driver分配的任务,执行具体任务
3-负责启动Driver程序。