2017-03-09 6 views
1

私はOozieを通じてシェルスクリプトからJavaプログラムを実行していると私はエッジノードからシェルスクリプトを実行すると、私はOozie--のjava:コマンドが見つかりません - シェルのアクション

java: command not found 

以下のエラーが出ますどんな問題も見つけられず、javaクラスは何のエラーもなく実行され、希望の出力も得られます。しかし、Javaコマンドを実行することができない怠惰な仕事です。

oozieの他のすべてのアクションはporperly実行されますが、java行に遭遇すると、前述のエラーがスローされます。私は、HadoopクラスタのすべてのノードにJavaがインストールされていることを理解していますが、なぜこのエラーが発生しますか?以下 は、自分の考えを教えてください、私は私のシェルスクリプト

... 
...  
java -cp $LOCAL_DIR/libs/integration-tools.jar com.audit.reporting.GenerateExcelReport $LOCAL_DIR/input.txt $LOCAL_DIR/ 
... 

で持っているjavaコマンドです。

+1

'java:command not found'は、' PATH'に 'java'コマンドの位置が含まれていないことを一般的に示しています。この環境で 'echo" $ PATH "'を 'echo" $ PATH "とJVMが正常に呼び出される環境で比較してください。 –

+1

...確かにJavaは*インストールされているかもしれませんが、インストールされている場所が現在手元のプロセスのPATHにあるかどうかは疑問です。多くのオペレーティングシステムは、 '/ usr/lib/jvm/java8-jre-bin'のような場所にJVMをインストールします。デーモンはPATHにその場所(正確な関連場所があれば)はありません。 –

+0

ところで、オペレーティングシステムやシェルにとって意味のある変数には、すべての大文字の名前が使用されます。アプリケーションが誤って意味のある名前を上書きしないように、少なくとも1つの小文字の名前はアプリケーション用に予約されています。関連するPOSIX仕様を参照してください。http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html –

答えて

0

は、「修正された問題」私は後で私のDevOpsチームと話をし、Javaのクラスパスがクラスタ内のいくつかのdatanodesに設定されていなかったことがわかりました。これは、シェルアクションを停止して、それらのデータノードでJVMを呼び出すことでした。 クラスパスを修正した後、ジョブは正常に実行されました。 @Charles Duffyに言及しているすべてのコメントが有効です。

-1

hdfsの場所にコードジャーと一緒にintegration-tools.jarがありますか? Oozieは、Javaアクションを実行する任意のノードを選択することができ、その場所でこれらのjarファイルを検索します。

+1

これは、JAR自体が見つからない場合に表示されます。 –

+0

私は2番目の@CharlesDuffyをエラーとして明示しています。つまり、javaがインストールされていないか、javaの場所がクラスパスに設定されていないことを明確に示す 'java:command found'があります。 –

関連する問題