我安装了Hadoop、Hive、HBase、Sqoop并将它们添加到 PATH 中。
当我尝试执行sqoop
命令时,出现此错误:
Error: Could not find or load main class org.apache.sqoop.Sqoop
开发环境:
操作系统:Ubuntu 12.04 64 位
Hadoop版本:1.0.4
蜂巢版本:0.9.0
Hbase 版本:0.94.5
Sqoop 版本:1.4.3
确保您的 SQOOP HOME 目录下有 sqoop-1.4.3.jar。
注意:可能是因为你在Sqoop Distribution下下载了错误的发行版
我已经在 CentOS 6.3 上解决了这个问题。
我安装了 Hadoop-1.0.4、hbase-0.94.6、hive-0.10.0、pig-0.11.1、sqoop-1.4.3.bin__hadoop-1.0.0、zookeeper-3.4.5。
我在 sqoop: 上也遇到了同样的问题Error - Could not find the main class: org.apache.sqoop.Sqoop
。
为了解决这个问题,我复制了 jar 文件:sqoop-1.4.3.jar
from$SQOOP_HOME/
到$HADOOP_HOME/lib/
.
希望这能帮助那些在 sqoop 上苦苦挣扎的人使用 hadoop。
不幸的是,我没有为我的问题找到完整的答案。我使用的当前 sqoop 安装版本是 1.4.6 。我不确定 sqoop-1.4.6.tar.gz 如果必须编译源代码,我可以Error - Could not find the main class: org.apache.sqoop.Sqoop
使用以下说明解决相同的错误:
相反,我sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
从 apache sqoop 下载并将其安装在/home/ubuntu/SQOOP/
重命名sqoop-1.4.6.bin__hadoop-2.0.4-alpha
为sqoop
. 我想和 Yarn 一起使用。
然后导出并设置 $SQOOP_HOME 我用这个
export SQOOP_HOME=/home/ubuntu/SQOOP/sqoop/
export PATH=$PATH:$SQOOP_HOME/bin
现在,如果去 $SQOOP_HOME/bin 并尝试
./sqoop help
它应该可以正常工作。
我的问题是该hadoop-env.sh
文件中有这一行:
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar
似乎当您sqoop
在内部调用它时,调用configure-sqoop
它设置HADOOP_CLASSPATH
正确,但是当它(sqoop)调用时hadoop
,hadoop
忽略该变量并将其重置回hadooop-env.sh
解决方法是更改hadoop-env.sh
为具有此行:
export HADOOP_CLASSPATH="${JAVA_HOME}/lib/tools.jar:$HADOOP_CLASSPATH"
@user225003 解决方案神奇地起作用了,我查看了一些文件,这是执行“sqoop”脚本时发生的事情。
“ sqoop ”脚本实质上是从目录执行“ hadoop ”脚本。$HADOOP_COMMON_HOME/bin/
在配置 sqoop 时,在“ sqoop-env.sh
”中我们设置了$HADOOP_COMMON_HOME
hadoop 安装目录。如果您的 sqoop 和 hadoop 安装不在常规位置/usr/local
,我相信sqoop-x.x.x.jar
不在 hadoop 脚本的类路径中。