在数据高峰期会出现大量job处于queened状态,可以通过调高num-executors参数,以及调高程序的并法度,来解决这个问题,但大多数情况下,根本用不了这么多资源,所以启用资源的动态管理解决这个问题
方法:
配置参数
1. 不开启动态调度. --num-executors=XXX
2. 开启动态调度:
--conf spark.dynamicAllocation.initialExecutors=10 (刚开始分配的Executor个数, 可默认, 默认0)
--conf spark.dynamicAllocation.minExecutors=2 (最小的Executor个数, 可默认, 默认0)
--conf spark.dynamicAllocation.maxExecutors=10 (最多的Executor个数)
--conf spark.dynamicAllocation.enabled=true
如果出现任务等待,会动态添加executor个数,加快数据处理速度,当数据量减少,默认在1min没有新的task执行的时候,就会让出之前的executor