創建與分配Executor的方式根據各種資源調度方式的不同而有差異,但拿到Executor后每種資源調度方式下的Executor的運作都一樣,並由Executor完成最終的計算
Task在Executor中執行時涉及到依賴環境的創建和分發、任務執行、任務結果的處理、Driver端的處理(書中有詳細介紹,但和前面Scheduler感覺有重復部分)
Executor的工作參數設置:
spark.executor.memory:
配置Executor最多使用的內存大小,原理是設置Executor的JVM Heap尺寸實現。由於內存資源有限,此參數設置過大會導致部分任務分配不到資源,設置過小會產生頻繁的垃圾回收和讀寫磁盤
每個Executor可以支持的Task數量取決於持有的CPU core的數量
准確評估數據集,要看在BlockManager的日志中的RDD cache,每個cache分區大小
內存比較緊張時,可以合理規划分區任務的數據規模,如增加分區數可增加任務數,減小每個任務的處理量
日志相關:
spark.eventLog.enabled設置為true打開日志保存到本地,方便調試和追蹤問題,但日志需要定時清理,清理策略可以設置:

spark.executor.heartbeatInterval:
Executor和Driver的心跳間隔,就是匯報運行和統計信息的間隔