Spark概念和架构介绍

概述

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。目前已经形成一个高速发展应用广泛的生态系统

Spark特性:

  1. 快速:大多数操作均在内存中迭代,只有少部分函数需要落地到磁盘。
  2. 易用性:支持scala、Java、Python、R等语言;提供超过80个算子,API使用及其方便
  3. 通用性:Spark提供了针对数据处理的一站式解决方案,计算时用Spark Core算子(替代Hadoop Map/Reduce),批处理时用Spark SQL(替代HiveSQL),实时计算用Spark Streaming(替代Stom),机器学习用Spark MLlib(替代Mahout;另外,通过Spark GraphX进行图计算。
  4. 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源

适用场景

  • 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数分钟到数小时;
  • 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间
  • 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

为什么要学Spark

基于MapReduce的计算引擎通常会将中间结果输出到磁盘上进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果
在这里插入图片描述
Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可以融入Hadoop的生态系统,以弥补MapReduce的不足。与Hadoop MapReduce相比,Spark基于内存的运算要快100倍以上。

Spark生态

在这里插入图片描述

spark架构

Spark基本模块

在这里插入图片描述

1、Spark Core

大规模并行和分布式数据处理的基础引擎。核心是分布式执行引擎,Java、Scala和Python API为分布式ETL应用程序程序开发提供了一个平台。此外,在核心上构建的其它库允许用于流式传输,SQL和机器学习的各种工作负载。

主要作用

  1. 内存管理和故障恢复
  2. 集群调度、分发和监视作业
  3. 与存储系统交互

Spark Core是Spark的核心功能,包括:

  • 基础设施:Spark中有很多基础设施,被Spark中的各种组件广泛使用,这些基础设施包括SparkConf(用于管理Spark应用程序的各种配置信息)、Spark内置RPC框架(使用Netty实现,有同步和异步的多种实现,Spark各个组件间的通信都依赖于此RPC框架)、事件总线ListenerBus(是SparkContext内部各个组件间使用事件–监听器模式异步调用的实现)、度量系统(是由Spark中的多种度量源【Source】和多种度量输出【Slink】构成,完成对整个Spark集群中各个组件运行期状态的监控。)
  • SparkContext:SparkContext是Spark的入口,Spark程序的提交与执行离不开SparkContext。它隐藏了网络通信、分布式部署、消息通信、存储体系、计算引擎、度量系统、文件服务、Web UI等内容,开发者只需要使用SparkContext提供的API完成功能开发。
  • SparkEnv:Spark的执行环境。内部封装了RPC环境(RpcEnv)、序列化管理器、广播管理器(BroadcastManager)、map任务输出跟踪器(MapOutputTracker)、存储体系、度量系统(MetricsSystem)、输出提交协调器等Task运行所需的各种组件。
  • 存储体系:它优选考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大的减少了磁盘I/O,提升了任务执行的效率,使得Spark适用于实时计算、迭代计算、流式计算等场景。Spark的内存存储空间和执行储存空间之间的边界是可以控制的
  • 调度系统:主要由DAGScheduler和TaskScheduler组成DAGScheduler负责创建Job、将DAG中的RDD划分到不同的Stage,给Stage创建对应的Task,批量提交Task等功能。TaskScheduler负责按照FIFO或者FAIR等调度算法对批量Task进行调度
  • 计算引擎:计算引擎是由内存管理器、任务内存管理器、Task、Shuffle管理器等组成。

2、Spark Streaming

在这里插入图片描述

是Spark的组件,用于处理实时流数据。因此,它是核心Spark API的补充。它支持实时数据流的高吞吐量和容错流处理。基本流单元是DStream,它基本上是一系列用于处理实时数据的RDD(弹性分布式数据集)。

3、Spark SQL:
在这里插入图片描述
Spark SQL是Spark中的一个新模块,它使用Spark编程API实现集成关系处理。它支持通过SQL或者Hive查询数据。对于那些熟悉RDBMS的人来说,Spark SQL将很容易从之前的工具过渡到可以扩展传统数据处理的边界。

Spark SQL通过函数编程API集成关系处理。此外,它为各种数据源提供支持,并且使用代码转换编织SQL查询,从而产生一个非常强大的工具。

4、GraphX

是用于图形和图形并行计算的Spark API。因此,它使用弹性分布式属性图扩展了Spark RDD。

5、MLlib
在这里插入图片描述
Spark提供的机器学习库。MLlib提供了机器学习相关的统计、分类、回归等领域的多种算法实现。其一致的API接口大大降低了用户的学习成本。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值