この質問は、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 投稿で返信 | 新しいトピックを開始する