在hadoop集群上使用oozie运行sqoop操作的问题

x6yk4ghg  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(350)

我正在尝试使用hadoop集群在oozie中成功运行sqoop操作。每当我检查作业状态时,oozie都会返回以下状态更新:

行动

id status ext id ext status err代码

0000037-140930230740727-oozie-oozi-w@:开始:确定-确定-

0000037-140930230740727-oozie-oozi-w@sqoop-load 错误作业\u 14122787569 \u 0002失败/killedja018

0000037-140930230740727-oozie-oozi-w@sqoop-load-fail 正常-正常e0729

这让我相信我的工作流程并没有什么问题,相反,我错过了一些许可。
我的jobs.properties配置:

nameNode=hdfs://mynamenode.demo.com:8020
    jobTracker=mysnamenode.demo.com:8050
    queueName=default
    workingRoot=working_dir
    jobOutput=/user/test/out
    oozie.use.system.libpath=true
    oozie.libpath=/user/oozie/share/lib
    oozie.wf.application.path=${nameNode}/user/test/${workingRoot}

myworkflow.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns='uri:oozie:workflow:0.4' name='sqoop-workflow'>
<start to='sqoop-load' />

<action name="sqoop-load">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>

<prepare>
<delete path="${nameNode}/user/test/${workingRoot}/out-data/sqoop" />
<mkdir path="${nameNode}/user/test/${workingRoot}/out-data"/>
</prepare>

<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>

<command>import --connect jdbc:oracle:thin:@10.100.50.102:1521/db --username myID --password myPass --table SomeTable -target-dir /user/test/${workingRoot}/out-data/sqoop    </command>

</sqoop>
<ok to="end"/>
<error to="sqoop-load-fail"/>
</action>
<kill name="sqoop-load-fail">
<message>Sqoop export failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>

<end name='end' />
</workflow-app>

我采取的步骤:
查找错误…没有发现比我前面提到的更多的错误
检查所需的ojdbc.jar文件是否可执行,以及/user/oozie/share/lib/sqoop目录是否可在hdfs上访问
正在检查是否存在可能导致问题的目录
我一直在搜索互联网和我的日志文件的答案…任何提供的帮助将不胜感激。。。。
更新:
好吧…我将/usr/lib/sqoop/lib中的所有jar添加到/user/oozie/share/lib/sqoop中。我还是会犯同样的错误。正在检查作业日志…有一些我以前没有发布的内容:
2014-10-03 11:16:35586警告协调更新excommand:542 - 用户[ambari qa]组[-]令牌[]应用程序[sqoop工作流]作业[0000015-141002171510902-oozie-oozi-w]操作[-]e1100:执行前命令前提条件不成立,[,坐标操作为空],错误代码:e1100
正如你所看到的,我正在以“超级用户”的身份运行这个作业……错误是完全相同的。所以这不是权限问题。我在想,除了/user/oozie/share/lib/sqoop目录中的jar之外,还有一个jar是必需的…..也许我需要将mapreduce的jar复制到/user/oozie/share/lib/mapreduce中?

fxnxkyjh

fxnxkyjh1#

我也面临同样的问题。只是添加一个 <archive>path/in/hdfs/ojdbc6.jar#ojdbc6.jar</archive> 中的my workflow.xml <sqoop> </sqoop> 标签对我有用。这里有参考资料。

ldioqlga

ldioqlga2#

好的…问题解决了。
显然,oozie工作流/作业的每个组件都必须将其对应的*.jar依赖项上载到与这些组件对应的oozie sharedlib(/user/oozie/share/lib/)目录中。
我将/usr/lib/sqoop/lib中的所有*.jar复制到->/user/oozie/share/lib我将/usr/lib/oozie/lib中的所有*.jar复制到->/user/oozie/share/lib/oozie
再次运行作业后…工作流暂停,给出的错误与上一次不同…也就是说,这次…工作流试图在已经存在的hdfs上创建一个目录,因此我删除了该目录,然后再次运行作业。。。。。
成功!
旁注:人们确实需要编写更好的异常消息。如果这只是一个问题,一些人有…那么好…但这根本不是事实。如果在线求助是一种迹象的话,这个特殊的错误会让很多人感到不适。

相关问题