实验内容与要求
1.Spark基本知识总结
2.Spark的操作实践:
2.1 Spark的安装部署
2.2 Scala语言编程实践
2.3 基于Spark shell的WordCount实践
2.4 基于IDEA+Maven的Spark编程实践
2.5 pySpark实践
1. Spark基本知识的总结
- Spark借鉴了MapReduce计算框架的优点,解决了MapReduce存在的局限性,支持多种语言编程,支持多种部署方式,并能够很好地融入Hadoop中,完成更多的功能
- Spark的运行架构:
- Driver:是运行application的main函数,可以创建和关闭Sparkcontex
- Sparkcontex:驱动应用,负责与ClusterManager通信,进行资源申请、任务分配等
- ClusterManager:负责申请和管理资源
- Worker:可以运行application的节点,负责执行计算任务
- Executor:某个application运行在worker节点上的一个进程,负责运行组成 Spark
应用的任务,为RDD提供内存式存储
-
Spark的运行过程: 启动SparkContext,SparkContext向资源管理器申请运行资源,Executor向SparkContext申请Task,SparkContext将应用程序分发给Executor,SparkContext构建DAG图(有向无环图),分解并将Task发送给Executor运行
-
RDD:弹性分布式数据集
- 是spark中最基本的数据处理模型,是对spark中一个只读数据集合的逻辑描述,但不包括数据集合的具体数据,且只能通过来自HDFS、Hbase等数据源的数据进行创建或对其他RDD进行计算得到
- 主要属性:数据的分区列表、计算每个分区的函数、与其他RDD之间的依赖、优先位置列表、分区策略等
- 两类操作:
转换操作:由一个RDD经过操作得到一个新的RDD,并记录相关转换信息,惰性(不立即执行),当碰到动作操作时,才会一起执行所有转换操作,因此可以减少保存中间结果产生的I/O开销