【问题标题】:Job queue for Hive action in oozieoozie 中 Hive 操作的作业队列
【发布时间】:2015-12-02 23:21:13
【问题描述】:

我有一个 oozie 工作流程。我正在使用

提交所有配置单元操作
<name>mapred.job.queue.name</name>
<value>${queueName}</value>

但对于少数 hive 操作,启动的作业不在指定队列中;它在默认队列中调用。

请告诉我这种行为背后的原因和解决方案。

【问题讨论】:

    标签: hadoop hive bigdata oozie


    【解决方案1】:

    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>
    

    【讨论】:

    • 明确一点:“常规”Hadoop 属性将传播到 Hive 启动的任何 MapReduce 作业。但是主 Hive 会话以及在本地模式下运行的任何作业都将使用“启动器”属性(或默认道具失败)
    • 感谢参孙的回答!但即使在设置 'oozie.launcher.mapred.job.queue.name' 之后,作业仍在默认队列中运行。实际上,我使用 TEZ 作为执行引擎。该物业不申请TEZ工作吗?
    【解决方案2】:

    在我使用 Oozie 的情况下,似乎无法在 xml 标记中添加 --hiveconf tez.queue.name=myqueue。还尝试通过更新 hdfs 上的 hive-site.xml 并且仍然没有使用定义的队列。我最终通过在所需查询的开头添加以下内容来更新 .hql 文件:

    # in your hql file
    SET tez.queue.name=${myqueue};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 2017-05-27
      • 1970-01-01
      相关资源
      最近更新 更多