spark学习记录

本文详细介绍了Spark,一种基于内存的快速大数据处理引擎,与MapReduce的区别,包括处理数据模式、使用难度、成本、兼容性、性能和数据处理能力。此外,还探讨了结构化与非结构化数据,Spark的运行模式(如Standalone、YARN和Mesos),以及核心环节Shuffle过程。
摘要由CSDN通过智能技术生成

目录

1.什么是spark

spark特点

2.MapReduce和spark的区别?

1.处理数据模式不同

2 使用难度

3.成本

4.兼容性

5.数据处理

6.容错

7.安全性

8.处理速度

3.结构化数据和非结构化数据

结构化数据

非结构数据

结构化数据和非结构化数据区别

spark三种模式:

standalone  yarn mesos

3.MapReduce核心环节-Shuffle过程(洗牌)

什么是shuffle

2shuffle的中间文件

spark的运用场景

spark的运行架构和原理

spark基本运行流程

spark运行架构的特点

Spark Stage划分依据

spark中task的定义


1.什么是spark

spark特点

    Spark是一种快速、通用、可扩展的大数据分析引擎

    Spark的最大特点:基于内存

    Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

    Spark的特点:快、易用、通用、兼容性

2.MapReduce和spark的区别?

1.处理数据模式不同

Spark 在内存中处理数据,而 Hadoop MapReduce 是通过 map 和 reduce 操作在磁盘中处理数据。因此从这个角度上讲 Spark 的性能应该是超过 Hadoop MapReduce 的。

  当数据大小适于读入内存,尤其是在专用集群上时,Spark 表现更好;Hadoop MapReduce 适用于那些数据不能全部读入内存的情况,同时它还可以与其它服务同时运行。

2 使用难度

  Spark 更易于编程,同时也包含交互式模式;Hadoop MapReduce 不易编程但是现有的很多工具使其更易于使用。

3.成本

 根据基准要求, Spark 更加合算, 尽管人工成本会很高。依靠着更多熟练的技术人员和 Hadoop 即服务的供给, Hadoop MapReduce 可能更便宜。

4.兼容性

     Spark 和 Hadoop MapReduce 具有相同的数据类型和数据源的兼容性。

5.数据处理

 除了平常的数据处理,Spark 可以做的远不止这点:它还可以处理图和利用现有的机器学习库。

Hadoop MapReduce 在批处理上表现卓越

6.容错

 和 MapReduce 一样, Spark 会重试每个任务并进行预测执行。然而,MapReduce 是依赖于硬盘驱动器的,所以如果一项处理中途失败,它可以从失败处继续执行,而 Spark 则必须从头开始执行,所以 MapReduce 这样节省了时间。

7.安全性

  Spark 的安全机制仍处在发展期。 Hadoop MapReduce 拥有更多安全控制机制和项目。

8.处理速度

比如实时的市场活动,在线产品推荐等需要对流数据进行分析场景就要使用Spark。

  Spark 的安全机制仍处在发展期。 Hadoop MapReduce 拥有更多安全控制机制和项目。

3.结构化数据和非结构化数据

结构化数据

结构化数据也称为行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。

     结构化数据也被成为定量数据,是能够用数据或统一的结构加以表示的信息,如数字、符号。在项目中,保存和管理这些的数据一般为关系数据库,当使用结构化查询语言或SQL时,计算机程序很容易搜索这些术语。结构化数据具有的明确的关系使得这些数据运用起来十分方便,不过在商业上的可挖掘价值方面就比较差。

典型的结构化数据包括:信用卡号码、日期、财务金额、电话号码、地址、产品名称等。

非结构数据

(2)非结构化数据本质上是结构化数据之外的一切数据。它不符合任何预定义的模型,因此它存储在非关系数据库中,并使用NoSQL进行查询。它可能是文本的或非文本的,也可能是人为的或机器生成的。简单的说,非结构化数据就是字段可变的的数据。

非结构化数据不是那么容易组织或格式化的。收集,处理和分析非结构化数据也是一项重大挑战。这产生了一些问题,因为非结构化数据构成了网络上绝大多数可用数据,并且它每年都在增长。随着更多信息在网络上可用,并且大部分信息都是非结构化的,找到使用它的方法已成为许多企业的重要战略。更传统的数据分析工具和方法还不足以完成工作。

典型的人为生成的非结构化数据包括:

文本文件:文字处理、电子表格、演示文稿、电子邮件、日志。

