Spark集群运行架构
Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,通过下图深入了解Spark运行基本流程。
安装Scala2.12.15
- 从Scala官网下载Scala2.12.15 - Scala 2.12.15 | The Scala Programming Language
-
在master虚拟机上创建单词文件 -
words.txt
-
新建Maven项目
-
新建Maven项目,注意,要基于JDK8
-
Spark配置对象
SparkConf对象的setMaster()方法用于设置Spark应用程序提交的URL地址。若是Standalone集群模式,则指Master节点的访问地址;若是本地(单机)模式,则需要将地址改为local或local[N]或local[*],分别指使用1个、N个和多个CPU核心数。本地模式可以直接在IDE中运行程序,不需要Spark集群 -
RDD示例
将数据集(hello, world, scala, spark, love, spark, happy)存储在三个节点上,节点一存储(hello, world),节点二存储(scala, spark, love),节点三存储(spark, happy),这样对三个节点的数据可以并行计算,并且三个节点的数据共同组成了一个RDD
- RDD被创建后是只读的,不允许修改。Spark提供了丰富的用于操作RDD的方法,这些方法被称为算子。一个创建完成的RDD只支持两种算子:
转换(Transformation)
算子和行动(Action)
算子。
- RDD处理过程中的“转换”操作主要用于根据已有RDD创建新的RDD,每一次通过Transformation算子计算后都会返回一个新RDD,供给下一个转换算子使用。
- 常用转换算子操作的API
-
过滤算子功能
filter(func)
:通过函数func
对源RDD的每个元素进行过滤,并返回一个新RDD,一般而言,新RDD元素个数会少于原RDD。
组合分组算子功能
cogroup()算子对两个(key, value)形式的RDD根据key进行组合,相当于根据key进行并集操作。例如,rdd1的元素以(k, v)表示,rdd2的元素以(k, w)表示,执行rdd1.cogroup(rdd2)生成的结果形式为(k, (Iterable<v>, Iterable<w>))。
掌握行动算子
- Spark中的转化算子并不会马上进行运算,而是在遇到行动算子时才会执行相应的语句,触发Spark的任务调度。
按键计数算子功能
countByKey()
算子按键统计RDD键值出现的次数,返回由键值和次数构成的映射。