文章目录
1.Spark内核概念
Spark内核泛指Spark的核心运行机制,包括:
- Spark核心组件的运行机制
- Spark任务调度机制:【Spark学习笔记(二)| Spark任务调度机制】
- Spark内存管理机制:【Spark学习笔记(四)| Spark内存管理】
- Spark核心功能的运行原理等
其实对于熟悉Java的小伙伴来说,只要初步熟悉了scala的基本语法,想要完成某些功能并不难,困难的是但程序不能正常运行的时候(集群环境较难调试)或者程序运行时间较长想要进行优化时,这就需要对整个Spark背后的各种机制比较清楚了解,才能快速定位问题或者优化程序。
1.1 Spark运行流程简介
【任务的详细调度流程】:Spark学习笔记(二)| Spark任务调度机制
1.2 基础概念
Spark中的角色
Driver
在Spark作业执行时负责:
- 运行应用程序的main函数
- 创建spark的上下文
- 划分RDD并生成有向无环图(DAGScheduler)
- 与spark中的其他组进行协调,协调资源等等(SchedulerBackend)
- 生成并发送task到executor(taskScheduler)
Executor
在Spark作业执行时负责:
- 执行task任务
2.四种部署模式运行机制
2.1 Standalone模式运行机制
Standalone集群有四个重要运行机制:
- Master: 是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责
- Worker: 是一个进程,可以启动其他的进程和线程(Executor);同时用自己的内存存储RDD的某些partition
- Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上
- Executor: 是一个进程,一个Worker可以运行多个Executor,Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算。
2.1.1 Standalone-Client模式
2.1.2 Standalone-Cluster模式
2.2 YARN模式运行机制
- YARN-Client模式会导致本地机器负责Spark任务的调度,所以网卡流量会激增;YARN-Cluster模式没有流量激增的问题
- YARN-Client模式的Driver进程运行在本地,通常本地机器和YARN集群不在同一个机房,所以会性能不是很好
2.2.1 YARN-Client模式
2.2.2 YARN-Cluster模式
2.3 Client模式和Cluster模式区别
这二者的主要区别:Driver在哪里执行
- Client模式: Driver进程在提交任务的机器上执行
- Cluster模式: Driver进程在集群中的某一台机器上执行