-
一、SparkCore
-
Spark是一个计算框架,可以基于内存处理数据
-
Spark & MR区别
- 1.Spark可以基于内存处理数据,MR基于磁盘处理数据
- 2.Spark有DAG有向无环图
-
Spark技术栈
- Spark
- Core, SQL,Streaming
- Hadoop
- MR,Hive, Storm ,HDFS,Yarn
- Spark
-
Spark 运行模式
- Local
- 多用于本地,IDEA,Eclipse 代码测试运行
- Standalone
- Spark自带的资源调度框架,支持分布式搭建
- Yarn
- Hadoop 生态圈中资源调度框架,Spark可以基于Yarn运行
- Mesos
- 资源调度框架
- Local
-
Spark 核心RDD
-
RDD: 弹性分布式数据集
-
RDD五大特性
- 1.RDD由一系列partition组成
- 2.算子(函数)作用在partition上
- 3.RDD之间有依赖关系
- 4.分区器是作用在K,V格式的RDD上
- 5.partition对外提供最佳的计算位置,利于数据处理的本地化
-
问题
-
1.sc.textFile(…)读取HDFS文件的方法,底层调用的就是MR读取HDFS文件的方法,首先split,每个split对应HDFS中一个block,这里的split也对应RDD中的一个partition
2.什么是K,V格式的RDD?
- RDD中的数据如果是一个个的tuple2 ,当前这个RDD就是K,V格式的RDD
3.哪里体现RDD的分布式?
- RDD中的partition是分布在多个节点上的
4.哪里体现RDD的弹性?
- 1.RDD之间有依赖关系
- 2.RDD中的分区数可多可少
-
-
-
Spark代码执行流程
- 1.val conf = new SparkConf() ; conf.setMaster… ;conf.setAppName()
- 2.val sc = new SparkContext(conf)
- 3.val rdd = sc.textFile…
- 4.对RDD使用RDD的Transformation类算子进行转换
- 5.对RDD要使用Action类算子触发Transformation类算子执行
- 6.sc.stop()
-
Spark 算子
-
Transformations
- 又叫转换算子,懒执行,需要Action算子触发执行
- flatMap
- map
- filter
- reduceByKey
- sortBy
- sortByKey
- sample
-
Action
- action叫做行动算子,触发Transformations类算子执行,一个Spark Application中有一个Action算子,就有一个job
- foreach
- count
- collect()
- take
- first
- reduce
-
持久化算子
-
cache
- 默认将数据持久化到内存中
- cache() = persist() = persist(StorageLevel.MEMORY_ONLY)
-
persist
- 可以手动指定持久化级别
- 常用的持久化级别
- MEMORY_ONLY
- MEMORY_ONLY_SER
- MEMORY_AND_DISK
- MEMORY_AND_DISK_SER
- 避免使用DISK_ONLY 和 “_2” 级别
-
checkpoint
- 当job的lineage非常长,计算非常复杂时,可以对RDD进行checkpoint,将RDD的数据持久化到磁盘
- checkpoint & persist(DISK_ONLY)
- 1.persist 将数据持久化起来之后,当application执行完成之后,持久化的数据会被清空
- 2.checkpoint将数据持久化到磁盘,数据由外部的存储系统管理,当application执行完成之后,数据不会被清空
- 3.checkpoint常用作保存状态,在SparkStreaming有更好体现
- checkpoint懒执行,持久化单位也是partition
-
注意
-
cache & persist
-
1.cache() persist() 都是懒执行,需要action算子触发执行
2.对RDD进行持久化时,可以直接cache或者persist之后赋值给一个变量,下次直接使用这个变量就是使用的持久化的数据,当然,这里也可以直接对RDD进行cache 或者persist,下次直接使用RDD就可以
3.如果对RDD进行持久化之后,赋值给了一个变量,那么不要在后面紧跟action算子
-
-
checkpoint执行流程
- 1.当job执行完成之后,Spark会从后往前回溯,找到checkpointRDD进行标记
- 2.回溯完成之后,Spark会启动一个job,对CheckpointRDD进行计算,将计算的结果保存在磁盘上
- 优化:对哪个RDD进行checkpoint之前最好先cache()下
-
-
-
-
Spark集群搭建
- Standalone集群
- 客户端搭建
- Yarn
-
基于Standalone提交Spark Pi任务
- ./spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi jar … 参数
-
Spark任务提交
- Standalone
- Yarn
-
-
二、SparkSQL
-
三、SparkStreaming
Spark总结
最新推荐文章于 2023-11-12 23:50:00 发布