启动Sqoop2服务器时无法找到hadoop配置类(1.99.7)

时间:2016-11-23 22:01:27

标签: java hadoop sqoop sqoop2

我正在使用最新版本的Sqoop2(1.99.7)测试Hadoop,并且在运行sqoop2-server时,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at org.apache.sqoop.security.authentication.SimpleAuthenticationHandler.secureLogin(SimpleAuthenticationHandler.java:36)
at org.apache.sqoop.security.AuthenticationManager.initialize(AuthenticationManager.java:98)
at org.apache.sqoop.core.SqoopServer.initialize(SqoopServer.java:57)
at org.apache.sqoop.server.SqoopJettyServer.<init>(SqoopJettyServer.java:67)
at org.apache.sqoop.server.SqoopJettyServer.main(SqoopJettyServer.java:177)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
        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)
        ... 5 more

我目前的设置:

我能想到的最好的是Sqoop没有加载Hadoop类路径,因为所需的JAR似乎位于/ usr / local / hadoop / shared /*.

我在网上找到的大部分文档都是1.99.7之前的版本,但是这个版本的一个主要变化是Sqoop服务器从Tomcat迁移到了Jetty,因此所有的catalina配置选项都没有实际意义。

有人可以帮我弄清楚如何让Sqoop服务器运行吗?

1 个答案:

答案 0 :(得分:2)

啊,大部分都弄清楚了。

看起来sqoop.sh脚本根据环境变量集从类路径加载所有jar。 docker容器具有它要查找的所有环境变量,设置为Hadoop安装的根路径,而脚本期望它们指向包含JAR文件的目录。

HADOOP_PREFIX=/usr/local/hadoop
HADOOP_HDFS_HOME=/usr/local/hadoop
HADOOP_COMMON_HOME=/usr/local/hadoop
HADOOP_YARN_HOME=/usr/local/hadoop
HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
HADOOP_MAPRED_HOME=/usr/local/hadoop

因此,脚本在$ HADOOP_HOME目录和后续子目录中选择此目录,这些子目录也在脚本中调出。

最后一步是编辑sqoop.properties文件并确保mapreduce配置设置为正确的目录:

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/usr/local/hadoop/etc/hadoop

然后服务器启动了!

我会把这个留在这里以防万一其他人遇到这个......