Asakusa Framework0.2.1をWindowsにインストールして動かす場合によく出るエラーのメモ。
(0.7.1では変なことをしなくてもWindowsでフローのテストが出来る→スモールジョブ実行エンジン
[2014-12-13])
|
Asakusa Framework0.2.1をWindowsで動かそうとすると色々環境整備しないといけない為、整備し忘れるとテスト実行時にエラーが出る。
そんなエラーをまとめてみた。
エラー内容 | エラーの説明と対処法 |
---|---|
Exception in thread "main" java.lang.RuntimeException: not found resource: init/experimental/bin/hadoop_job_run.win.sh |
BridgeShellの実行時の例外。 hadoop_job_run.win.shが見つからない。 BridgeSehllでは、コピー元ファイルが(リソースとして)classesにあるという前提だが、それが見つからない。 |
hadoop_job_run.win.shが入っているソースフォルダーが、「*.shが(classesに)出力されない設定」になっていると考えられるので、出力されるよう変更する。 →initのビルドパスの編集 |
|
java.io.IOException: Cannot run program "C:\〜\asakusa\experimental\bin\hadoop_job_run.sh": CreateProcess error=193, %1 |
ジョブ・バッチのJUnitテスト実行時の例外。 hadoop_job_run.shが実行できない。 (ファイルは見つけたが、実行可能ファイルでない) (.shと.sh.exeの両方が存在する場合もこの例外になる) |
hadoop_job_run.shを削除し、 hadoop_job_run.sh.exeと hadoop_job_run.win.shを用意する。 →ブリッジシェルの作成 |
|
java.io.IOException: Cannot run program "C:\〜\asakusa\experimental\bin\hadoop_job_run.sh": CreateProcess error=2 |
ジョブ・バッチのJUnitテスト実行時の例外。 hadoop_job_run.sh(およびhadoop_job_run.sh.exe)が見つからない。 |
対処方法は同上。 | |
java.io.IOException: Cannot run program "chmod": CreateProcess error= 2 |
ジョブ・バッチのJUnitテスト実行時の例外。 chmodが見つからない。 |
chmodはCygwinのを使うので、CygwinのchmodがPATHに含まれていないと考えられる。 環境変数PATHに「 ;C:\cygwin\bin 」を追加する。(Eclipseには、Eclipseを再起動しないと反映されない) |
|
java.lang.AssertionError: Hadoopジョブの実行に失敗しました (exitCode=WordCountJobTest_0, flowId=1, command="[Ljava.lang.String;@10aefdb") Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/lib/output/MultipleOutputs |
ジョブ・バッチのJUnitテスト実行時の例外。 MultipleOutputsクラスが見つからない。 環境変数HADOOP_HOMEがHadoop-0.20.2を指しているとこの例外が発生する。 (AsakusaFWはCDH3が対象であり、CDH3はHadoop-0.20.2にパッチを当てている) |
CDH3環境を構築し、HADOOP_HOMEがそこを指すようにする。[/2011-11-16] | |
java.lang.AssertionError: Hadoopジョブの実行に失敗しました (exitCode=WordCountJobTest_0, flowId=1, command="[Ljava.lang.String;@d0726d") Exception in thread "main" java.lang.IncompatibleClassChangeError:
Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected |
ジョブ・バッチのJUnitテスト実行時の例外。 環境変数HADOOP_HOMEがHadoop-0.21.0を指しているとこの例外が発生する。 (JobContextは、Hadoop0.20ではクラスだが0.21ではインターフェースになったらしい) |
対処方法は同上。 | |
java.lang.AssertionError: Hadoopジョブの実行に失敗しました (exitCode=WordCountJobTest_0, flowId=127, command="[Ljava.lang.String;@4eb98b") org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not
exist: file:/ C:/cygwin/home/ユーザー/input/file01 |
ジョブ・バッチのJUnitテスト実行時の例外。 Hadoopの中で入力ファイルが見つからない。 (AsakusaFWは実行前に“ホームディレクトリー”の下に入力ファイルを作成するが、 WindowsのホームディレクトリーとHadoop(Cygwin)のホームディレクトリーが異なっているので不一致になる。 この場合、「C:\Documents and Settings\ユーザー」の下に入力ファイルのディレクトリーが作られていることだろう) |
実行構成のVM引数に「-Duser.home=C:/cygwin/home/ユーザー 」を指定する。(AsakusaFWに対し、Cygwinでログインした際のホームディレクトリーを指定する) |
|
java.lang.AssertionError: Hadoopジョブの実行に失敗しました (exitCode=WordCountJobTest_0, flowId=127, command="[Ljava.lang.String;@f4d6b3") org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory result already exists |
ジョブ・バッチのJUnitテスト実行時の例外。 Hadoopの出力先ディレクトリーが存在している。 (Hadoopでは、出力先が既に存在しているとこのようなエラーになる) (AsakusaFWは実行前に“ホームディレクトリー”の下にある出力先をクリアするが、 WindowsのホームディレクトリーとHadoop(Cygwin)のホームディレクトリーが異なっているので不一致になる) |
対処方法は同上。 |