【发布时间】:2015-12-02 23:21:13
【问题描述】:
我有一个 oozie 工作流程。我正在使用
提交所有配置单元操作<name>mapred.job.queue.name</name>
<value>${queueName}</value>
但对于少数 hive 操作,启动的作业不在指定队列中;它在默认队列中调用。
请告诉我这种行为背后的原因和解决方案。
【问题讨论】:
我有一个 oozie 工作流程。我正在使用
提交所有配置单元操作<name>mapred.job.queue.name</name>
<value>${queueName}</value>
但对于少数 hive 操作,启动的作业不在指定队列中;它在默认队列中调用。
请告诉我这种行为背后的原因和解决方案。
【问题讨论】:
A. Oozie 细节 Oozie 将“常规”Hadoop 属性传播到“常规”MapReduce Action。
但对于 Oozie 在 YARN 中运行单个 Mapper 任务的其他类型的 Action(Shell、Hive、Java 等),它并不认为这是一个真正的 MapReduce 作业。因此,它使用不同的集合 未记录的属性,总是前缀与oozie.launcher. 例如查看that post。
所以在你的情况下,要设置的实际属性是oozie.launcher.mapred.job.queue.name
B. TEZ 细节 摘自HortonWorks documentation:
例如,在 Hive 中,您可以在 hive-site.xml 指定用于 Hive-on-Tez 作业的队列。到 分配 Hive-on-Tez 作业以使用“工程”队列,添加 hive-site.xml 的以下属性:
<property> <name>tez.queue.name</name> <value>engineering</value> </property>
【讨论】:
在我使用 Oozie 的情况下,似乎无法在 xml 标记中添加 --hiveconf tez.queue.name=myqueue。还尝试通过更新 hdfs 上的 hive-site.xml 并且仍然没有使用定义的队列。我最终通过在所需查询的开头添加以下内容来更新 .hql 文件:
# in your hql file
SET tez.queue.name=${myqueue};
【讨论】: