3.Spark设计与运行原理,基本操作

发布时间:2022-06-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了3.Spark设计与运行原理,基本操作脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

3.Spark设计与运行原理,基本操作

 

1.Spark已打造出结构一体化、功能多样化的大数据生态系统,请用图文阐述Spark生态系统的组成及各组件的功能。

3.Spark设计与运行原理,基本操作

 

 

 

1、Spark Core

Spark Core 是整个Spark生态系统的核心组件,是一个分布式大数据处理框架。Spark Core提供了多种资源调度管理,通过内存计算、有向无环图(DAG)等机制保证分布式计算的快速,并引入了RDD 的抽象保证数据的高容错性,其重要特性描述如下:

  • Spark Core提供了多种运行模式,不仅可以使用自身运行模式处理任务,如本地模式、Standalone,而且可以使用第三方资源调度框架来处理任务,如YARN、MESOS等。相比较而言,第三方资源调度框架能够更细粒度管理资源。
  • Spark Core提供了有向无环图(DAG)的分布式并行计算框架,并提供内存机制来支持多次迭代计算或者数据共享,大大减少迭代计算之间读取数据的开销,这对于需要进行多次迭代的数据挖掘和分析性能有极大提升。另外在任务处理过程中移动计算而非移动数据(数据本地性),RDDPartition 可以就近读取分布式文件系统中的数据块到各个节点内存中进行计算。

  • 在Spark 中引入了RDD的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”对它们进行重建,保证了数据的高容错性。

 

2. Spark SQL

Spark SQL 允许开发人员直接处理 RDD,以及查询存储在 Hive、HBase 上的外部数据。Spark SQL 的一个重要特点是其能够统一处理关系表和 RDD,使得开发人员可以轻松地使用 SQL 命令进行外部查询,同时进行更复杂的数据分析。

 

3.Spark Streaming

Spark Streaming 是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如 Kafka、Flume、Twitter、Zero 和 TCP 套接字)进行类似 map、reduce 和 join 的复杂操作,并将结果保存到外部文件系统、数据库中,或应用到实时仪表盘上。使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。

 

4.MLlib

MLlib是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。用于机器学习和统计等场景

 

5.GraphX

GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。

2.请阐述Spark的几个主要概念及相互关系:RDD,DAG,Application, job,stage,task,Master, worker, driver,executor,Claster Manager

RDD

Resilient distributed datasets的简称,中文为弹性分布式数据集;是Spark最核心的模块和类

DAG

根据Job构建基于Stage的DAG(Directed Acyclic Graph有向无环图),并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系找出开销最小的调度方法

Application

Appliction都是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码

job

包含多个Task组成的并行计算,往往由Spark Action触发生成, 一个Application中往往会产生多个Job

stage

每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方

task

被送到某个Executor上的工作单元,但hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责

Master

节点常驻master守护进程,负责管理worker节点,我们从master节点提交应用

worker

节点常驻worker守护进程,与master节点通信,并且管理executor进程。

driver

driver进程就是应用的main()函数并且构建sparkContext对象,当我们提交了应用之后,便会启动一个对应的driver进程,driver本身会根据我们设置的参数占有一定的资源(主要指cpu core和memory

executor

executor进程宿主在worker节点上,一个worker可以有多个executor。每个executor持有一个线程池,每个线程可以执行一个task,executor执行完task以后将结果返回给driver,每个executor执行的task都属于同一个应用。此外executor还有一个功能就是为应用程序中要求缓存的 RDD 提供内存式存储,RDD 是直接缓存在executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

Claster Manager

指的是在集群上获取资源的外部服务。目前有三种类型(1)Standalone:Spark原生的资源管理,由Master负责资源的分配(2)Apache Mesos:与Hadoop mr兼容性良好的一种资源调度框架(3)Hadoop Yarn:主要是指Yarn中的ResourceManager

3.Spark设计与运行原理,基本操作

 

 

3.Spark设计与运行原理,基本操作

 

 

 

3.在PySparkShell尝试以下代码,观察执行结果,理解sc,RDD,DAG。请画出相应的RDD转换关系图。 

>>> sc

3.Spark设计与运行原理,基本操作

 

>>> lines = sc.textFile("file:///home/hadoop/VM_share/my.txt")

>>> lines

3.Spark设计与运行原理,基本操作

>>> words=lines.flatMap(lambda line:line.split())

>>> words

3.Spark设计与运行原理,基本操作

>>> wordKV=words.map(lambda word:(word,1))

>>> wordKV

3.Spark设计与运行原理,基本操作

>>> lineKV=lines.map(lambda line:(1,line))

>>> lineKV

3.Spark设计与运行原理,基本操作

>>> lines.foreach(print)

3.Spark设计与运行原理,基本操作

>>> words.foreach(print)

3.Spark设计与运行原理,基本操作

>>>wordKV.foreach(print)

3.Spark设计与运行原理,基本操作

>>>lineKV.foreach(print)

3.Spark设计与运行原理,基本操作

RDD转换关系图

3.Spark设计与运行原理,基本操作

 

脚本宝典总结

以上是脚本宝典为你收集整理的3.Spark设计与运行原理,基本操作全部内容,希望文章能够帮你解决3.Spark设计与运行原理,基本操作所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: