2014-04-01 7 views
5

Ich habe 2 Sqoops, die Daten von HDFS zu MySQL lädt. Ich möchte sie mit Oozie ausführen. Ich habe gesehen, dass Oozie eine XML-Datei ist. Wie kann ich es konfigurieren, damit ich diese Sqoop ausführen kann? Demonstration mit Schritten wird geschätzt?Ausführen von Sqoops mit Oozie

Zwei sqoops sind:

1.

sqoop export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar1 

2.

sqoop export --connect jdbc:mysql://localhost/hduser --table foo2 -m 1 --export-dir /user/cloudera/bar2 

Dank.

Antwort

6

Sie müssen es nicht über eine Shell-Aktion ausführen. In oozie gibt es eine separate Aktion. Hier ist, was Sie in Ihrem workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.4" name="oozie-wf"> 
    <start to="sqoop-wf1"/> 
    <action name="sqoop-wf1"> 
     <sqoop xmlns="uri:oozie:sqoop-action:0.2"> 
       <job-tracker>${jobTracker}</job-tracker> 
       <name-node>${nameNode}</name-node> 
       <command>export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar1</command> 
     </sqoop> 
     <ok to="sqoop-wf2"/> 
     <error to="fail"/> 
    </action> 
    <action name="sqoop-wf2"> 
     <sqoop xmlns="uri:oozie:sqoop-action:0.2"> 
       <job-tracker>${jobTracker}</job-tracker> 
       <name-node>${nameNode}</name-node> 
       <command>export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar2</command> 
     </sqoop> 
     <ok to="end"/> 
     <error to="fail"/> 
    </action> 
    <kill name="fail"> 
     <message>Failed, Error Message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <end name="end"/> 
</workflow-app> 

this helps ..

+0

Hallo, Vielen Dank. Wie führe ich workflow.xml aus? Wo lege ich die Datei workflow.xml ab? Wo definiere ich Parameter für "$ {jobTracker}"? Ich bin neu bei Oozie und Ihre Hilfe wird geschätzt. – Rio

+0

jobTracker und nameNode werden hier parametrisiert, was bedeutet, dass sie in der Datei job.properties definiert werden sollte. Es scheint, als hättest du die Beispiele nicht durchgegangen. Überprüfen Sie die Apache Oozie Website. Sie haben gute Beispiele geliefert. Hier ist der Link. [https://oozie.apache.org/docs/3.3.2/DG_Examples.html.html (http://oozie.apache.org/docs/3.3.2/DG_Examples.html) – DMA

+0

Ok danke. Meine Hadoop-Version ist: Hadoop 2.0.0-cdh4.3.1. Kann ich für diese Version von Hadoop shoop-Aktionen in oozie verwenden? – Rio

0

Sie können hierfür eine verwenden. Grundsätzlich müssen Sie eine Shell-Aktion erstellen bieten & die Befehle, die Sie in Ihrer Frage gestellt, da die Befehle innerhalb der Aktion

Probe Oozie Aktion ausgeführt werden:

<action name="SqoopAction"> 
    <shell xmlns="uri:oozie:shell-action:0.1"> 
     <job-tracker>[JOB-TRACKER]</job-tracker> 
     <name-node>[NAME-NODE]</name-node> 
     <prepare> 
      <delete path="[PATH]"/> 
      ... 
      <mkdir path="[PATH]"/> 
      ... 
     </prepare> 
     <job-xml>[SHELL SETTINGS FILE]</job-xml> 
     <configuration> 
      <property> 
       <name>[PROPERTY-NAME]</name> 
       <value>[PROPERTY-VALUE]</value> 
      </property> 
      ... 
     </configuration> 
     <exec>[SHELL-COMMAND]</exec> 
     <argument>[ARG-VALUE]</argument> 
      ... 
     <argument>[ARG-VALUE]</argument> 
     <env-var>[VAR1=VALUE1]</env-var> 
      ... 
     <env-var>[VARN=VALUEN]</env-var> 
     <file>[FILE-PATH]</file> 
     ... 
     <archive>[FILE-PATH]</archive> 
     ... 
     <capture-output/> 
    </shell> 

In Ihrem Fall würden Sie ersetzen [SHELL-COMMAND] mit dem, was Sqoop Befehl mögen Sie, wie laufen:

<exec>sqoop export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar1</exec> 

auch könnten Sie alle Ihre Sqoop Befehle in einem Shell-Skript setzen, und das Skript stattdessen auszuführen. Dies ist besser, wenn Sie viele Befehle ausführen müssen.

+0

Hallo, Danke für die Antwort zu setzen haben. Wo stelle ich diese XML-Datei (sagen wir SqoopAction.xml)? Wie führe ich diese XML-Datei aus? Was lege ich für [PATH], [SHELL SETTINGS FILE], [FILE-PATH], ...? Ich verwende "Cloudera QuickStart VM" – Rio

+0

Bitte lesen Sie dieses Handbuch: https://blogs.oracle.com/datawarehousing/entry/building_simple_workflows_in_oozie, um zu erfahren, wie Sie oozie Workflows über workflow.xml ausführen können. Das Beispiel, das ich gepostet habe, ist generisch, also könnte es Parameter geben, die Sie möglicherweise nicht benötigen, also fühlen Sie sich frei, sie von Ihrem Arbeitsfluss auszuschließen – Chaos

Verwandte Themen