Falcon & Oozie - Как настроить job.properties для oozie в соколе
У меня есть рабочий процесс oozie, который вызывает sqoop и улей. Этот отдельный рабочий процесс работает нормально, когда я запускаю oozie из командной строки. Поскольку сценарии sqoop и hive различаются, я передаю значения в workflow.xml, используя файл job.properties.
sudo oozie job -oozie http: // имя хоста: порт / oozie -config job.properties -run
Теперь я хочу настроить этот рабочий процесс в Falcon. Не могли бы вы помочь мне выяснить, где я могу настроить или передать job.properties?
Ниже приведен сокол process.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>
Я не мог найти много помощи в сети или документации сокола по этому поводу.
2 ответа
После второй мысли я почувствовал, что вы можете создать oozie с действием shell для вызова sqoop_hive.sh, в котором есть следующая строка кода:
sudo oozie job -oozie http: // имя хоста: порт / oozie -config job.properties -run.
Workflow.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"/>
Вызовите это с помощью вызова процесса сокола, как:
сокол сущности -тип процесса -submit -file process.xml. job.properties можно изменить локально, если вы создадите действие оболочки в oozie, которое вызывает oozie в командной строке внутри сценария оболочки.
Я работал над некоторой разработкой в соколе, но не очень много пробовал сокол ванили, но из того, что я понял из урока ниже:
http://hortonworks.com/hadoop-tutorial/defining-processing-data-end-end-data-pipeline-apache-falcon/
Я хотел бы попытаться создать файл oozie-workflow.xml, который динамически принимает job.properties. Поместите файл свойств в соответствующую папку HDFS, откуда его выбирает workflow.xml, и вы можете изменить его для каждого процесса. Теперь вы можете использовать ваш сокол process.xml и вызывать его из командной строки, используя:
сокол сущности -тип процесса -submit -file process.xml
Также в path = / apps / demo / workflow.xml вам не нужно явно указывать workflow.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" />