oozie历史悠久的协调员

时间:2013-08-15 19:01:29

标签: hadoop hive oozie oozie-coordinator

我想为历史日期运行oozie协调器,并将日期作为参数传递给工作流中的脚本。我该怎么做?

我可以将开始日期作为旧日期吗?它会赶上吗?我应该添加多少频率。

1 个答案:

答案 0 :(得分:2)

是的,当您提交过去的开始日期的协调员时,它会赶上。它立即开始执行,因此设置concurrency = 1可以使您的集群免于负载过重。如果要先处理新文件,也可以设置execution = LIFO。有关详情,请查看http://oozie.apache.org/docs/3.3.2/CoordinatorFunctionalSpec.html

我正在从How to schedule a sqoop action using oozie

的答案中发布修改后的样本

创建coordinator.xml文件:

<coordinator-app name="sample-coord" xmlns="uri:oozie:coordinator:0.2"

                 frequency="${coord:days(7)}"
                 start="${start}"
                 end=  "${end}"

                 timezone="America/New_York">

    <controls>
        <timeout>${timeout}</timeout>
        <concurrency>1</concurrency>
    </controls>

    <datasets>
        <dataset name="data"
                 frequency="${coord:days(7)}"
                 initial-instance="${start}" timezone="America/New_York">
            <uri-template>${data_path}/${YEAR}/${MONTH}/${DAY}</uri-template>
            <done-flag/>
        </dataset>
    </datasets>

    <input-events>
        <data-in name="data_in" dataset="data">
            <instance>${coord:current(0)}</instance>
        </data-in>
    </input-events>

    <action>
        <workflow>
            <app-path>${wf_application_path}</app-path>

            <configuration>
                <property>
                    <name>input</name>
                    <value>${coord:dataIn('data_in')}</value>
                </property>
            </configuration>
        </workflow>
    </action>
</coordinator-app>

在coordinator.properties中指定上述文件中使用的所有属性:

host=namenode01
nameNode=hdfs://${host}:8020

wf_application_path=${nameNode}/oozie/deployments/example
oozie.coord.application.path=${wf_application_path}

data_path=${nameNode}/data

start=2013-08-01T01:00Z
end=2013-08-19T23:59Z
timeout=10

将您的coordinator.xml文件上传到hdfs,然后使用类似

的内容提交您的协调员作业
oozie job -config coordinator.properties -run