以上图中有四个机器节点,Driver和worker是启动在节点上的进程,运行在JvM中的进程。
. Driver与集群节点之间有频繁的通信。
.Driver负责任务( tasks)的分发和结果的回收即任务的调度。如果task的计算结果非常大就不要回收了。 会造成oom。
worker是standalone资源调度框架里面资源管理的从节点。也是jvM进程。
Master是standalone资源调度框架里面资源管理的主节点。也是jvM进程。
4.3.Spark代码流程
1.创建sparkconf对象
说白了就是spark任务的相关配置
。可以设置Application name
。 可以设置运行模式及资源需求
2.创建sparkcontext对象
3.基于sparkcontext即上下文环境对象创建一个RDD,对RDD进行处理。
4.应用程序中要有Action类算子来触发Transformation类算子执行。
5.关闭spark上下文对象。
4.4.1.Transformations转换算子
4.4.1.1.概念
Transformations类算子是一类算子(本质就是函数)叫做转换算子,如map , flatMap , reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。
4.4.1.2.常见Transformation类算子
. filter:过滤符合条件的记录数,true保留,false过滤掉。
map:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。特点:输入一条,输出一条数据。
· flatMap:先map后flat。与map类似,每个输入项可以映射为0到多个输出项。
sample随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样。
reduceByKey将相同的Key根据相应的逻辑进行处理。
sortByKey / sortBy作用在K,v格式的RDD上,对key进行升序或者降序排序。