查询完成后仍在运行
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.enabled
、tez.am.container.idle.release-timeout-min.millis
、tez.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容器在完成测试过程后仍处于启动状态