首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动Sqoop2服务器时无法找到hadoop配置类(1.99.7)

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

Stack Overflow用户
提问于 2016-11-23 22:01:26
回答 1查看 1.4K关注 0票数 0

我正在使用Sqoop2的最新版本(1.99.7)使用Hadoop进行测试,在运行sqoop2 2服务器时,我得到以下错误:

代码语言:javascript
复制
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

我目前的设置:

  • 为Hadoop使用最新的https://hub.docker.com/r/sequenceiq/hadoop-docker/映像
  • 下载了最新的Sqoop2二进制文件(http://sqoop.apache.org/),并将它们安装到/usr/lib/sqoop/上运行的容器中
  • 运行/usr/lib/sqoop/bin/sqoop 2-服务器启动

我认为,Sqoop没有加载Hadoop类路径,因为所需的JAR似乎位于/usr/local/hadoop/shared/*。

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

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

EN

回答 1

Stack Overflow用户

发布于 2016-11-23 22:22:20

啊,大部分时间都算出来了。

看起来,sqoop.sh脚本根据环境变量集从类路径加载所有jars。docker容器拥有它正在寻找的所有环境变量,这些变量设置为Hadoop安装的根路径,而脚本则希望它们指向包含JAR文件的目录。

代码语言:javascript
复制
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被设置为正确的目录:

代码语言:javascript
复制
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/usr/local/hadoop/etc/hadoop

然后服务器启动了!

我会把这个留在这里以防其他人碰到这个..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40774846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档