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創建的。
?