我可以动态重命名oozie作业名称吗?

时间:2013-01-28 14:44:29

标签: hadoop oozie

我们有一个Hadoop服务,我们有多个应用程序。我们需要通过重新执行相同的工作流程来处理每个应用程序的数据。这些计划在一天的同一时间执行。问题是当这些作业运行时,很难知道作业正在运行/失败/成功的应用程序。当然,我可以打开工作配置并知道它,但这确实需要时间,因为有10个应用程序在该服务下运行。

oozie中是否有任何选项可以在执行作业时动态传递工作流程的名称(或部分工作),例如

oozie job -run -config <filename> -name "<NameIWishToGive>"
OR
oozie job -run -config <filename> -nameSuffix "<MyApplicationNameUnderTheService>"

另外,我们不希望创建多个作业文件夹来单独执行,因为复制粘贴太多了。

请建议。

3 个答案:

答案 0 :(得分:4)

在我看来,您应该只能使用作业配置中设置的属性。

通过执行以下操作,我能够获得动态名称。

以下是我的workflow.xml的一个示例:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf-${environment}">
...
</workflow-app>

在我的职业生涯中,我有:

...
environment=test
...

该名称最终成为:“map-reduce-wf-test”

答案 1 :(得分:1)

你会在apache文档中找到一大堆oozie命令行here。我不确定你正在寻找哪一个,所以我想我只是粘贴链接。希望这有帮助!

答案 2 :(得分:0)

我在oozie找不到任何东西来做那件事。这是在* .xml文件中查找/替换#{appName}和#{frequency}并将所有文件上传到hdfs的脚本。值是从作为第三个参数传递给脚本的属性文件中获取的。

要点 - https://gist.github.com/epishkin/5952522

示例:

./upload.sh simple_reports namenode01 simple_reports/coordinator_script-1.properties

其中'simple_reports'是包含workflow.xml和coordinator.xml文件的文件夹。

workflow.xml:

<workflow-app name="#{appName}" xmlns="uri:oozie:workflow:0.3">
...
</workflow-app>

coordinator.xml:

<coordinator-app name="#{appName}-coord" xmlns="uri:oozie:coordinator:0.2"

             frequency="#{frequency}"
             start="${start}"
             end=  "${end}"

             timezone="America/New_York">
...
</coordinator-app>

coordinator_script-1.properties:

appName=multi_network
frequency=${coord:days(7)}
...

希望这有帮助。