大数据课程——课后练习3
1.请简述Spark的主要组件及其主要功能。
-
Spark Core:该组件是Spark的核心模块,主要包含两个功能:一是负责任务调度、内存管理、错误恢复与存储系统交互等;二是其包含了对弹性分布式数据集的API定义。它提供了创建和操作这些集合的多个API。
-
Spark SQL:该组件是一个用于结构化数据处理的Spark工具包,提供了面向结构化数据的SQL查询接口,使用户可以通过编写SQL或基于Apache Hive的HiveQL来方便地处理数据。也可以查询Hive中的数据,相当于数据仓库的查询引擎,提供了很强大的计算速度。它还支持开发者将SQL语句融入到Spark应用程序的开发过程中,使得用户可以用SQL语句进行查询和复杂的数据分析。
-
Spark Steaming:该组件是Spark提供的对实时数据进行流式计算的组件,它将流式的计算分解成一系列短小的批处理作业,支持对实时数据流进行可伸缩、高吞吐量、容错的流处理。它还提供了用来操作数据流的API,并且与Spark Core当中的RDD API高度对应,帮助开发人员高效地处理数据流中的数据。且支持与Spark Core同级别的容错性、吞吐量及可伸缩性。Spark Streaming通过将数据流中的数据按指定时间片累计为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。
-
MLib:该组件是Spark的机器学习库。它的目标是使得机器学习具有可拓展性和易用性。其中提供了分类、回归、聚类、协同过滤等常用机器学习算法,以及一系列更加底层的机器学习原语。
-
GraphX:该组件是Spark中图形和图形并行计算的一个新㢟,可以用其创建一个顶点和边都包含任意属性的有向多重图。此外,该组件还包含越来越多的图算法和构建起,以此来简化图形分析任务。
2.Spark的部署模式有哪几种?
一共有三种部署模式:一种是本地(单机)模式;第二种是Yarn集群模式;第三种是Spark自带的Standalone模式。
- 本地模式:是只运行在一台计算机上,就称为本地模式。
- Yarn集群模式:Spark On Yarn模式遵循YARN的官方规范,YARN只负责资源的管理和调度,运行哪种应用程序由用户自己实现,因此可能在YARN上同时运行MapReduce程序和Spark程序,YARN很好地对每一个程序实现了资源的隔离。这使得Spark与MapReduce可以运行于同一个集群中,共享集群存储资源与计算资源。
- Standalone模式:该模式采用经典的Master/Slave架构,资源调度由Spark自己实现。
3.什么是RDD?创建RDD主要由哪几种方式?请举例说明。
RDD是Spark提供的一种对数据的核心抽象,称为弹性分布式数据集(Resilient Distributed Dataset,RDD)。每个RDD被分为多个分区,这些分区运行在集群中的不同节点上。也就是说,RDD是跨集群节点分区的元素集合,并且这些元素可以并行操作。
创建RDD主要有两种方式,一是从文件系统中加载数据创建RDD,二是通过对象集合(数组)创建RDD。
1、从对象集合创建RDD:将一个List集合转化为RDD:
> val rdd = sc.parallelize(List(1,2