Spark计算框架的优势及核心功能

传统的离线计算常见问题是数据反馈慢,无法满足客户进行实时数据做决策的需求如果说MapReduce计算框架的出现是为了解决离线计算问题,那么Spark计算框架的出现则解决了实时计算问题,接下来先初步认识Spark内存计算框架。2009年加州大学伯克利分校AMP实验室提出one stack to rule them all的目标,即在一套软件栈内完成各种大数据分析任务目前,Spark 已经成为Apache软件基金会旗下的顶级开源项目。

一、Spark的优势

在实际应用型项目中,绝大多数公司都会选择 Spark 技术。Spark 之所以受欢迎,主要因为它与其他大数据平台有不同的特点,具体优势如下。

(1)运行速度快

Spark框架运行速度快主要有3个方面的原因∶Spark基于内存计算,速度要比磁盘计算快得多Spark 程序运行是基于线程模型,以线程的方式运行作业,要远比进程模式运行作业资源开销小;Spark框架内部有优化器,可以优化作业的执行,提高作业的执行效率。

(2)易用性

Spark支持JAVA等多种开发语言,支持Scala的API,支持多种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spat 集群来验证解决问题的方法。

(3)支持复杂查询

Spark支持复杂查询。除了Map及Reduce操作之外,Spark支持SQL查询、流式计算、机器学习和图计算。同时,用户可以在同一个工作流中无缝搭配这些计算范式。

(4)实时的流处理

对比 MapReduce 只能处理离线数据,Spark 支持实时流计算。Spark Streaming主要用来对数据进行实时处理。

(5)容错性

Spark 引进了弹性分布式数据集(RDD),它是分布在一组节点中的只读对象集合。即使丢失一部分对象集合因为对象集合本身是弹性的,Spark则可以根据父RDD对它们进行计算。另外在对 RDD 进行转换计算时,可以通过 CheckPoint 方法将数据持久化,从而实现容错。

二、Spark Core的核心功能

Spark Core 包含三大模块:任务调度、内存管理、错误恢复实现了Spark 框架的基本功能Spark Core 中还包含了对弹性分布式数据集 RDD分布在不同计算节点的元素集合的API定义是 Spark 主要的编程抽象。Spark Core 提供了创建和操作这些集合的多个API。

1Spark架构的原理

Spark 架构采用了分布式计算中的Master/Slave模型。Master是对应集群中含有Master进程的节点,Slave 是集群中含有 Worker 进程的节点。Master 作为整个集群的控制器,负责整个集群的正常运行;Worker是计算节点,接收主节点命令并进行状态汇报;Executor负责任务的执行。Spark 具体架构如图所示。

Spark计算框架的优势及核心功能_第1张图片

Spark 的工作原理∶

Worker节点启动之后会向 Master 节点注册,此时 Master 就能知晓哪些Worker 节点处于工作状态;当客户端提交 Application 时,会向 Master 注册 App,此时 Master 会根据Application的需要向Spark集群申请所需要的CPU和内存等资源;接着Master节点会在Worker节点上启动Executor进程,比如左侧Worker节点启动两个Executor,分别分配到两个CPU,右侧Worker 节点启动一个 Executor,分配到两个 CPU;最后客户端中的 Driver(驱动)跟 Worker 通信,在各个Worker节点中启动任务作业。

Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算的特性,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark 部署在大量的廉价硬件之上形成集群,提高了并行计算能力。

你可能感兴趣的:(scala,大数据,spark)