本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1254537
欢迎加入Hadoop超级群: 180941958
搭建起了hadoop+oozie+Sqoop,准备写个Oozie工作流,里面通过Sqoop从DB里导数据再写到HDFS.一切就绪,但却报错了.报错如下:
Error: E0701 : E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
再去看日志,好家伙,错误一大把,但已经能否发现些什么.异常如下:
2011-11-11 11:39:44,658 WARN V1JobsServlet:539 - USER[?] GROUP[users] TOKEN[-] APP[-] JOB[-] ACTION[-] URL[POST http://localhost:11000/oozie/v1/jobs?action=start] error[E0701], E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.org.apache.oozie.servlet.XServletException: E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
at org.apache.oozie.servlet.V1JobsServlet.submitWorkflowJob(V1JobsServlet.java:163)
at org.apache.oozie.servlet.V1JobsServlet.submitJob(V1JobsServlet.java:74)
at org.apache.oozie.servlet.BaseJobsServlet.doPost(BaseJobsServlet.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:281)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.oozie.DagEngineException: E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
at org.apache.oozie.DagEngine.submitJob(DagEngine.java:137)
at org.apache.oozie.servlet.V1JobsServlet.submitWorkflowJob(V1JobsServlet.java:159)
... 17 more
Caused by: org.apache.oozie.command.CommandException: E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
at org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:185)
at org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:61)
at org.apache.oozie.command.XCommand.call(XCommand.java:257)
at org.apache.oozie.DagEngine.submitJob(DagEngine.java:125)
... 18 more
Caused by: org.apache.oozie.workflow.WorkflowException: E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
at org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateAndParse(LiteWorkflowAppParser.java:120)
at org.apache.oozie.workflow.lite.LiteWorkflowLib.parseDef(LiteWorkflowLib.java:47)
at org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:46)
at org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:41)
at org.apache.oozie.command.wf.SubmitXCommand.execute(SubmitXCommand.java:95)
... 21 more
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'sqoop'.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:417)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3182)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1927)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.jaxp.validation.StreamValidatorHelper.validate(StreamValidatorHelper.java:144)
at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:111)
at javax.xml.validation.Validator.validate(Validator.java:127)
at org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateAndParse(LiteWorkflowAppParser.java:106)
... 25 more
错误大概就是xml不支持自定义标签sqoop.这里我在Oozie中需要使用Sqoop从DB中导入数据,所以在workflow.xml中进行了如下配置:
<action name="db_export">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${job_tracker}</job-tracker>
<name-node>${name_node}</name-node>
<prepare>
<delete path="${wf_job_base_path}/${wf:id()}/db_export"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queue_name}</value>
</property>
</configuration>
<arg>import</arg>
<arg>-D</arg>
<arg>mapred.output.compress=false</arg>
<arg>--connect</arg>
<arg>jdbc:mysql://${db_hostname}/${db_name}</arg>
<arg>--query</arg>
<arg>${db_banner_query}</arg>
<arg>--target-dir</arg>
<arg>${wf_job_base_path}/${wf:id()}/db_export</arg>
<arg>--num-mappers</arg>
<arg>${sqoop_export_mappers_num}</arg>
<arg>--username</arg>
<arg>${db_user}</arg>
<arg>--password</arg>
<arg>${db_password}</arg>
<arg>--as-sequencefile</arg>
<arg>--class-name</arg>
<arg>${db_class_name}</arg>
</sqoop>
<ok to="sqoop_export_done"/>
<error to="fail"/>
</action>
常识告诉我,自定义标签需要进行相关命名.看这边sqoop引入的是uri:oozie:sqoop-action:0.2,所以应该要有oozie-sqoop-action-0.2.xsd文件.于是去$OOZIE_HOME/lib/oozie-clinet-x.x.jar中
并未看到该文件.于是按照http://archive.cloudera.com/cdh/3/oozie/DG_SqoopActionExtension.html的配置新建该文件并放入该jar中.继续运行,但还是报错.同时随着对自定义标签的了解以及看了这篇文章后http://www.infoq.com/cn/articles/ExtendingOozie,我发现需要相关的ActionSuppoert支持,而在oozie-core中并未找到org.apache.oozie.action.hadoop.SqoopActionExecutor这个类.然后通过搜索才发现,之前是下载yahoo的oozie,而只有
cloudera才对oozie支持使用sqoop.于是去cloudera下载了oozie-2.3-cdhu30.tar.gz,并从中找到相关的xsd和ActionSupport.再直接运行,OK,问题解决!看来用上了cloudera,以后啥都要先围着它去转了.下载地址:http://archive.cloudera.com/cdh/3/oozie-2.3.2-cdh3u2.tar.gz
更多技术文章、感悟、分享、勾搭,请用微信扫描:
相关推荐
Oozie工作流由一系列的action节点组成,每个节点代表执行一个特定任务,比如Hadoop作业、Pig作业、Hive作业或者Sqoop任务等。 2. Sqoop工具的使用: Sqoop是一个开源工具,用于在Hadoop和关系数据库之间高效传输...
例如,可以配置hadoop.log.dir来指定日志的存储位置,这有助于开发者在遇到问题时迅速定位和排查问题。 最后,Hadoop是一个不断演进的技术栈,随着版本的更新,新的特性和组件也会被添加进来。学习Hadoop不仅要关注...
Apache Hadoop 中,Oozie 是一个至关重要的组件,它是一个开源的工作流调度引擎,专门设计用于管理和协调在Hadoop生态系统中的各种作业。Oozie 由Cloudera公司贡献给Apache社区,它是一个基于工作流引擎的系统,能够...
在日常运维中,理解Oozie的工作原理和配置细节非常重要,这有助于解决类似的问题。同时,熟悉SQL语言和你所使用的数据库管理系统也是必不可少的技能,因为Oozie的元数据存储通常需要数据库支持。记得定期备份数据库...
尚硅谷 大数据 hive oozie sqoop kalfa flume zk hbase Hadoop
1. **Sqoop 的作用**:Sqoop 是为了解决 Hadoop 与传统 RDBMS 之间的数据交换问题而设计的。它支持将大量结构化数据导入到 Hadoop 中进行大数据分析,同时也能够将处理后的结果导回 RDBMS。 2. **版本信息**:1.4.2...
Oozie是Hadoop的工作流调度器,用于管理Hadoop作业(包括MapReduce、Pig、Hive、Sqoop等)和Spark作业的调度。配置Oozie时,需要设置Hadoop和Spark的相关路径,并创建Oozie数据库。 Kafka是一个分布式流处理平台,...
第1章 数据转换工具Sqoop 1.02_02_01_01 大数据...3.02_02_03_03 大数据Hadoop常用三种调度框架讲解 网页.mp4 3.02_02_03_04 Oozie 功能架构及三大Server讲解 网页.mp4 3.02_02_03_05 Oozie安装部署讲解一 网页.mp4
+ 提交 oozie 调度文件到 hdfs 指定路径执行命令:hadoop fs –put oozie_run /tmp/ 上传路径在 job.properties 文件中 filepath,oozie.coord.application.path 两个属性指定。 + 提交并执行调度任务:进入 oozie...
1. **工作流管理**:Oozie支持定义和执行复杂的工作流程,这些流程可以包含Hadoop MapReduce、Pig、Hive、 Sqoop等任务,以及外部系统的命令行操作。 2. **协调器作业**:允许基于时间或数据可用性来调度工作流程,...
3. **ShareLib**:Oozie 的共享库,包含了预装的 Hadoop 生态系统动作(如 Hive, Pig, Sqoop 等),使得用户可以直接在工作流中使用这些工具,无需额外配置。 4. **Web UI**:提供了用户界面,方便管理员和用户监控...
1. **工作流管理系统:** Oozie 是一个开源的工作流调度系统,它能够管理和调度 Hadoop 生态系统中的各种作业,包括 MapReduce、Pig、Hive、Sqoop、Java 可执行程序、shell 脚本等。它为大数据处理提供了统一的控制层...
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, ...
1. **action节点**:工作流中的基本单元,可以是Hadoop MapReduce、Pig、Hive、Sqoop等作业。 2. **start节点**:工作流的起点。 3. **end节点**:工作流的终点,表示所有任务完成。 4. **Kill节点**:当工作流遇到...
在大数据处理领域,Oozie是一个不可或缺的组件,它是一个工作流调度系统,用于管理Hadoop作业。然而,有时候用户可能会遇到Oozie的Web用户界面(UI)无法正常显示的问题。这时,Oozie_ext-2.2.zip就派上了用场。这个...
2. **任务类型支持**:Oozie支持多种Hadoop任务类型,包括MapReduce、Pig、Hive、Sqoop、Java动作等,覆盖了Hadoop生态系统的大部分任务需求。 3. **表达能力**:Oozie的XML配置支持EL(Expression Language)常量...
- **Oozie**:工作流调度框架,可以管理 Hadoop 上的任务执行顺序,支持复杂的作业流程。 - **Sqoop**:用于在 Hadoop 和关系型数据库之间传输数据的工具,简化了数据迁移过程。 - **Flume**:高效、可靠的服务,...
它支持Hadoop MapReduce、Pig、Hive、Sqoop等多种工具的任务调度,同时也可扩展到其他自定义Java或Shell作业。Oozie与Hadoop紧密结合,可以方便地监控、管理和重试失败的作业,是大数据处理流程自动化的重要工具。 ...
4. **整合Hadoop组件**:Oozie 兼容多种Hadoop组件,如HDFS、MapReduce、Hive、Pig、Sqoop和Spark,这使得它成为Hadoop生态系统中的关键组成部分。 5. **安全性**:Oozie 支持Hadoop的安全特性,如Kerberos认证,...