1

当有多个 Hue 页面同时运行 tez 应用程序时,它有时会将同一个会话应用于两个不同的任务,这将导致它们接收到 KILL 信号而另一个抱怨当前应用程序主控正在被使用并重试. 我查看了代码,HiveServerClient._get_tez_session我认为问题在于busy_sessions检索方式,这不是线程安全的。因此,当几乎同时提交时,有可能将两个查询分配给同一个会话。

我想知道有没有办法从HiveServerClient._get_tez_session方法中获取当前的编辑器 ID(doc_id),所以我现在可以做一些黑客攻击来快速解决问题。谢谢。

4

1 回答 1

0

您可以通过禁用 Tez 会话模式来解决此问题

set tez.am.mode.session=false;

会话模式在保留执行资源方面更具侵略性,通常用于同一用户快速连续提交多个 DAG 的交互式应用程序。对于长时间运行的应用程序,建议使用一次性执行、批处理作业等非会话模式。如果启用会话模式,则建议重用容器。

还尝试禁用容器重用:

set tez.am.container.reuse.enabled=false;

在此处查看所有 Tez 配置设置。

另请阅读有关Tez 会话命名的主题。我自己没有测试过,也许你可以使用hive.session.id属性来获取/设置会话 ID。

于 2018-06-24T11:21:25.223 回答