天天看點

《深入了解Spark:核心思想與源碼分析》——3.10節建立和啟動ExecutorAllocationManager

本節書摘來自華章社群《深入了解spark:核心思想與源碼分析》一書中的第3章,第3.10節建立和啟動executorallocationmanager,作者耿嘉安,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

3.10 建立和啟動executorallocationmanager

預設情況下不會建立executorallocationmanager,可以修改屬性spark.dynamicallocation.enabled為true來建立。executorallocationmanager可以設定動态配置設定最小executor數量、動态配置設定最大executor數量、每個executor可以運作的task數量等配置資訊,并對配置資訊進行校驗。start方法将executorallocationlistener加入listenerbus中,executorallocationlistener通過監聽listenerbus裡的事件,動态添加、删除executor。并且通過thread不斷添加executor,周遊executor,将逾時的executor殺掉并移除。executorallocationlistener的實作與其他sparklistener類似,不再贅述。executorallocationmanager的關鍵代碼見代碼清單3-47。

代碼清單3-47 executorallocationmanager的關鍵代碼

根據3.4.1節的内容,我們知道listenerbus内置了線程listenerthread,此線程不斷從eventqueue中拉出事件對象,調用監聽器的監聽方法。要啟動此線程,需要調用listenerbus的start方法,代碼如下。

繼續閱讀