Hueを使用してOozieのYARNでSqoopジョブを実行する際に問題が発生しました。私は、Oracleデータベースからテーブルをダウンロードし、そのテーブルをHDFSにアップロードしたいと考えています。私は4ノードで構成されたマルチノードクラスタを持っています。Oozieを使用してYARNでSqoopジョブを実行
私はシンプルなSqoopステートメントを実行したい:
import --options-file /tmp/oracle_dos.txt --table BD.BD_TABLE --target-dir /user/user1/files/user_temp_20160930_30 --m 1
オプションファイルはノード番号1の他のノード上のローカルシステム上に配置されているがを/ tmp /ディレクトリにはオプションファイルを持っていません。私は、SqoopジョブにOozieのワークフローを作成し、それを実行しようとしたが、私はエラーを得た:
3432 [main] ERROR org.apache.sqoop.Sqoop - Error while expanding arguments
java.lang.Exception: Unable to read options file: /tmp/oracle_dos.txt
奇妙な事は仕事が時々OKであるということですが、時には失敗します。ログファイルが私に答えた理由 - OozieはYARNでSqoopジョブを実行します。
リソースマネージャ(YARNのコンポーネント)は、どのノードがSqoopジョブを実行するかを決定します。 Resource Managerが、ノード1(ローカルファイルシステム上のオプションファイルを持つ)がジョブを実行することを決定したとき、すべてがOKです。しかし、RMが他の3つのノードのうちの1つがSqoopジョブを実行することを決定したとき、それは失敗しました。
これは私にとって大きな問題です。私はすべてのノードにオプションファイルをアップロードしたくないからです(なぜなら、1000ノードがあればどうなるでしょうか?)。だから私の質問です - どのノードを使用する必要があるリソースマネージャーに指示する方法はありますか?
あなたは正しいです。ありがとうございました :) –