我必须在我的spark应用程序中将执行程序的数量设置为20。在查看官方文档时,我很困惑,这是一个更好的设置
我启用了以下配置
我将在哪种用例中使用哪种?
根据火花文档
如果启用了动态分配,则要运行的执行程序的初始数量。
如果将
--num-executors
(或spark.executor.instances
)设置为大于此值,它将用作执行程序的初始数量。
如突出显示的文本所示,当--num-executors设置为更高的值时,可以覆盖--num-executors,该值大于spark.dynamicAllocation.initialExecutors。基本上,当您的应用程序启动时,它将启动spark.dynamicAllocation.initialExecutors,然后在启用动态分配时缓慢增加直到spark.dynamicAllocation.maxExecutors。
静态分配执行程序的数量。
用外行的话来说,就像我要x资源(spark.executor.instances)完成一项工作
(要么)
我希望min(x资源)和max(y资源)以及最初(z资源)要完成工作...条件(x <= z <= y)应始终满足,并且您的资源使用情况将取决于何时需要您的工作正在运行。
什么时候使用动态分配?
当您在集群上运行多个流应用程序或按需执行spark-sql作业时,大多数情况下,您的作业可能需要很少的资源,并且仅在大数据流块(高峰时间)中几乎保持空闲状态,作业可能需要更多的资源来处理数据,否则应释放群集资源并将其用于其他目的。
注意:启用动态分配后,请确保启用外部随机播放服务(spark.shuffle.service.enabled = true)。
外部随机播放服务的目的是允许执行者被删除而不会删除执行者编写的随机播放文件(更多详细信息)。设置此服务的方式因群集管理器而异
推荐人:https ://dzone.com/articles/spark-dynamic-allocation
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句