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

1.spark Core

Spark Core是一种大数据分布式框架,也是Spark的核心组件。

2.Spark SQL

Spark SQL是构建在Spark和Hive基础之上的数据仓库。可以让用户使用写SQL的方式进行数据计算,负责将SQL编译成可扩展的MapReduce作业。

3.Spark Streaming

SparkStreaming是一个对实时数据流进行流式计算系统,它扩展了Spark处理大规模流式数据的能力。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。

4.Mlib

Mlib是Spark实现一些常见的机器学习算法和实用程序。

5.GraphX

GraphX是Spark中面向图和图并行计算提供的框架和算法库。

6.Local,Standalone,Yarn,Mesos

Local,Standalone,Yarn,Mesos是Spark的四种部署模式。

7.Tachyon

Tachyon是一个分布式内存文件系统。

2.请详细阐述Spark的几个主要概念及相互关系:

1.Master和Worker

Master是Spark特有资源调度系统的 Leader,掌管着整个集群的资源信息;

Worker是Spark特有资源调度系统的Slaver;一个Spark独立集群需要启动一个Master和多个Worker,每个Worker掌管所在节点的资源信息

Master负责监听Worker,看集群中的 Worker 是否正常工作;Worker则会定时发送心跳给 Master

 2.RDD和DAG

RDD(弹性分布式数据集)是 Spark 对数据的核心抽象,其实就是分布式的元素集合。

DAG反映RDD之间的依赖关系

3.Application、Job、Stage、Task

Application

用户编写的Spark应用程序。

Job

Job是用户程序一个完整的处理流程。

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

Stage

是作业的基本调度单位。

Task

分发到Executor上的工作任务。

4.Driver、Executor、Claster Manager

Driver

进程应用。

Executor

Executors其实是一个独立的JVM进程,在每个工作节点上会起一个,主要用来执行task,一个executor内,可以同时并行的执行多个task。

Claster Manager

Claster Manager主要负责整个程序的资源调度。

5.DAGScheduler、TaskScheduler

DAGScheduler

面向调度阶段的任务调度器,负责接收spark应用提交的作业,根据RDD的依赖关系划分调度阶段,并提交调度阶段给TaskScheduler。

TaskScheduler

面向任务的调度器,它接受DAGScheduler提交过来的调度阶段,然后把任务分发到work节点运行,由Worker节点的Executor来运行该任务。

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

sc
lines = sc.textFile("file:///home/sjx/下载/EN/test.txt")
lines
words=lines.flatMap(lambda line:line.split())
words
wordKV=words.map(lambda word:(word,1))
wordKV
wc=wordKV.reduceByKey(lambda a,b:a+b)
wc
lines.foreach(print)
words.foreach(print)
wordKV.foreach(print)
wc.foreach(print)

 

 

 

 

 

 

 

 

 

相应的RDD转换关系图

 

 

 

 

 

 

posted on 2022-03-13 20:10  诙谐的天  阅读(65)  评论(0)    收藏  举报