Apache Tez 任务在 Application Master 上暂停

问题描述 投票:0回答:1

我有一个 tez 问题,当同时运行大约 14 个查询时,其中一些查询的延迟超过 5 分钟,但集群利用率仅为 14%。

这就是我正在谈论的信息。

INFO SessionState: [HiveServer2-Background-Pool: Thread-322319]: Get Query Coordinator (AM)            308.84s

我的配置如下:

yarn.scheduler.maximum-allocation-mb=188000 
yarn.app.mapreduce.am.resource.mb = 16000 
tez.am.resource.memory.mb = 8000
hive.tez.container.size = 8192
tez.runtime.io.sort.mb 2048 
tez.am.launch.cmd-opts default - .8
tez.runtime.unordered.output.buffer.size-mb= 800 
hive.server2.tez.sessions.per.default.queue = 2 
tez.session.am.dag.submit.timeout.secs = 900  
tez.am.session.min.held.containers=8
tez.am.resource.memory.mb = 8000
hive.prewarm.enabled = TRUE

这是一个 15 节点集群,254GB RAM p/节点,32 核 p/节点。

知道可能发生什么吗? AM 的尺寸合适吗?我没有出现内存不足错误,只是在一切都运行时等待时间很长,但当它们全部在一起时,它们只处理 3500 万条记录。

谢谢

hive apache-tez cloudera-cdp
1个回答
0
投票

文档中没有很好地解释一种行为,即为了真正利用集群和所有附加内存配置,您必须设置默认队列,并且需要在查询时指定它们,或连接火花等

例如,当使用tez时,您需要使用

tez.name.queue={your queue name}
才能充分利用它,这可以实现yarn中的并行性。

对于spark,您需要在启动pyspark时或使用spark_submit提交作业时指定

--queue {your queue name}

为了使用上述功能,您需要使用

hive.server2.tez.default.queues
在纱线中设置队列,您需要使用 tez 的默认队列列表来设置该参数。需要注意的是,您可以创建队列而不将它们列为默认队列,这样您就需要始终手动调出队列,并且查询不会进入任何默认队列。

© www.soinside.com 2019 - 2024. All rights reserved.