gpt4 book ai didi

hadoop - 在 Hadoop 集群上使用 Oozie 运行 Sqoop Action 时出现问题

转载 作者:可可西里 更新时间:2023-11-01 15:14:53 25 4
gpt4 key购买 nike

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

Action

ID 状态分机 ID 分机状态错误代码

0000037-140930230740727-oozie-oozi-W@:start: OK - OK -

0000037-140930230740727-oozie-oozi-W@sqoop-load ERROR job_1412278758569_0002 FAILED/KILLEDJA018

0000037-140930230740727-oozie-oozi-W@sqoop-load-fail OK - OK 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:35,586 WARN CoordActionUpdateXCommand:542 - USER[ambari-qa] GROUP[-] TOKEN[] APP[sqoop-workflow] JOB[0000015-141002171510902-oozie-oozi-W] Action [-] E1100: 执行前命令前提条件不成立, [, coord action is null], 错误代码: E1100

如您所见,我正在以“ super 用户”身份运行该作业......并且错误完全相同。所以这不可能是权限问题。我在想除了/user/oozie/share/lib/sqoop 目录中需要的 jar 之外,还需要一个 jar ......也许我需要将 mapreduce 的 jar 复制到/user/oozie/share/lib/mapreduce ?

最佳答案

好的...问题解决了。

显然,Oozie Workflow/Job 的每个组件都必须将其对应的 *.jar 依赖项上传到与这些组件对应的 Oozie SharedLib(/user/oozie/share/lib/) 目录。

我将/usr/lib/sqoop/lib 中的所有 *.jars 复制到 ->/user/oozie/share/lib我将/usr/lib/oozie/lib 中的所有 *.jars 复制到 ->/user/oozie/share/lib/oozie

再次运行作业后......工作流停滞,给出的错误与上次不同......即这次......工作流试图在 HDFS 上创建一个目录已经存在,所以我删除了那个目录,然后再次运行该作业.....

成功!

旁注:人们确实需要编写更好的异常消息。如果这只是少数人的问题……那么好吧……但事实并非如此。如果网上的帮助请求有任何迹象,这个特殊的错误会让很多人感到不适。

关于hadoop - 在 Hadoop 集群上使用 Oozie 运行 Sqoop Action 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26169186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com