【云计算与大数据技术】Spark的解析(图文解释 超详细必看)

简介: 【云计算与大数据技术】Spark的解析(图文解释 超详细必看)

一、Spark RDD

Spark是一个高性能的内存分布式计算框架,具备可扩展性,任务容错等特性,每个Spark应用都是由一个driver program 构成,该程序运行用户的 main函数 。

Spark提供的一个主要抽象就是 RDD(Resilient Distributed Datasets),这 是一个分布在集群中多节点上的数据集合,利用内存和磁盘作为存储介质。其中内存为主要数据存储对象,支持对该数据集合的并发操作,用户可以使用HDFS中的一个文件来创建一个RDD,可以控制RDD存放于内存中还是存储与磁盘。

RDD的设计目标是针对迭代式机器学习,每个RDD是只读的、不可更改的

创建RDD

有两种方式创建一个 RDD

在driver program 中并行化一个当前的数据集合

利用一个外部存储系统中的数据集合创建

二、Spark与MapReduce对比

Spark 作为新一代的大数据计算框架,针对的是迭代式计算、实时数据处理,要求处理的时间更少,与MapReduce对比整体反映如下

1: 在中间计算结果方面 - Spark基本把数据存放在内存中,只有在内存资源不够的时候才写到磁盘等存储介质中; 而 MapReduce计算过程中 Map任务产生的 计算结果存放到本地磁盘中

2:在计算模型方面 - Spark采用 DAG 图描述计算任务,Spark拥有更丰富的功能;MapReduce则只采用 Map和 Reduce两个函数,计算功能比较简单

3:在计算速度方面 - Spark 的计算速度更快

4:在容错方面 - Spark采用了和 MapReduce类似的方式,针对丢失和无法引用的RDD,Spark采用利用记录的transform,采取重新做已做过的 transform

5:在计算成本方面 - Spark是把RDD主要存放在内存存储介质中,则需要提供高容量的内存;而 MapReduce是面向磁盘的分布式计算框架,因此在成本考虑方面,Spark的计算成本高于 MapReduce计算框架

6:在简单易管理方面 - 目前Spark也在同一个集群上运行流处理 、批处理和机器学习,同时Spark也可以管理不同类型的负载。这些都是 MapReduce做不到的

三、Spark工作机制

开始深入探讨Spark的内部工作原理,具体包括Spark运行的DAG图、Partition、容错机制、缓存管理以及数据持久化

1:DAG工作图

DAG是有向无环图

当用户运行action操作的时候, Spark调度器检查RDD的lineage图,生成一个DAG图

为了Spark更加高效的调度和计算,RDD DAG中还包括宽依赖和窄依赖

窄依赖是父节点 RDD 中的分区最多只被子节点 RDD 中的一个分区使用

宽依赖是父节点RDD中的分区被子节点 RDD 中的多个子分区使用

采用DAG方式描述运行逻辑,可以描述更加复杂的运算功能,也有利于Spark调度器调度

2:分区Partition

Spark 执行每次操作transformation都会产生一个新的RDD,每个RDD是Partition分区的集合

在Spark中 ,操作的粒度是Partition分区

当前支持的分区方式有hash分区和范围(range)分区

3:Linedge容错方法

在容错方面有多种方式,包括数据复制以及记录修改日志

RDD本身是一个不可更改的数据集,Spark根据transformation和action构建它的操作图DAG

当执行任务的 Worker失败时完全可以通过操作图 DAG 获得之前执行的操作,进行重新计算

针对RDD的wide dependency,最有效的容错方式同样是采用checkpoint机制  ,但是当前,Spark并没有引入auto checkpointing机制

4:内存管理

旧版本Spark的内存空间分成了3块独立的区域,每块区域的内存容量是按照JVM堆大小的固定比例进行分配的

1:Execution - 在执行shuffle、join、sort和aggregation时,Execution用于缓存中间数据 默认为0.2

2:Storage - Storage主要用于缓存数据块以提高性能,同时也用于连续不断地广播或发送大的任务结果 默认为0.6

3:Other - 这部分内存用于存储运行系统本身需要加载的代码与元数据 默认为0.2

无论是哪个区域的内存,只要内存的使用量达到了上限,则内存中存储的数据就会被放入到硬盘中,从而清理出足够的内存空间,

5:数据读取

Spark最重要的一个功能是它可以通过各种操作 (operations)持久化(或者缓存 )一 个集合到内存中

这个能力使后续的动作速度更快(通常快10倍以上)。 对应迭代算法和快速的交互使用来说,缓存是一个关键的工具

用户可以利用不同的存储级别存储每一个被持久化的RDD  

四、数据读取

Spark支持多种外部数据源来创建 RDD,Hadoop支持的所有格式Spark都支持

包括HDFS Amazon S3 HBase等等

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
18天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
3天前
|
存储 云计算 数据安全/隐私保护
拥抱变革:我的云计算技术感悟
【4月更文挑战第27天】 在数字化的浪潮中,我经历了从怀疑到接受,再到深度依赖云计算的过程。这篇文章将分享我个人的技术感悟,探讨如何通过学习和适应云计算技术,提升工作效率,应对快速变化的市场需求。
|
5天前
|
存储 分布式计算 Cloud Native
云计算:技术革命与代码实践
云计算:技术革命与代码实践
34 1
|
6天前
|
分布式计算 大数据 数据处理
[AIGC大数据基础] Spark 入门
[AIGC大数据基础] Spark 入门
|
7天前
|
机器学习/深度学习 安全 云计算
拥抱变革:我的云计算技术感悟之旅
【4月更文挑战第23天】 在信息技术不断演进的今天,云计算已成为推动企业数字化转型的重要力量。本文通过作者的个人视角,深入探讨了在学习和实践云计算过程中的技术感悟与成长。文章不仅涉及了云计算的基本概念、核心特性,还分享了作者在面对新技术挑战时的思考和应对策略,旨在为同行提供经验参考,共同促进技术进步与个人发展。
|
8天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
103456 0
|
20天前
|
存储 安全 网络安全
未来云计算与网络安全:技术创新与挑战
随着数字化时代的来临,云计算与网络安全成为了当今科技领域的焦点。本文从技术创新和挑战两个方面探讨了未来云计算与网络安全的发展趋势。在技术创新方面,人工智能、区块链和量子计算等新兴技术将为云计算和网络安全带来前所未有的发展机遇;而在挑战方面,隐私保护、数据泄露和网络攻击等问题也将不断考验着技术研究者和行业从业者的智慧和勇气。未来,只有不断创新,同时加强安全防护,才能实现云计算与网络安全的良性发展。
17 1
|
27天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
28天前
|
机器学习/深度学习 边缘计算 人工智能
拥抱变革:我的云计算技术感悟之旅
【4月更文挑战第2天】 在信息技术不断演进的今天,云计算已成为推动企业数字化转型的重要力量。本文以个人视角切入,分享了我在学习和实践云计算过程中的技术感悟。文章不仅总结了云计算的核心优势和面临的挑战,还探讨了如何通过持续学习和实践来提升云技术水平,以及对未来云计算技术趋势的展望。
9 1
|
28天前
|
机器学习/深度学习 分布式计算 负载均衡
拥抱变革:我的云计算技术感悟之旅
【4月更文挑战第2天】在信息技术迅猛发展的今天,云计算已成为推动企业数字化转型的重要力量。本文以个人视角切入,分享在学习和实践云计算过程中的技术感悟。内容涵盖从对云计算概念的初步理解到深入应用的实践经历,再到对未来趋势的思考,旨在为同行提供参考并共同探讨云计算领域的新机遇与挑战。
20 3

推荐镜像

更多