web-dev-qa-db-ja.com

Oozieでシェルスクリプトを実行する

Oozieを通じてshスクリプトを実行しようとしていますが、問題が発生しています。

プログラム "script.sh"を実行できません(ディレクトリ "/ mapred/local/taskTracker/Dell/jobcache/job_201312061003_0001/attempt_201312061003_0001_m_000000_0/work"):Java.io.IOException:error = 2、No such file or directory。

必要な手順を教えてください。

12
user3072994

このエラーは本当にあいまいです。この問題の解決に役立ったいくつかの問題を次に示します。

-Kerberos化されたクラスターでoozieワークフローを実行している場合は、Kerberos Keytabを引数として渡して認証を行ってください。

...
<Shell>
  <exec>scriptPath.sh</exec>
  <file>scriptPath.sh</file>
  <file>yourKeytabFilePath</file>
</Shell>
...

-シェルファイル(scriptPath.sh)で、最初の行のシェル参照を削除するようにしてください。

#!usr/bin/bash

実際、このシェル参照がすべてのデータノードにデプロイされていない場合、このエラーコードが発生する可能性があります。

7
theudbald

本当にばかげたことが原因で、同じ問題が発生しました。ワークフローにShellブロックを追加し、対応するsendMail.shを選択しましたが、にファイルsendMail.shを追加するのを忘れました[〜#〜]ファイル[〜#〜]+。

enter image description here

3
Ignacio Alorre

次のようなHDFSの完全なパスを与えるようにしてください

<exec>/user/nathalok/run.sh</exec>  
<file>/user/nathalok/run.sh#run.sh</file> 

そして、job.propertiesでライブラリのパスが正しく記述されていることを確認し、workflow.xml

oozie.libpath=hdfs://server/user/oozie/share/lib/lib_20150312161328/oozie
oozie.wf.application.path=hdfs://bcarddev/user/budaledi/Teradata_Flow
1
user3754136

他の人が言ったことに加えて、これはシェルスクリプトが間違った行末を持っていることが原因である可能性があります(WindowsのCRLFなど)。少なくともこれは私に起こりました:)

1
LiMuBei

workflow.xml:

...
<Shell>
  <exec>script.sh</exec>

  <file>scripts/script.sh</file>
</Shell>
...

Hdfsの同じフォルダーにscripts/script.shがあることを確認してください。

1
Oleksii

Oozie Shellアクションは、ランダムなHadoopノードで実行されます。つまり、Oozieサーバーが実行されているマシン上でローカルに実行されません。 Oleksiiが言うように、スクリプトがジョブを実行するノード上にあることを確認する必要があります。

シェルアクションとsshアクションを実行する次の完全な例を参照してください。

https://github.com/airawat/OozieSamples/tree/master/oozieProject/workflowShellActionhttps://github.com/airawat/OozieSamples/tree/master/oozieProject/workflowSshAction

1
Jakub Kotowski

shellファイルがプロジェクトの相関ディレクトリに存在する場合。その後、それはあなたのシェルファイル形式がこのエラーの原因です。 dos2linux:dos2linux xxxx.shを使用して、形式をdosからlinuxに変換する必要があります。

1
SHI YU

また、シェルスクリプトがUNIXに準拠していることを確認してください。これらのシェルスクリプトがWindows環境で記述されている場合、ウィンドウ固有の行末(EOL)が追加され、これらのスクリプトはoozieによって認識されません。そのため、oozie Shellアクションで「そのようなファイルまたはディレクトリが見つかりません」と表示されます。

0
Norman D