从事实时计算多年,熟悉jstorm/spark/flink/kafka/rocketMq, 热衷于开源,希望在这里和前辈们一起学习与分享,得到长足的进步!邮箱:hustfxj@gmail.com 我的githup地址是:https://github.com/hustfxj。欢迎和大家一起交流探讨问题。
分类: 大数据
2017-05-27 20:02:08
spark 1.5开始为standalone模式和mesos的粗粒度模式提供了executor的动态管理,具体表现为:如果executor在一段时间内空闲就会移除这个executor。
如果有新任务处于等待状态,并且等待时间超过Spark.dynamicAllocation.schedulerBacklogTimeout(默认1s),则会依次启动executor,每次启动1,2,4,8…个executor(如果有的话)。启动的间隔由spark.dynamicAllocation.sustainedSchedulerBacklogTimeout控制(默认与schedulerBacklogTimeout相同)。
executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout设置的值(默认60s ),该executor会被移除,除非有缓存数据。
spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true (必须开启)
sbin/start-shuffle-service.sh
参数名 | 默认值 | 描述 |
---|---|---|
spark.dynamicAllocation.executorIdleTimeout | 60s | executor空闲时间达到规定值,则将该executor移除 |
spark.dynamicAllocation.cachedExecutorIdleTimeout | infinity | 缓存了数据的executor默认不会被移除 |
spark.dynamicAllocation.maxExecutors | infinity | 最多使用的executor数,默认为你申请的最大executor数 |
spark.dynamicAllocation.minExecutors | 0 | 最少保留的executor数 |
spark.dynamicAllocation.schedulerBacklogTimeout | 1s | 有task等待运行时间超过该值后开始启动executor |
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout | schedulerBacklogTimeout | 动态启动executor的间隔 |
spark.dynamicAllocation.initialExecutors | spark.dynamicAllocation.minExecutors | 如果所有的executor都移除了,重新请求时启动的初始executor数 |