有没有我们不想重用 tez 容器的场景?
Is there any scenario where we wouldn't want to reuse tez containers?
几天前,我在我的一个项目中开始使用 hive 和 tez。在那段时间里,我遇到了这个 属性 tez.am.container.reuse.enabled
,许多网站建议将其保持为真实。我知道这是由于:
- 将对新容器的请求限制为 RM
- 降低容器启动的成本,从而节省时间
但我想不出任何我们希望禁用此 属性 的场景。我一直在网上搜索任何此类案例,但找不到。
谁能帮我解决这个问题?
在性能方面,没有理由不重新使用容器,执行效率 部分 this 论文解释得很好,这就是为什么此参数的默认值为 true
.
但是,我认为有些情况可以解释为什么此功能仍然可配置;
- 出于解决方法目的,您可能需要禁用它。例如,this 配置单元票证仍未解决,当
tez.am.container.reuse.enabled=false
时,有问题的查询工作正常。如果我的生产案例很关键,而不是完全被阻止,我可能更喜欢 运行 我的工作而不重新使用容器。
- 属性 可能会与其他一些属性发生冲突,并且根据您的优先级,您可能想要放弃性能。例如在 Configure Tez Container Reuse 文档中,有一条警告说;
Do not use the tez.queue.name
configuration parameter because it sets
all Tez jobs to run on one particular queue.
- 作为最后一项,我在 this 文档上看到了另一个警告;
Enabling this parameter improves performance by avoiding the memory overhead of reallocating container resources for every task. However, disable this parameter if the tasks contain memory leaks or use static variables.
几天前,我在我的一个项目中开始使用 hive 和 tez。在那段时间里,我遇到了这个 属性 tez.am.container.reuse.enabled
,许多网站建议将其保持为真实。我知道这是由于:
- 将对新容器的请求限制为 RM
- 降低容器启动的成本,从而节省时间
但我想不出任何我们希望禁用此 属性 的场景。我一直在网上搜索任何此类案例,但找不到。
谁能帮我解决这个问题?
在性能方面,没有理由不重新使用容器,执行效率 部分 this 论文解释得很好,这就是为什么此参数的默认值为 true
.
但是,我认为有些情况可以解释为什么此功能仍然可配置;
- 出于解决方法目的,您可能需要禁用它。例如,this 配置单元票证仍未解决,当
tez.am.container.reuse.enabled=false
时,有问题的查询工作正常。如果我的生产案例很关键,而不是完全被阻止,我可能更喜欢 运行 我的工作而不重新使用容器。 - 属性 可能会与其他一些属性发生冲突,并且根据您的优先级,您可能想要放弃性能。例如在 Configure Tez Container Reuse 文档中,有一条警告说;
Do not use the
tez.queue.name
configuration parameter because it sets all Tez jobs to run on one particular queue.
- 作为最后一项,我在 this 文档上看到了另一个警告;
Enabling this parameter improves performance by avoiding the memory overhead of reallocating container resources for every task. However, disable this parameter if the tasks contain memory leaks or use static variables.