9.2.2、Spark Core__RDD弹性分布式数据,RDD的5个特征,stage,task,分区等,standalone运行模式,yarn的运行模式

1、spark核心编程(3种数据结构)

(1)RDD:弹性分布式数据集
(2)累加器:分布式共享只写变量
(3)广播变量:分布式共享只读变量

2、RDD概述(不存储数据)

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型
代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合

3、RDD的特征(5种)

(1)RDD是由一系列分区组成的(默认一个分区对应一个切片,一个block)

spark并没有读取文件,底层还是利用mapreduce方式(切片方式,格式化数据方式)读取文件

(2)方法(算子)是作用在每一个分区上(每个分区对应一个task(并行度的分区)) (3)RDD之间是有一系列的依赖关系的
依赖关系:宽依赖(有shuffle,),窄依赖(没有shuffle) 可以按照宽依赖切分Stage
(4)分区类(ByKey类)算子只能作用在k-v格式的RDD上
(5)spark给每个task提供最佳的计算位置,移动计算,不移动数据(数据本地化)

在这里插入图片描述

4、Stage等概念

Stage:是一种并行计算的task(可以看作任务map或reduce任务)(stage数量等于shuffle数量+1)
task:在map(reduce)阶段并行的个数(源码:task数量等于当前阶段中最后一个RDD的分区数量)
算子:RDD的方法称之为算子(操作)
分组会产生shuffle,shuffle会落地产生磁盘文件,如果要进行网络传输那么就会有一个序列化的过程,在数据落到磁盘的时候会进行压缩(默认hash分区)

5、spark在standalone运行模式

(1)standalone client模式 日志在本地输出,一般用于上线前测试(bin/下执行)

需要进入到spark-examples_2.11-2.4.5.jar 包所在的目录下执行

cd /usr/local/soft/spark-2.4.5/examples/jars

spark-submit 
--class org.apache.spark.examples.SparkPi 	//class表示需要执行程序的主类
--master spark://master:7077 		//独立部署模式,连接到 Spark 集群

--executor-memory 512m 			//指定每个 executor 可用内存为 512M
--total-executor-cores 1 			//指定所有executor使用的cpu核数为 2 个

spark-examples_2.11-2.4.5.jar 100		//运行类所在的jar包 参数

(2)standalone cluster模式 上线使用,不会再本地打印日志

spark-submit 
--class org.apache.spark.examples.SparkPi 
--master spark://master:7077 
--driver-memory 512m 
--deploy-mode cluster 
--supervise 
--executor-memory 512M 
--total-executor-cores 1 
spark-examples_2.11-2.4.5.jar 100

6、spark在yarn上运行的模式

(1)spark on yarn client模式 日志在本地输出,一般用于上线前测试

spark-submit 
--class org.apache.spark.examples.SparkPi 
--master yarn-client 
--executor-memory 512M 	//申请一次的内存大小
--num-executors 2 		//申请2次
spark-examples_2.11-2.4.5.jar 100

粗粒度资源调度:一次性将需要的资源全部申请(不管用不用)
细粒度资源调度(mapreduce):跑一个申请一个,跑完释放

(2)spark on yarn cluster模式 上线使用,不会在本地打印日志 减少io

spark-submit 
--class org.apache.spark.examples.SparkPi 
--master yarn-cluster 
--executor-memory 512m 
--num-executors 2 
--executor-cores 1 
spark-examples_2.11-2.4.5.jar 100

获取yarn程序执行日志 执行成功之后才能获取到

yarn logs -applicationId application_1560967444524_0003

猜你喜欢

转载自blog.csdn.net/nerer/article/details/121458924