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转换关系图

浙公网安备 33010602011771号