Oozie + Sqoop:JDBC驱动程序Jar位置

问题描述 投票:5回答:4

我有一个基于6节点cloudera的hadoop集群,我正在尝试从oozie中的sqoop操作连接到oracle数据库。

我已将我的ojdbc6.jar复制到sqoop lib位置(对我来说恰好位于:/opt/cloudera/parcels/CDH-4.2.0-1.cdh4.2.0.p0.10/lib/sqoop/lib/ )在所有节点上,并验证我可以从所有6个节点运行一个简单的'sqoop eval'。

现在,当我使用Oozie的sqoop操作运行相同的命令时,我得到“无法加载db驱动程序类:oracle.jdbc.OracleDriver”

我已经阅读了有关使用共享库的this article,当我们讨论我的任务/操作/工作流特定依赖项时,它对我有意义。但是我看到一个JDBC驱动程序安装作为sqoop的扩展,所以我认为它属于sqoop安装库。

现在的问题是,虽然sqoop看到这个ojdbc6 jar我已经放入它的lib文件夹,为什么我的Oozie工作流程看不到它?

这是预期的事情还是我错过了什么?

顺便说一下,你怎么看待JDBC驱动程序jar的适当位置?

提前致谢!

hadoop dependencies cloudera sqoop oozie
4个回答
7
投票

JDBC驱动程序jar(以及它所依赖的任何jar)应该放在HDFS上的Oozie sharelib文件夹中。我正在运行Hortonworks Data Platform 1.2而不是Cloudera 4.2所以细节可能会有所不同,但我的JDBC驱动程序位于/user/oozie/share/lib/sqoop。这应该允许您通过Oozie使用JDBC运行Sqoop。

没有必要在数据节点上的sqoop lib中放入JDBC驱动程序jar。在我的setupt中,我无法从数据节点上的命令行运行简单的sqoop eval。我理解为什么你认为这会起作用的逻辑。 JDBC驱动程序jar需要在HDFS上的原因是所有数据节点都可以访问它。您的解决方案应该实现相同的目标。我不太熟悉Oozie的内部工作原理,说明为什么使用sharelib有效但你的解决方案却没有。


5
投票

在CDH5中,您应该将jar放到'/ user / oozie / share / lib / lib _ $ {timestamp} / sqoop',然后,您必须更新sharelib或重新启动oozie。

更新sharelib:

oozie admin -oozie http://localhost:11000/oozie -sharelibupdate


1
投票

如果您使用的是CDH-5,则JDBC驱动程序jar(以及它所依赖的任何jar)应该放在HDFS上的'/ user / oozie / share / lib / lib_timestamp / sqoop'文件夹中。


0
投票

我面临同样的问题,它无法找到mysql jar。我在这个甚至oozie admin -oozie http://localhost:11000/oozie -sharelibupdate命令使用cloudera 4.4将无法正常工作

为了解决这个问题,我遵循了以下步骤:

  1. 使用Huehdfs中创建用户并提供管理员权限
  2. 使用Hue UIjar上传到/user/oozie/share/lib/sqoop hdfs路径,或者您可以使用以下命令:

hadoop put /var/lib/sqoop2/mysql-connector-java.jar /user/oozie/share/lib/sqoop

  1. 放置jar后,运行oozie命令。
© www.soinside.com 2019 - 2024. All rights reserved.