oozie+sqoop:jdbc驱动程序jar位置

5t7ly7z5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(351)

我有一个基于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操作运行相同的命令时,我得到“couldnotloaddb driver类:oracle.jdbc.oracledriver”
我读过这篇关于使用共享libs的文章,当我们讨论我的任务/操作/工作流特定依赖项时,这对我来说很有意义。但我认为jdbc驱动程序安装是对sqoop的扩展,因此我认为它属于sqoop安装库。
现在的问题是,当sqoop看到我放在lib文件夹中的ojdbc6 jar时,为什么我的oozie工作流没有看到它?
这是意料之中的事还是我遗漏了什么?
另外,你们认为jdbc驱动程序jar的合适位置在哪里?
提前谢谢!

6ojccjat

6ojccjat1#

jdbc驱动程序jar(以及它所依赖的任何jar)应该放在hdfs上的oozie sharelib文件夹中。我运行的是hortonworks数据平台1.2,而不是cloudera 4.2,因此详细信息可能会有所不同,但我的jdbc驱动程序位于 /user/oozie/share/lib/sqoop . 这应该允许您通过oozie使用jdbc运行sqoop。
无需在数据节点上的sqoop库中放入jdbc驱动程序jar。在我的设置中,我不能运行一个简单的 sqoop eval 从我的数据节点上的命令行。我理解你为什么认为这样行得通的逻辑。jdbc驱动程序jar需要在hdfs上的原因是所有数据节点都可以访问它。你的解决方案应该达到同样的目标。我对oozie的内部工作还不够熟悉,无法解释为什么使用sharelib可以工作,但您的解决方案却不能。

nnsrf1az

nnsrf1az2#

我也面临着同样的问题,但却找不到答案 mysql jar . 我在这本书中使用了cloudera4.4 oozie admin -oozie http://localhost:11000/oozie -sharelibupdate 命令无效
为了解决这个问题,我采取了以下步骤:
在中创建用户 Huehdfs 并提供管理员权限
使用 Hue UI 上传 jar 进入
/user/oozie/share/lib/sqoop hdfs 路径或您可以使用以下命令: hadoop put /var/lib/sqoop2/mysql-connector-java.jar /user/oozie/share/lib/sqoop 一旦 jar 是否放置运行 oozie 命令。

l2osamch

l2osamch3#

如果您使用的是cdh-5,那么jdbc驱动程序jar(以及它所依赖的任何jar)应该放在hdfs上的“/user/oozie/share/lib/lib\u timestamp/sqoop”文件夹中。

pzfprimi

pzfprimi4#

在cdh5中,应该将jar放在“/user/oozie/share/lib/lib{timestamp}/sqoop”中,然后必须更新sharelib或重新启动oozie。
更新sharelib: oozie admin -oozie http://localhost:11000/oozie -sharelibupdate

相关问题