电子邮件:电子邮件由于其元数据而具有一些内部结构,我们有时将其称为半结构化。但是,消息字段是非结构化的,传统的分析工具无法解析它。

社交媒体:来自新浪微博、微信、QQ、Facebook,Twitter,LinkedIn等平台的数据。

网站: YouTube,Instagram,照片共享网站。

移动数据:短信、位置等。

典型的机器生成的非结构化数据包括:

卫星图像:天气数据、地形、军事活动。

科学数据:石油和天然气勘探、空间勘探、地震图像、大气数据。

数字监控:监控照片和视频。

结构化数据和非结构化数据区别

从上文的解释中,结构化和非结构化数据之间的差异逐渐变得清晰。除了存储在关系数据库和存储非关系数据库之外的明显区别之外,最大的区别在于分析结构化数据与非结构化数据的便利性。针对结构化数据存在成熟的分析工具,但用于挖掘非结构化数据的分析工具正处于萌芽和发展阶段。

并且非结构化数据要比结构化数据多得多。非结构化数据占企业数据的80%以上,并且以每年55%~65%的速度增长。如果没有工具来分析这些海量数据,企业数据的巨大价值都将无法发挥。随着储存成本的下降,以及新兴技术的发展,行业对非结构化数据的重视程度得到提高。比如物联网、工业4.0、视频直播产生了更多的非结构化数据,而人工智能、机器学习、语义分析、图像识别等技术方向则更需要大量的非结构化数据来开展工作。

spark三种模式:

standalone  yarn mesos

standalone模式是一个独立模式,是单节点模式

spark核心数据集rdd

3.MapReduce核心环节-Shuffle过程(洗牌)

什么是shuffle

Shuffle 的本意是扑克的洗牌,打乱次序,在分布式计算场景中,它被引申为集群范围内跨节点、跨进程的数据分发。

所谓Shuffle,是指对Map输出结果进行分区、排序、合并等处理并交给Reduce的过程。因此,Shuffle过程分为Map端的操作和Reduce端的操作,主要执行以下操作。

2shuffle的中间文件

如果用一句来概括的话,那就是,Map 阶段与 Reduce 阶段,通过生产与消费 Shuffle 中间文件的方式,来完成集群范围内的数据交换。换句话说,Map 阶段生产 Shuffle 中间文件,Reduce 阶段消费 Shuffle 中间文件,二者以中间文件为媒介,完成数据交换。
 

spark的运用场景

复杂的批量数据处理

基于历史数据的交互式查询

基于实时数据流的数据处理

基于历史数据的数据挖掘

图结构数据的处理

spark的运行架构和原理

spark基本运行流程

1.Drive创建一个sparkcontext进行资源的申请,任务的分配和监控

2.资源管理器为execulor分配资源,并启动executor进程

3. SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理。

4.Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。

5.Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

                       

① RDD:是弹性分布式数据集的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

② DAG:是有向无环图的英文缩写,反映RDD之间的依赖关系。

③ Executor:是运行在工作节点上的一个进程,负责运行任务,并为应用程序存储数据。

④ 应用:用户编写的Spark应用程序。

⑤ 任务:运行在Executor上的工作单元。

⑥ 作业:一个作业包含多个RDD及作用于相应RDD上的各种操作。

⑦ 阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”

spark运行架构的特点

spark的运行架构包括集群资源管理器,运行作业任务的工作节点每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)其中,集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。

与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:一是利用多线程来执行具体的任务(Hadoop MapReduce采用的是进程模型),减少任务的启动开销;二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,当需要多轮迭代计算时,可以将中间结果存储到这个存储模块里,下次需要时,就可以直接读该存储模块里的数据,而不需要读写到HDFS等文件系统里,因而有效减少了IO开销;或者在交互式查询场景下,预先将表缓存到该存储系统上,从而可以提高读写IO性能

每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。

Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。

Task采用数据本地性和推测执行等优化机制。

Spark Stage划分依据

首先,需要明确的关键点是Spark Stage划分依据主要是基于Shuffle。宽依赖和窄依赖

spark中task的定义

一个供Executor执行的可执行的逻辑单元,

一个Stage内只会存在同一种TaskTask数量与StagePartition数量保持一致(运行的Task数量可能会大于Partition数量)

每个作业被划分为更小的任务集,称为相互依赖的阶段
Stage个数:1+shuffle依赖的数量(resultStage+shuffleMapStage反向推导,每进行一次宽依赖(也就是每进行一个shuffle)前面的RDD就被分到一个Stage里。

Eg:下面进行两个宽依赖(两次shuffle)

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值