shuffler 文件寻址与内存管理
shuffle 组件
MapOutputTracker 磁盘管理小文件
1,主 MapOutputTrackerMaster(存在于Driver)
2,从 MapOutputTrackerWorker(存在于Executor)
BlockManager 块管理者
1,BlockManagerMaster(存在于Driver)
1),DiskStore 管理磁盘数据
2),MemoryStore 管理内存数据
3),ConnectionManager 负责连接其他 BlockManager
4),BlockTransferService 负责拉取数据
2,BlockManagerWorker(存在于Executor)
1)也包含上述四项
spark 内存管理:
1,spark 1.6之前使用静态内存管理,之后使用统一内存管理
2,指定内存两种方式:
1),在spark-submit 之中使用 --conf来指定
2),在代码之中进行指定
3,在shuffle 聚合内存之中,第一次拉取数据能放的下,以后拉取内存不足,就会自动写到磁盘之中(有延迟),如果第一次拉取数据不成功,会有OOM问题
4,spark.shuffle.memoryFraction=False 表示使用的是统一内存机制