作者:莫怀嘉805 | 来源:互联网 | 2023-09-15 14:27
Spark八股文Spark解决什么问题Spark为什么会有自己的资源调度器Spark运行模式Spark常用端口号简述Spark的架构与作业提交流程Spark任务使用什么进行提交
Spark 八股文
- Spark解决什么问题
- Spark为什么会有自己的资源调度器
- Spark运行模式
- Spark 常用端口号
- 简述Spark的架构与作业提交流程
- Spark任务使用什么进行提交,JavaEE界面还是脚本
- Spark提交作业参数
- RDD五大属性
- Spark 的 transformation 算子
- Spark的action算子
- map和mapPartitions区别
- Repartition和Coalesce区别
Spark解决什么问题
Hadoop主要解决 : 海量数据的存储和海量数据的分析计算
Spark主要解决 : 海量数据的分析计算
Spark为什么会有自己的资源调度器
Hadoop 的 Yarn 框架比 Spark 框架诞生的晚,所以 Spark 自己也设计了一套资源调度框架
Spark运行模式
Local:运行在一台机器上。 测试用
Standalone:是Spark自身的一个调度系统。 对集群性能要求非常高时用。国内很少使用
Yarn:采用Hadoop的资源调度器。 国内大量使用
Mesos:国内很少使用
Spark 常用端口号
4040 spark-shell 任务端口
7077 内部通讯端口。 类比 Hadoop 的 8020/9000
8080 查看任务执行情况端口。 类比Hadoop的8088
18080 历史服务器。类比 Hadoop 的19888
由于Spark 只负责计算,所有并没有 Hadoop 中存储数据的端口 50070
简述Spark的架构与作业提交流程
![在这里插入图片描述](https://img3.php1.cn/3cdc5/63cc/696/80ca40b4af4c6739.png)
Spark任务使用什么进行提交,JavaEE界面还是脚本
Shell 脚本
Spark提交作业参数
executor-cores : 每个 executor 使用的内核数,默认为 1 ,官方建议2 - 5个
num-executors : 启动 executors 的数量,默认为 2
executor-memory : executor 内存大小,默认 1 G
driver-cores : driver 使用内核数,默认为 1
driver-memory : driver 内存大小,默认 512 M
例子 :
spark-submit \
--master local[5] \
--driver-cores 2 \
--driver-memory 8g \
--executor-cores 4 \
--num-executors 10 \
--executor-memory 8g \
--class PackageName.ClassName XXXX.jar \
--name "Spark Job Name" \
InputPath \
OutputPath
RDD五大属性
Spark 的 transformation 算子
单Value
- map
- mapPartitions
- mapPartitionsWithIndex
- flatMap
- glom
- groupBy
- filter
- sample
- distinct
- coalesce
- repartition
- sortBy
- pipe
双vlaue
- intersection
- union
- subtract
- zip
Key-Value
- partitionBy
- reduceByKey
- groupByKey
- aggregateByKey
- foldByKey
- combineByKey
- sortByKey
- mapValues
- join
- cogroup
Spark的action算子
- reduce
- collect
- count
- first
- take
- takeOrdered
- aggregate
- fold
- countByKey
- save
- foreach
map和mapPartitions区别
map:每次处理一条数据
mapPartitions:每次处理一个分区数据
Repartition和Coalesce区别