【Spark编程基础(3)】Spark的设计与运行原理

1.Spark概述

对Hadoop MapReduce的优点继承、缺点改进;基于内存的计算框架,大型,低延迟。

三大分布式计算系统开源项目:hadoop、spark、storm。

运行速度快:内存计算、循环数据流、有向无环图设计机制。对所有数据集构造DAG,执行引擎基于DAG拆分为不同阶段和任务,进行流水线优化。

容易使用:Scala★、Java、Python、R语言。

通用型:Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX。

运行模式多样:独立的集群模式、可访问多种数据源

Spark解决计算问题+Hadoop HDFS、HBase解决存储问题。

Scala是一种多范式编程语言,支持函数式编程和面向对象编程。

特性:

  • 强大的并发性——支持函数式编程、分布式系统
  • 语法简洁——提供优雅的API
  • 兼容Java运行速度快——与Hadoop生态圈能融合

Spark与Hadoop对比

  • MapReduce表达能力有限
  • 磁盘IO开销大
  • 延迟高
  • 衔接IO开销大

Spark的优点

  • 除了map、reduce还提供filter、join、groupby
  • 内存计算
  • 迭代计算:DAG,MR:迭代时反复读写磁盘
  • 流水线优化

2.Spark生态系统

应用类型时间跨度
复杂的批量数据处理数十分钟到数小时
基于历史数据的交互式查询数十秒到数分钟
基于实时数据流的数据处理数百毫秒到数秒

在这里插入图片描述

Hadoop MapReduce、Storm等产品之间无法无缝共享,需要进行数据格式转换、资源利用不充分。

在这里插入图片描述

在这里插入图片描述
BDAS(Berkeley Data Analytics Stack)
在这里插入图片描述
流计算:Spark Streaming(RDD数据抽象)、Structured Streaming(DataFrame数据抽象)2.2以后正式版,2.3以后支持毫秒级实时流计算。

3. Spark运行架构

3.1基本概念

最核心的概念(数据抽象):RDD

RDD:Resillient Distributed Dataset简写,即弹性分布式数据集。

DAG:反映RDD之间的依赖关系。

Executor:工作节点上运行一个Executor进程,执行具体任务

应用:词频统计代码文件=Spark应用程序

任务:运行在Executor进程上的工作单元

作业(job):

阶段:作业的基本调度单位,每个阶段包含若干个任务。

3.2 架构设计

在这里插入图片描述
Driver——“指挥所”

Cluster Manager——集群资源管理器,包括CPU、内存、带宽,可以用自带、YARN或者Mesos。

Worker Node——Executor进程->线程->任务

作业->阶段->任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 Spark运行基本流程

pass,回头来填。

3.4 RDD的设计与运行原理

** 设计背景**

MapReduce:无法处理迭代场景。反复读写工作子集、磁盘IO开销
、序列化和反序列化。

RDD:提供了一种抽象的数据架构,避免数据落地。

RDD概念、操作和特性

RDD本质上是一个只读的分区记录集合。

RDD加载高度受限的共享内存模型。(不能修改)

RDD在转化过程可以修改。(通过生成新的RDD来完成一个数据修改的目的)

操作类型:动作类型操作、转换类型操作。

转换类型操作只记录转换轨迹,不会真正计算。如map、filter、groupBy、join。

粗粒度:一次只能针对RDD全集进行转换。
不支持细粒度修改、如网页爬虫。
在这里插入图片描述
惰性调用机制——转换只记录轨迹,执行动作才会触发计算。

流水线优化:

在这里插入图片描述
天然高效的容错性

在这里插入图片描述
避免不必要的磁盘读写开销

数据在内存的多个RDD之间进行传递的操作。RDD.cache()

避免了序列化和反序列化的开销

RDD之间的依赖关系

宽依赖(shuffle操作)

窄依赖(父子RDD一对一,多对一)

阶段的划分和RDD运行过程

一个作业(DAG图)划分为多个阶段,划分的依据就是宽依赖和窄依赖。窄依赖可以进行流水线优化;宽依赖不能进行流水线优化。

fork/join机制

在这里插入图片描述

只要发生Shuffle一定会写磁盘。

对DAG图反向解析

发现窄依赖,不断加入阶段;遇到宽依赖,生成不同阶段。

在这里插入图片描述

RDD运行过程

从RDD->执行任务

在这里插入图片描述
任务结果返回
在这里插入图片描述

4.Spark的部署和应用方式

单机和集群

集群调度方式:自带、YARN、Mesos。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值