0

この質問は、Azure 環境の Hadoop に関連しています。

Runtime.exec() を使用して、reduce 関数でバッチ スクリプトを実行しようとしています。Linux 上の Hadoop では正常に実行されますが、Azure 環境上の Hadoop ではこれを実行できませんでした。デスクトップ (Windows 7) 環境で Runtime.exec() コード スニペットをテストしたところ、問題なく動作しました。Runtime.exec() の後に、サブプロセスの出力ストリームとエラー ストリームを確実に消費するようにしました。

バッチ スクリプトには以下が含まれます (単一のコマンド)。

c:\hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\attempt_201207121317_0024_r_000001_0\work\tool.exe -fc:\hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\work\11_task_201207121317_0024_r_000001.out -ic: \hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\attempt_201207121317_0024_r_000001_0\work\input.txt

分散キャッシュを使用して tool.exe および input.txt ファイルを配布すると、作業ディレクトリからシンボリック リンクが作成されます。tool.exe と input.txt は、ジョブキャッシュ ディレクトリ内の実際のファイルを指しています。

2012-07-16 04:31:51,613 INFO org.apache.hadoop.mapred.TaskRunner: シンボリックリンクを作成しています: /hdfs/mapred/local/taskTracker/distcache/-978619214658189372_-1497645545_209290723/10.73.50.78tool.exe <- \hdfs \mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\attempt_201207121317_0024_r_000001_0\work\tool.exe 2012-07-16 04:31:51,644 INFO org.apache.hadoop.mapred.TaskRunner:シンボリックリンクを作成中/local/hdfsfs /taskTracker/distcache/-4944695173898834237_1545037473_2085004342/10.73.50.78input.txt <- \hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\attempt_2010work\207121400\input_r1_00.txt.txt

レデューサーは、実行時に以下のエラーを出します。

コマンド実行エラー: プログラム "cmd /q /cc:\hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\work\11_task_201207121317_0024_r_0000011513543720767963399.bat" を実行できません: CreateProcess エラー = 2、指定されたファイルが見つかりません

別のケースでは、絶対パスを使用せずに同じことを実行しようとしました。サブプロセスからの出力ストリームを以下に示します。

c:\hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0022\attempt_201207121317_0022_r_000000_0\work>tool.exe -f /hdfs/mapred/local/taskTracker/nabeel/jobcache/job_201207121317_0022/work/1_task_201207121317_0022_r_000000.out -i input. TXT

Azure 環境の Hadoop で、ジョブの作業ディレクトリ パスと分散キャッシュがどのように機能するかわかりません。ここで何か不足している場合 (または)、Azure 環境の Hadoop で Runtime.exec() を使用しているときに注意する必要がある場合は、お知らせください。

ありがとう、

. , ._ 差出人への返信 | グループに返信 | Web 投稿で返信 | 新しいトピックを開始する

4

1 に答える 1

0

私はHadoopに精通していません。しかし、エラーメッセージは明らかなようです。ファイルが存在するかどうかを確認できるとよいでしょう。

c:\hdfs\mapred\local\taskTracker\nabeel\jobcache\job_201207121317_0024\work\11_task_201207121317_0024_r_0000011513543720767963399.bat

よろしくお願いします、

ミン・シュー

于 2012-07-17T05:04:08.240 に答える