Oozie Sqoop Action 配置

oozie版本是 oozie-2.3.2-cdh3u6

这篇文章可以算是对官方文档的简要翻译吧。

要运行Sqoop Job,必须在 sqoop action里面配置 job-tracer,name-node,Sqoop command,也许还需要一些参数和配置。
在sqoop action里面可以配置在启动sqoop job前。删除或者创建某些文件夹。

sqoop的配置可以写在一个文件中,然后通过job-xml指定配置文件。也可以通过configuration元素进行配置,在configuration里面的信息会覆盖job-xml里面的配置信息。另外,在configuration里面能用EL表达式。

Note that Hadoop mapred.job.tracker and fs.default.name properties must not be present in the inline configuration.

跟hadoop的map-reduce jobs一样,可以添加附件到sqoop job里面。具体参见【http://archive.cloudera.com/cdh/3/oozie/WorkflowFunctionalSpec.html#a3.2.2.1_Adding_Files_and_Archives_for_the_Job

语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
    ...
    <action name="[NODE-NAME]">
        <sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-tracker>[JOB-TRACKER]</job-tracker>
            <name-node>[NAME-NODE]</name-node>
            <prepare>
               <delete path="[PATH]"/>
               ...
               <mkdir path="[PATH]"/>
               ...
            </prepare>
            <configuration>
                <property>
                    <name>[PROPERTY-NAME]</name>
                    <value>[PROPERTY-VALUE]</value>
                </property>
                ...
            </configuration>
            <command>[SQOOP-COMMAND]</command>
            <arg>[SQOOP-ARGUMENT]</arg>
            ...
            <file>[FILE-PATH]</file>
            ...
            <archive>[FILE-PATH]</archive>
            ...
        </sqoop>
        <ok to="[NODE-NAME]"/>
        <error to="[NODE-NAME]"/>
    </action>
    ...
</workflow-app>

prepare元素里面的文件夹路径必须是:hdfs://HOST:PORT。
job-xml指定一个存在的配置文件。
configuration里面配置传递给sqoop job的参数。

Sqoop command

sqoop command可以通过command元素或者多个arg元素指定。
当使用command的时候,oozie会根据空格把命令切分成多个参数。
当使用arg的时候,oozie将会把arg里面的值当成参数传递给sqoop。
当一个参数里面有空格的时候,必须用arg来指定。
具体可以查看sqoop的文档。【http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html

使用command元素的例子:

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <action name="myfirsthivejob">
        <sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-traker>foo:8021</job-tracker>
            <name-node>bar:8020</name-node>
            <prepare>
                <delete path="${jobOutput}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.compress.map.output</name>
                    <value>true</value>
                </property>
            </configuration>
            <command>import  --connect jdbc:hsqldb:file:db.hsqldb --table TT --target-dir hdfs://localhost:8020/user/tucu/foo -m 1</command>
        </sqoop>
        <ok to="myotherjob"/>
        <error to="errorcleanup"/>
    </action>
    ...
</workflow-app>

使用arg元素的例子:

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <action name="myfirsthivejob">
        <sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-traker>foo:8021</job-tracker>
            <name-node>bar:8020</name-node>
            <prepare>
                <delete path="${jobOutput}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.compress.map.output</name>
                    <value>true</value>
                </property>
            </configuration>
            <arg>import</arg>
            <arg>--connect</arg>
            <arg>jdbc:hsqldb:file:db.hsqldb</arg>
            <arg>--table</arg>
            <arg>TT</arg>
            <arg>--target-dir</arg>
            <arg>hdfs://localhost:8020/user/tucu/foo</arg>
            <arg>-m</arg>
            <arg>1</arg>
        </sqoop>
        <ok to="myotherjob"/>
        <error to="errorcleanup"/>
    </action>
    ...
</workflow-app>

注意:使用arg虽然很麻烦,但是它可以让参数里面存在空格,这个在有查询语句的时候会很有用。

Sqoop Action日志

Sqoop action的日志被重定向到Oozie执行map-reduce任务的STDOUT/STDERR。
也可以通过oozie或者hadoop的job-tracker的web-console来查看日志。
日志的默认界别是INFO,可以通过在配置里面设置oozie.sqoop.log.level来指定。
日志这个没怎么看懂,以上是大概理解,英文太差%>_<%

注:上面所有的元素可以通过EL表达式指定。

sqoop action的xml schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:sqoop="uri:oozie:sqoop-action:0.2" elementFormDefault="qualified"
           targetNamespace="uri:oozie:sqoop-action:0.2">    <xs:element name="sqoop" type="sqoop:ACTION"/>

    <xs:complexType name="ACTION">
        <xs:sequence>
            <xs:element name="job-tracker" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="name-node" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="prepare" type="sqoop:PREPARE" minOccurs="0" maxOccurs="1"/>
            <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="configuration" type="sqoop:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
            <xs:choice>
                <xs:element name="command" type="xs:string" minOccurs="1" maxOccurs="1"/>
                <xs:element name="arg" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
            </xs:choice>
            <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CONFIGURATION">
        <xs:sequence>
            <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
                        <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
                        <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="PREPARE">
        <xs:sequence>
            <xs:element name="delete" type="sqoop:DELETE" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="mkdir" type="sqoop:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="DELETE">
        <xs:attribute name="path" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="MKDIR">
        <xs:attribute name="path" type="xs:string" use="required"/>
    </xs:complexType>

</xs:schema>

http://archive.cloudera.com/cdh/3/oozie/DG_SqoopActionExtension.html

转载请注明: 转载自http://jyd.me/

本文链接地址: Oozie Sqoop Action 配置

Tagged on: , ,

2 thoughts on “Oozie Sqoop Action 配置

  1. 李将

    您好,我现在需要使用oozie在shell中调度sqoop命令,即在一个shell脚本中写很多的sqoop import命令,但是每次总是出错 Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1],但是如果执行sqoop的table-list等查看命令就可以正常执行,请问您碰到过这种问题吗?希望您可以尽快回复,麻烦了
    这个脚本在linux上是可以运行的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据