scala - 为什么我们需要比 Spark 中的机器数量更多的执行器?
问题描述
请求比集群中可用机器更多的执行程序背后的逻辑是什么?
在理想情况下,我们希望每台机器上都有 1 个执行程序(=1 jvm),而且每台机器上都不少。
如果不是,那为什么?
提前致谢
解决方案
在理想情况下,我们希望每台机器上都有 1 个执行程序(=1 jvm),而且每台机器上都不少。
不必要。根据可用内存量和 JVM 实现,单独的虚拟机可能是更好的选择,尤其是:
- 改进大型机器的内存管理 - 例如为什么 35GB 堆小于 32GB – Java JVM Memory Oddities。
- 为了提高对不稳定工作负载的容错能力——如果一个 JVM 发生故障,您将失去所有相应线程的工作,因此保持较小可以使事情得到控制。
- 为了最大限度地减少 GC 调整所需的工作量 - 非常大的实例可能非常难以调整。
推荐阅读
- rust - actix-session、sqlx、async-graphql 的错误问题
- javascript - 如何使用 vue-router 设置背景颜色
- c# - .NET 代码优先 gRPC 中的 MethodName 转换
- r - 将指定的列除以相同的值
- arrays - 如何从具有不同索引的 Laravel 对象数组中获取 2 个最高值
- sql - 如何根据分配的“ID”将表数据透视到 SQL 中的值?
- javascript - 使用 fetch API javascript 时无法从数组中获取数据
- javascript - 如何在不重写的情况下将标题添加到不同的页面
- python - 再次调用函数时对列表的更改保持不变(不需要)
- c# - Convert.ChangeType 不接受 Decimal 的“1E-5”科学记数法,如何解决?