Заставить Sqoop1 работать с Hadoop2

Мне было трудно заставить sqoop1 работать на hadoop2. Я всегда бегаю инт Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.Tool ошибка, которая предполагает, что sqoop1 пытается использовать hadoop1. Но я скачал банку sqoop1 с выпуском hadoop 2.0.4-alpha с http://www.us.apache.org/dist/sqoop/1.4.5/.

Тогда почему он не работает с hadoop2?

PS: я очень старался, чтобы sqoop2 работал, но я столкнулся с множеством проблем при установке.

Кроме того, этот пост http://mmicky.blog.163.com/blog/static/1502901542013118115417262/ предполагает, что это должно работать, но я продолжаю сталкиваться с этим ClassNotFoundException.

1 ответ

Я понял проблему. Какой бы путь к классу я ни устанавливал, он, вероятно, был переопределен исполняемым файлом hadoop. Поэтому мне пришлось изменить исполняемый файл hadoop в том месте, где он вызывал команду java, и добавить флаг -cp вместе с classpath моих jar hadoop, как показано ниже:

exec "$ JAVA" -cp "$ CLASSPATH: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/common/: /usr/local/Cellar/hadoop/2.4.1/libexec/share/ hadoop / common / lib /: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/hdfs/: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/hdfs/ lib /: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/mapreduce/: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/mapreduce/lib/: / usr / local / Cellar / hadoop / 2.4.1 / libexec / share / hadoop / tools /: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/tools/lib/: / usr / local / Подвал / hadoop / 2.4.1 / libexec / share / hadoop / yarn /: /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/yarn/lib/"$ JAVA_HEAP_MAX $ HADOOP_OPTS $ CLASS" $ @ "

Другие вопросы по тегам