Apache Oozie在创建mysql DB时抛出classnotfound异常

时间:2014-04-02 11:29:53

标签: hadoop bigdata cloudera oozie

我正在尝试使用apache OOzie的mysql DB。 我的$ OOZIE_HOME是 -bash:/opt/oozie_install/oozie-3.3.0-cdh4.2.2:是目录

但是我几乎在每个可能的地方复制了mysql-connector-java-5.1.29-bin.jar。 就像我在里面复制它一样

/opt/oozie_install/oozie-3.3.0-cdh4.2.2
/opt/oozie_install/oozie-3.3.0-cdh4.2.2/libs
/opt/oozie_install/oozie-3.3.0-cdh4.2.2/libtools
/usr/lib/jvm/jdk/libs
/user/home/hadoop/

但我仍然收到ClassnotFoundException。

java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:473)
        at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:179)
        at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:118)
        at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:64)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:190)
        at org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:462)
        at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:469)

我应该在哪里复制Mysql连接器。

我已经验证了我的oozie-site.xml- enter image description here

我按照以下步骤在Oozie中使用mysql

enter image description here

我的oozie目录看起来像 -

enter image description here

3 个答案:

答案 0 :(得分:1)

您必须将mysql-connector-java-5.1.29-bin.jar复制到/opt/oozie_install/oozie-3.3.0-cdh4.2.2/libext目录,然后重新启动oozie实例。确保mysql用户oozie对数据库oozie具有足够的权限,如果没有,则使用mysql server中的grant命令授予足够的权限。

答案 1 :(得分:0)

我遇到同样的问题最后我通过编辑oozie-env.sh来解决它并在最后导出JAVA_HOME附加JAVA_HOME = / usr / local / jdk1.7 java_home是你自己的javapath

答案 2 :(得分:0)

当我将本地Derby实例转换为MySql时遇到了这个问题。我和其他问题的区别在于我没有安装RPM。我的Oozie实例是在tar.gz文件中预编译的。我不得不将mysql-connector-java-bin.jar复制到oozie-server / lib目录。除了将其复制到lib,libext和libtools目录之外。我不确定是否需要所有这些,但我知道Oozie需要oozie-server / lib才能启动。希望这有助于某人!