sqoop2在hadoop中找不到log4j2

sqoop2在hadoop中找不到log4j2,hadoop,sqoop,sqoop2,Hadoop,Sqoop,Sqoop2,我正试图在我的ubuntu服务器上安装sqoop2(1.99.7)。我试图按照apache网站上提供的说明进行操作。我有一个工作的hadoop安装,我已经下载并提取了sqoop文件到/usr/local/sqoop位置 tar -xvf sqoop-1.99.7-bin-hadoop200.tar.gz mv sqoop-1.99.7-bin-hadoop200 /usr/local/sqoop 我相信我已经定义了所有的环境变量,特别是HADOOP\u HOME,我认为这是为了指示sqoop在

我正试图在我的ubuntu服务器上安装sqoop2(1.99.7)。我试图按照apache网站上提供的说明进行操作。我有一个工作的hadoop安装,我已经下载并提取了sqoop文件到
/usr/local/sqoop
位置

tar -xvf sqoop-1.99.7-bin-hadoop200.tar.gz
mv sqoop-1.99.7-bin-hadoop200 /usr/local/sqoop
我相信我已经定义了所有的环境变量,特别是
HADOOP\u HOME
,我认为这是为了指示sqoop在哪里查找jar文件

但是,当我尝试使用
sqoop2工具verify
验证安装时,我得到以下输出

Setting conf dir: /usr/local/sqoop/bin/../conf
Sqoop home directory: /usr/local/sqoop
Sqoop tool executor:
        Version: 1.99.7
        Revision: 435d5e61b922a32d7bce567fe5fb1a9c0d9b1bbb
        Compiled on Tue Jul 19 16:08:27 PDT 2016 by abefine
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Running tool: class org.apache.sqoop.tools.tool.VerifyTool
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.tools.tool.VerifyTool.runTool(VerifyTool.java:36)
        at org.apache.sqoop.tools.ToolRunner.main(ToolRunner.java:72)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.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)
        ... 5 more
不知为什么,它找不到log4j2配置文件。我不知道为什么会这样

这个问题与这个问题类似,但提供的解决方案没有帮助。如果我修改
sqoop.properties
文件并直接指向hadoop配置目录
/usr/local/hadoop/etc/hadoop
(这是我的
core site.xml
hdfs site.xml
等所在的位置),我会继续得到上面的错误

编辑

grep-r“org.apache.hadoop.conf.Configuration”/usr/local/hadoop|grep jar的输出

Binary file /usr/local/hadoop/share/hadoop/common/sources/hadoop-common-2.8.0-sources.jar matches
Binary file /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.0.jar matches
Binary file /usr/local/hadoop/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/hadoop-common-2.8.0.jar matches
Binary file /usr/local/hadoop/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/hadoop-common-2.8.0.jar matches

properties是一个Java属性文件。环境变量应在sqoop-env.sh中定义或使用export命令进行设置

在执行sqoop命令之前,您是否可以尝试执行以下环境变量导出命令,如果可以,您可以将这些命令添加到sqoop-env.sh环境文件中

export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_HDFS_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_YARN_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
确保/usr/local/hadoop是正确的

编辑- 如果查看的最后一行,它是一个bash脚本,在内部使用hadoop命令调用sqoop类,因此如果hadoop_COMMON_HOME env变量正确,所有与hadoop相关的lib都将加载到sqoop环境中


您能在此服务器上执行hadoop命令吗?能否共享
${hadoop\u COMMON\u HOME}/bin/hadoop fs-ls/
的输出;如果这样做有效,这个错误可能是由于兼容性造成的-Sqoop版本可能与Hadoop不兼容

Sqoop.properties是一个Java属性文件。环境变量应在sqoop-env.sh中定义或使用export命令进行设置

在执行sqoop命令之前,您是否可以尝试执行以下环境变量导出命令,如果可以,您可以将这些命令添加到sqoop-env.sh环境文件中

export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_HDFS_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_YARN_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
确保/usr/local/hadoop是正确的

编辑- 如果查看的最后一行,它是一个bash脚本,在内部使用hadoop命令调用sqoop类,因此如果hadoop_COMMON_HOME env变量正确,所有与hadoop相关的lib都将加载到sqoop环境中


您能在此服务器上执行hadoop命令吗?能否共享
${hadoop\u COMMON\u HOME}/bin/hadoop fs-ls/
的输出;如果这样做有效,这个错误可能是由于兼容性造成的-Sqoop版本可能与Hadoop不兼容

谢谢你的建议,但这并不能解决问题。我运行了所有这些导出,但没有任何效果(相同的错误)。我还可以确认
/usr/local/hadoop
是正确的。如果您在设置env变量后收到不同的异常,或者仍然收到相同的错误消息,您能否共享-grep-r“org.apache.hadoop.conf.Configuration”/usr/local/hadoop | grep jaryes,
hadoop fs-ls/
调用的输出正常。我怀疑这可能是你说的版本问题。我安装的Hadoop版本是2.8.0。我认为它会很好,因为它说>=2.6.0。是的,它可能是,尝试一些sqoop其他版本。谢谢你的建议,但这并不能解决问题。我运行了所有这些导出,但没有任何效果(相同的错误)。我还可以确认
/usr/local/hadoop
是正确的。如果您在设置env变量后收到不同的异常,或者仍然收到相同的错误消息,您能否共享-grep-r“org.apache.hadoop.conf.Configuration”/usr/local/hadoop | grep jaryes,
hadoop fs-ls/
调用的输出正常。我怀疑这可能是你说的版本问题。我安装的Hadoop版本是2.8.0。我认为它会很好,因为它说>=2.6.0。是的,它可能是,尝试一些sqoop其他版本。