sparkEnv是spark环境变量
1、可以从其中get 缓存
2、为master workder driver 管理和保存运行时对象。
3、excutorid ,excutor 一种为driver类型,一种具体处理task 内部有线程池的excutor
4、actorSystem ,如果运行在driver 则为spark driver,如果在excutor上在则为spark excutor
5、serializer 序列化器
6、cacheManager
7、mapOutputTracker,它负责保存shuffle map output输出位置信息。
在一个stage中产出的数据通过shuffle write写入到localFileSystem中,具体存储在什么位置,就是由mapOutputTracker跟踪记录的。
master slave 模式,driver 上 则为 mapOutputTrackerMaster,work上则为mapOutputTrackerWorker,worker汇总master获取信息。
8、shuffleManager
hash
sort
可插拔,支持扩展
9、broadcastManager 广播,
例如
join的时候,小的表就可以广播到大的表所在的机器上。
也可以把全局信息广播出去。
spark将任务广播到具体的excutor;hadoop的MR,每次将配置信息登,每个任务都要重新加载。
10、BlockTransferService
读取shuffle数据,有数据大小区别,不同的数据量使用不同的传输方式。Netty方式还是NIO的方式。
11、BlockManager
管理内存和磁盘等。。。管理storage模块本身。
12、securityManager 安全模块
13、HttpFileServer
提供http服务的server,用于excutor下载相关执行jar包的依赖。
14、metricsSystem
用于收集统计信息。
包括excutor的状态,以及任务的状态。
用于做监控工具很管用
15、shuffleMemoryManager
本身是用于管理shuffle执行过程中内存的。
申请和分配shuffle使用的内存,
假设N个线程,每个线程会申请到 1/(2N),最多可以申请到1/N的内存
N是动态变化,线程的数量会变化。
16、 sparkEnv是随着sparkContext创建的。