Apache Oozie 在创建 mysql DB 时抛出 classnotfound 异常
Posted
技术标签:
【中文标题】Apache Oozie 在创建 mysql DB 时抛出 classnotfound 异常【英文标题】:Apache Oozie throws classnotfound exception while creating mysql DB 【发布时间】:2014-04-02 11:29:52 【问题描述】:我正在尝试将 mysql DB 与 apache OOzie 一起使用。 我的 $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-
我按照以下步骤在 Oozie 中使用 mysql
我的 oozie 目录看起来像-
【问题讨论】:
【参考方案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 服务器中使用 grant 命令授予足够的权限。
【讨论】:
谢谢,但我没有目录名 libext ,我已经在 oozie-3.3.0-cdh4.2.2 中上传了我的 dir 扩展。 如果丢失,请创建该目录并尝试【参考方案2】:我最终遇到了同样的问题,我通过编辑 oozie-env.sh 并在最后附加 JAVA_HOME 来解决它 export JAVA_HOME=/usr/local/jdk1.7 java_home 是你自己的javapath
【讨论】:
【参考方案3】:我在将本地 Derby 实例转换为 MySql 时遇到了这个问题。我的问题和其他问题之间的区别在于我没有安装 RPM。我的 Oozie 实例是在 tar.gz 文件中预编译的。我不得不将 mysql-connector-java-bin.jar 复制到 oozie-server/lib 目录。这是除了将其复制到 lib、libext 和 libtools 目录之外。我不确定是否需要所有这些,但我知道启动 Oozie 需要 oozie-server/lib。希望这对某人有帮助!
【讨论】:
以上是关于Apache Oozie 在创建 mysql DB 时抛出 classnotfound 异常的主要内容,如果未能解决你的问题,请参考以下文章