sqoop与hadoop集成抛出ClassNotFoundException

时间:2016-12-31 03:06:38

标签: java hadoop sqoop sqoop2

我是hadoop和sqoop的新词。我安装了hadoop 2.7.3(伪模式),它在我的系统上工作正常。

我想要与sqoop集成。我正在使用sqoop sqoop-1.99.7-bin-hadoop200。

1)我提取tar文件并将提取的内容移动到 / usr / local / sqoop

2)将Sqoop路径设置为.bashrc文件。

Snapshot of **.bashrc** file 3)转到 /usr/local/sqoop/server/lib/sqoop.sh服务器启动

并收到以下错误消息。

hadoop_usr@sawai-Lenovo-G580:/usr/local/sqoop/server/lib$ sqoop.sh server start
Setting conf dir: /usr/local/sqoop/conf
Sqoop home directory: /usr/local/sqoop
Starting the Sqoop2 server...
0    [main] INFO  org.apache.sqoop.core.SqoopServer  - Initializing Sqoop server.
34   [main] INFO  org.apache.sqoop.core.PropertiesConfigurationProvider  - Starting config file poller thread
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:38)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:36)
    at org.apache.hadoop.security.UserGroupInformation$UgiMetrics.create(UserGroupInformation.java:121)
    at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:237)
    at org.apache.sqoop.security.authentication.SimpleAuthenticationHandler.secureLogin(SimpleAuthenticationHandler.java:39)
    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.commons.configuration.Configuration
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 9 more

4)所以当我在lib中寻找罐子时,我发现了。以下jar列表。

  

jar in **lib** directory

请告诉我现在哪个罐子丢失了。所以能够运行sqoop并开始学习。

感谢。

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题

为解决这个问题,我在单独的终端中设置了以下变量,它可以正常工作

export HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.1.2/share/hadoop/mapreduce
export HADOOP_COMMON_HOME=/opt/hadoop/hadoop-3.1.2/share/hadoop/common
export HADOOP_HDFS_HOME=/opt/hadoop/hadoop-3.1.2/share/hadoop/hdfs
export YARN_HOME=/opt/hadoop/hadoop-3.1.2/share/hadoop/yarn

答案 1 :(得分:0)

将jar文件从下面复制到$ SQOOP_HOME / server / lib:

cp -R $HADOOP_HOME/share/hadoop/common/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/common/lib/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/hdfs/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/hdfs/lib/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/mapreduce/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/mapreduce/lib/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/yarn/* $SQOOP_HOME/server/lib/
cp -R $HADOOP_HOME/share/hadoop/yarn/lib/* $SQOOP_HOME/server/lib/

删除不同版本的重复jar。

面对同样的问题。我已经配置了与您相同的版本。 这些步骤现在对我有用。

祝你好运!我们在同一页上!

答案 2 :(得分:0)

通过在.bashrc文件中设置以下两个环境变量,解决了这个问题。

export HADOOP_COMMON_HOME=/usr/local/hadoop/share/hadoop/common

export HADOOP_MAPRED_HOME=/usr/local/hadoop/share/hadoop/mapreduce

基本上确保通过sqoop.sh

的这些环境变量可以获得上述答案中提到的公共库

答案 3 :(得分:-1)

请确保classpath中的hadoop-common-0.xx.jar是否能解析classnotfound配置类的异常。

hadoop-common-0.xx.jar将在/ lib。

中提供