我有一个oozie工作流程,它调用sqoop和hive操作。当我从命令行运行oozie时,这个单独的工作流程工作正常。由于 sqoop 和 hive 脚本各不相同,因此我使用 job.properties 文件将值传递给工作流.xml。
sudo oozie job -oozie http://hostname:port/oozie -config job.properties -run
现在我想在猎鹰中配置这个oozie工作流程。你能帮我弄清楚我可以在哪里配置或传递作业属性吗?
以下是猎鹰的过程.xml
<process name="demoProcess" xmlns="uri:falcon:process:0.1">
<tags>pipeline=degIngestDataPipeline,owner=hadoop, externalSystem=svServers</tags>
<clusters>
<cluster name="demoCluster">
<validity start="2015-01-30T00:00Z" end="2016-02-28T00:00Z"/>
</cluster>
</clusters>
<parallel>1</parallel>
<order>FIFO</order>
<frequency>hours(1)</frequency>
<outputs>
<output name="output" feed="demoFeed" instance="now(0,0)" />
</outputs>
<workflow name="dev-wf" version="0.2.07"
engine="oozie" path="/apps/demo/workflow.xml" />
<retry policy="periodic" delay="minutes(15)" attempts="3" />
</process>
我在网上或猎鹰文档中找不到太多关于此的帮助。
我在猎鹰中进行了一些开发,但没有尝试很多猎鹰香草,但根据我从下面的教程中了解到的:
http://hortonworks.com/hadoop-tutorial/defining-processing-data-end-end-data-pipeline-apache-falcon/
我会尝试创建oozie工作流.xml它动态接受job.properties。将属性文件放在相应的 HDFS 文件夹中.xml工作流从中选取它,您可以为每个进程更改它。现在您可以使用您的 falcon 进程.xml并使用以下命令从命令行调用它:
猎鹰实体 -类型 进程 -提交 -文件进程.xml
同样在 path=/apps/demo/workflow 中.xml您无需显式指定工作流.xml。您可以只提供文件夹名称,例如:
<process name="rawEmailIngestProcess" xmlns="uri:falcon:process:0.1">
<tags>pipeline=churnAnalysisDataPipeline,owner=ETLGroup,externalSystem=USWestEmailServers</tags>
<clusters>
<cluster name="primaryCluster">
<validity start="2014-02-28T00:00Z" end="2016-03-31T00:00Z"/>
</cluster>
</clusters>
<parallel>1</parallel>
<order>FIFO</order>
<frequency>hours(1)</frequency>
<outputs>
<output name="output" feed="rawEmailFeed" instance="now(0,0)" />
</outputs>
<workflow name="emailIngestWorkflow" version="2.0.0"
engine="oozie" path="/user/ambari-qa/falcon/demo/apps/ingest/fs" />
<retry policy="periodic" delay="minutes(15)" attempts="3" />
再三考虑,我觉得你可以创建一个带有shell操作的oozie来调用sqoop_hive.sh其中有以下代码行:
sudo oozie job -oozie http://hostname:port/oozie -config job.properties -run.
工作流.xml如下所示:
<workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
<start to="shell-node"/>
<action name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>sqoop_hive.sh</exec>
<argument>${feedInstancePaths}</argument>
<file>${wf:appPath()}/sqoop_hive.sh#sqoop_hive.sh</file>
<!-- <file>/tmp/ingest.sh#ingest.sh</file> -->
<!-- <capture-output/> -->
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
使用猎鹰进程调用调用它,如下所示:
Falcon 实体 -type 进程 -submit -file 进程.xml. 如果您在 Oozie 中创建 shell 操作,该操作在 shell 脚本中的命令行中调用 oozie,则可以在本地更改 job.properties。