2016-04-05 6 views
1

私はCentOS 6.7でHDP 2.4を使用しています。パッケージのインストール中にOozie/Sqoop jarの場所を設定しないでください。

私はAmbariでクラスタを作成しました。そのため、OozieはAmbariによってインストールおよび設定されました。

jarファイルの場所に関連するOozie/Sqoopを実行中に2つのエラーが発生しました。最初のものはpostgresql-jdbc.jarで、SqoopジョブはPostgresから徐々にインポートされています。私は、HDFSにpostgresql-jdbc.jarファイルを追加し、workflow.xmlでそれを指摘:

<file>/user/hdfs/sqoop/postgresql-jdbc.jar</file> 

それは問題を解決しました。しかし、2番目のエラーは懸念しているようですkite-data-mapreduce.jar。ただし、このファイルのために同じことをやって:

<file>/user/hdfs/sqoop/kite-data-mapreduce.jar</file> 

問題解決していないようです:

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], main() threw exception, org/kitesdk/data/DatasetNotFoundException java.lang.NoClassDefFoundError: org/kitesdk/data/DatasetNotFoundException

それは、これが自動的にAmbariによって構成されていないことを奇妙に思えるし、我々はjarファイルをコピーする必要があることをエラーが発生するとHDFSに変換されます。

これは正しい方法ですか、設定の一部を忘れましたか?

+1

私はあなたのワークフローのベースパスの 'lib'ディレクトリにこれらのjarファイルを追加するべきだと思います。ベースパスは、workflow.xmlが格納されているディレクトリです。このディレクトリを作成し、ワークフローに必要なすべてのカスタムjarを格納する必要があります。クラスパスにロードされます。 – YoungHobbit

+0

@YoungHobbit、あなたが説明したように 'lib'ディレクトリを使いました。結果は同じです。前と同じようにJARファイルがロードされているのが見えますが、まだ 'org/kitesdk/data/DatasetNotFoundException'があります。この例外は、元の表に新しい列がない場合は発生しません。その場合、スケジュールどおりに作業が実行され、sqoopはインポートする新しい行がないと言うだけです。しかし、テーブルに新しい行を追加すると、この例外が発生します。私はsqoopジョブを(oozieの代わりに)直接実行することができ、それは正常に実行されるので、奇妙です。 –

+1

OK、JARを追加した後に実際に変更が加えられていることに気付きました。例外は 'org/kitesdk/data/mapreduce/DatasetKeyOutputFormat'であり、JARファイルを追加した後は' org/kitesdk/data/DatasetNotFoundException'になります。おそらく他のJARファイルが必要です。 –

答えて

2

これは、クラスパスにjarファイルが存在しないために発生しています。 job.propertiesファイルにoozie.use.system.libpath=trueというプロパティを使用することをお勧めします。すべてのsqoop関連のjarファイルはクラスパスに自動的に追加されます。その後、ワークフローアプリケーションパスのlibディレクトリに必要なカスタムjarだけを追加します。すべてのsqoop関連のjarファイルは、/user/oozie/share/lib/lib_<timestamp>/sqoop/*.jarから追加されます。

関連する問題