查询完成后仍在运行

Posted

技术标签:

【中文标题】查询完成后仍在运行【英文标题】:Query still running after completion 【发布时间】:2016-01-04 14:40:57 【问题描述】:

当在 Hortonworks 上的 Hue 中成功运行 HiveQL 查询(使用 TEZ 执行引擎)时,该进程在“Hue Job Browser”和“Hadoop ResourceManager UI”下仍标记为“Running”。它应该这样做是为了等待新的输入还是无法终止?

我的设置:

HortonWorks HDP-2.3.2.9-2950 在 3 台 RH Linux 7 机器上运行 色相 3.9.0 Hive 1.2.1.2.3 Oozie 4.2.0.2.3

【问题讨论】:

Hive 的哪个执行引擎:MapReduce 还是 TEZ?因为 TEZ 在 YARN 容器上保留了几秒钟的租约,所以在按顺序执行多个查询时避免不必要的分配/解除分配操作(参见 tez-site.xml 中的tez.am.container.reuse.enabledtez.am.container.idle.release-timeout-min.millistez.am.container.reuse.rack-fallback.enabled) 谢谢参孙!是否可以在任何地方调整此“超时”? (我也根据你的回答写了最后的答案) 您可以在 tez-site.xml 中静态更改这些tez.am.container.* 属性;或者您可以在 Hive 脚本中动态重置它们,例如set tez.am.container.reuse.enabled =false ;(但我不确定它是否会立即应用于已分配的容器,因为 A.M. 已经启动并运行) 【参考方案1】:

正如 Samson Scharfrichter 所说:

TEZ 执行引擎保留 YARN 容器的租约 查询完成后几秒钟,以避免不必要的 在执行多个查询时分配/取消分配操作 顺序。

这将使已完成的查询作业在 Hive 查询前端中出现最终结果后显示为正在运行几秒钟。

谢谢 Samson Scharfrichter!

【讨论】:

【参考方案2】:

减少tez.session.am.dag.submit.timeout.secs 的超时时间会有所帮助。时间以秒为单位。

<property>
<name>tez.session.am.dag.submit.timeout.secs</name>
<value>10</value>
</property>

/etc/tez-site.xml 文件。

【讨论】:

以上是关于查询完成后仍在运行的主要内容,如果未能解决你的问题,请参考以下文章

Docker Pytest容器在完成测试过程后仍处于启动状态

Angular 组件在被销毁后仍在监听订阅 [重复]

CDVViewController 在删除父级后仍在执行 JS

jQuery移动页面导航后仍在播放音频

系统关闭后仍在调用$modal控制器的作用域函数。

调用 Application.Exit() 后,应用程序仍在内存中运行