私は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に変換されます。
これは正しい方法ですか、設定の一部を忘れましたか?
私はあなたのワークフローのベースパスの 'lib'ディレクトリにこれらのjarファイルを追加するべきだと思います。ベースパスは、workflow.xmlが格納されているディレクトリです。このディレクトリを作成し、ワークフローに必要なすべてのカスタムjarを格納する必要があります。クラスパスにロードされます。 – YoungHobbit
@YoungHobbit、あなたが説明したように 'lib'ディレクトリを使いました。結果は同じです。前と同じようにJARファイルがロードされているのが見えますが、まだ 'org/kitesdk/data/DatasetNotFoundException'があります。この例外は、元の表に新しい列がない場合は発生しません。その場合、スケジュールどおりに作業が実行され、sqoopはインポートする新しい行がないと言うだけです。しかし、テーブルに新しい行を追加すると、この例外が発生します。私はsqoopジョブを(oozieの代わりに)直接実行することができ、それは正常に実行されるので、奇妙です。 –
OK、JARを追加した後に実際に変更が加えられていることに気付きました。例外は 'org/kitesdk/data/mapreduce/DatasetKeyOutputFormat'であり、JARファイルを追加した後は' org/kitesdk/data/DatasetNotFoundException'になります。おそらく他のJARファイルが必要です。 –