我需要一些关于oozie发射器工作的澄清。
1) 启动程序作业是按每个工作流应用程序(具有多个操作)启动的,还是按工作流应用程序中的每个操作启动的?
2) 用例:我有包含多个 shell
动作(内部执行spark、hive、pig动作等)。使用的原因 shell
是因为可以使用自定义逻辑计算分区日期之类的附加参数,并使用.q文件将其传递给配置单元
shell文件示例:
hive -hiveconf DATABASE_NAME=$1 -hiveconf MASTER_TABLE_NAME=$2 -hiveconf SOURCE_TABLE_NAME=$3 -hiveconf -f $4
示例.q文件:
use ${hiveconf:DATABASE_NAME};
insert overwrite into table ${hiveconf:MASTER_TABLE_NAME} select * from ${hiveconf:SOURCE_TABLE_NAME};
我设置了 oozie.launcher.mapreduce.job.queuename
以及 mapreduce.job.queuename
以避免单个队列中的任务插槽不足。我还省略了 <capture-output></capture-output>
在相应的 shell
行动。但是,我仍然看到启动程序作业占用了启动程序队列中的大量内存。
这是因为启动程序作业缓存来自配置单元的日志输出吗?
在执行shell操作时,是否有必要给启动程序作业足够的内存?
如果我显式限制启动程序作业内存会发生什么?
如果有人能概述oozie launcher工作的职责,我将不胜感激。
谢谢!
1条答案
按热度按时间xytpbqjk1#
启动程序作业是按每个工作流应用程序(具有多个操作)启动的,还是按工作流应用程序中的每个操作启动的?
启动程序作业是根据工作流中的每个操作启动的。
我强烈建议您使用相应的oozie操作、hive、pig等,因为它允许oozie以更好的方式处理您的工作流和操作。