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 配置
- hadoop安装配置
- Oozie workflow nodes (一)
您好,我现在需要使用oozie在shell中调度sqoop命令,即在一个shell脚本中写很多的sqoop import命令,但是每次总是出错 Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1],但是如果执行sqoop的table-list等查看命令就可以正常执行,请问您碰到过这种问题吗?希望您可以尽快回复,麻烦了
这个脚本在linux上是可以运行的。
问题解决了吗?兄弟同样的问题,很难受