2014-04-01 25 views
5

HDFS'den MySQL'e veri yükleyen 2 Sqoops var. Oozie'yi kullanarak onları çalıştırmak istiyorum. Oozie'nin bir XML dosyası olduğunu gördüm. Bu Sqoop'u çalıştırabilmek için nasıl yapılandırabilirim? Adımlarla gösteri takdir edilecek mi?Oozie'yi Kullanarak Sqoops'u Çalıştırma

İki Sqoops şunlardır:

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 

teşekkürler.

cevap

6

Bir kabuk eylemi ile yürütmek zorunda değilsiniz. Oozie'de ayrı bir sqoop eylemi var. İşte size workflow.xml bu yardımcı olur

<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> 

Umut ..

+0

Merhaba, onları çok fazla etkilemekten çekinmeyin. Workflow.xml dosyasını nasıl çalıştırırım? Workflow.xml dosyasını nereye koyayım? "$ {JobTracker}" için parametreleri nerede tanımlarım? Ben Oozie'ye yeniyim ve yardımın takdir edilecek. – Rio

+0

jobTracker ve nameNode burada parametarize edildi, bunun anlamı job.properties dosyasında tanımlanması gerekir. Örneklerden geçmediğin gibi görünüyor. Apache oozie web sitesini kontrol et. İyi örnekler verdiler. Bağlantı burada. [https://oozie.apache.org/docs/3.3.2/DG_Examples.html](https://oozie.apache.org/docs/3.3.2/DG_Examples.html) – DMA

+0

Ok teşekkürler. Benim Hadoop versiyonum: Hadoop 2.0.0-cdh4.3.1. Hadoop'un bu sürümü için oozie'de sqoop eylemini kullanabilir miyim? – Rio

0

Bunun için bir Oozie shell action kullanabilirsiniz.

Senin durumunda
<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> 

, sen [SHELL-COMMAND] yerini alacak: Temel olarak &

Numune Oozie eylem komutları eylemin içinde yürütülecek olarak senin soru yayınlanmıştır komutları sağlayan bir kabuk işlemi oluşturmanız gerekir Ayrıca

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

, bir kabuk tüm sqoop komutları koymak ve bunun yerine o senaryoyu yürütebilir: ne olursa olsun Sqoop komut ile aşağıdakiler gibi, çalıştırmak istiyorum. Uygulanacak çok fazla komutunuz varsa bu daha iyidir.

+0

Merhaba, cevap için teşekkürler koymak zorunda şeydir. Bu XML dosyasını nereye koyarım (SqoopAction.xml)? Bu XML dosyasını nasıl çalıştırırım? [PATH], [SHELL SETTINGS FILE], [FILE-PATH], ... için ne koyarım? "Cloudera QuickStart VM" kullanıyorum – Rio

+0

Lütfen bu kılavuzu okuyun: https://blogs.oracle.com/datawarehousing/entry/building_simple_workflows_in_oozie workflow.xml aracılığıyla oozie iş akışlarını yürütme hakkında bilgi edinmek için. Ayrıca, gönderdiğim örnek geneldir, bu nedenle gerekmeyebilecek parametreler olabilir, bu nedenle iş akışınızdan – Chaos

İlgili konular