我在纱线簇上使用火花流(火花版本2.2),并试图为我的应用程序启用动态纤芯分配。
执行器的数量按要求增加,但是一旦分配了执行器,即使流量减少,也不会按比例减小执行器,即一旦分配的执行器也不会释放。我还启用了纱线的外部混洗服务,如下所示: https://spark.apache.org/docs/latest/running-on-yarn.html#configuring-the-external-shuffle-service
我在spark-submit命令中设置的配置是:
--conf spark.dynamicAllocation.enabled=false \
--conf spark.streaming.dynamicAllocation.enabled=true \
--conf spark.streaming.dynamicAllocation.scalingInterval=30 \
--conf spark.shuffle.service.enabled=true \
--conf spark.streaming.dynamicAllocation.initialExecutors=15 \
--conf spark.streaming.dynamicAllocation.minExecutors=10 \
--conf spark.streaming.dynamicAllocation.maxExecutors=30 \
--conf spark.streaming.dynamicAllocation.executorIdleTimeout=60s \
--conf spark.streaming.dynamicAllocation.cachedExecutorIdleTimeout=60s \
如果我缺少任何特定的配置,有人可以帮忙吗?
谢谢
答案 0 :(得分:0)
作为JIRA的一部分添加的文档对我有帮助:https://issues.apache.org/jira/browse/SPARK-12133。
要注意的关键是,当比率(批处理时间/批处理持续时间)小于0.5(默认值)时,执行器的数量将按比例缩小,这实际上意味着执行器空闲了一半的时间。可用于更改此默认值的配置为“ spark.streaming.dynamicAllocation.scalingDownRatio”