我正在使用Sqoop2的最新版本(1.99.7)使用Hadoop进行测试,在运行sqoop2 2服务器时,我得到以下错误:
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服务器运行吗?
发布于 2016-11-23 22:22:20
啊,大部分时间都算出来了。
看起来,sqoop.sh脚本根据环境变量集从类路径加载所有jars。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然后服务器启动了!
我会把这个留在这里以防其他人碰到这个..。
https://stackoverflow.com/questions/40774846
复制相似问题