Asakusa Framework0.5.0(Maven時代)のDirect I/Oのメモ。
|
|
Direct I/OはHDFS(あるいはMapR FSやAmazon S3)のファイルにアクセスするアーキタイプ。
Windows7にAsakusaFW 0.5.0の開発環境を構築してみる。
ただしコンパイルが出来るところまで。テスト実行は(Hadoopが必要になるので)しない。
(→AsakusaFW 0.5.1・Windows7でテストを実行する方法)
AsakusaFW 0.5.0では、Asakusa Frameworkのインストール(ASAKUSA_HOMEの下に必要なライブラリー一式を入れる)は0.4以前と方法が違う。
| 環境変数名 | 値の例 | 備考 |
|---|---|---|
ASAKUSA_HOME |
D:/cygwin/home/hishidama/asakusa |
「D:/cygwin/home/hishidama」は、Cygwin上のホームディレクトリー($HOME) |
$ cd 展開する場所 $ tar xf ダウンロードした場所/asakusafw-organizer-0.5.0.tar.gz
$ ls …asakusafw-organizerというディレクトリーが作られていることの確認 asakusafw-organizer
$ cd asakusafw-organizer $ mvn package antrun:run
$ ls $ASAKUSA_HOME …インストールされた内容の確認 batchapps core ext scripts testing VERSION windgate-ssh yaess-hadoop bulkloader directio log temp tools windgate yaess $ cat $ASAKUSA_HOME/VERSION # Asakusa Framework Build Information asakusafw.version=0.5.0 asakusafw.build.timestamp=20130509-1849 asakusafw.build.java.version=1.6.0_33 asakusafw.git.commit=457ad18ca4ef4f63a29b93adfcc7f4ba991bba30 asakusafw.git.branch=0.5-release
$ cd ワークスペースのディレクトリー $ mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml
Choose archetype: |
3 |
Direct I/Oを選択。 |
Choose version: |
2 |
AsakusaFW 0.5.0を使用。 |
Define value for property 'groupId': : |
com.example |
プロジェクトのグループ名。 |
Define value for property 'artifactId': : |
afw-dio05 |
プロジェクトのディレクトリー名。 |
Define value for property 'version':
1.0-SNAPSHOT: : |
1.0 |
今回作る自分のプロジェクトのバージョン。 どんな値でもいいが、ファイル名の一部に使われる。 |
Define value for property 'package':
com.example:
: |
com.example |
パッケージ名。 デフォルトはグループ名と同一。 |
$ mkdir -p $ASAKUSA_HOME/dmdl/plugin $ touch $ASAKUSA_HOME/dmdl/plugin/dummy.jar
$ cd afw-dio05/ $ mvn eclipse:eclipse
Asakusa FrameworkはWindowsには正式対応していないのでバグとは言えないかもしれないが、
Windows上でAsakusaFW 0.5.0のデータモデルを生成しようとするとエラーが発生する。
$ mvn generate-sources
〜
[java] usage: java -classpath ... com.asakusafw.dmdl.java.Main -output -package [-plugin ] -source [-sourceencoding ] [-targetencoding ]
[java] -output output directory location
[java] -package package name of output Java files
[java] -plugin DMDL processor plug-ins
[java] -source source file or source directory paths
[java] -sourceencoding input DMDL charset encoding
[java] -targetencoding output Java charset encoding
[java] org.apache.commons.cli.MissingArgumentException: Missing argument for option: plugin
[java] at org.apache.commons.cli.Parser.processArgs(Parser.java:343)
[java] at org.apache.commons.cli.Parser.processOption(Parser.java:393)
[java] at org.apache.commons.cli.Parser.parse(Parser.java:199)
[java] at org.apache.commons.cli.Parser.parse(Parser.java:85)
[java] at com.asakusafw.dmdl.java.Main.configure(Main.java:128)
[java] at com.asakusafw.dmdl.java.Main.main(Main.java:101)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.969s
[INFO] Finished at: Fri May 10 21:02:41 JST 2013
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (asakusa-generate-sources) on project afw-dio05: An Ant BuildException has occured: The following error occurred while executing this line:
[ERROR] D:\cygwin\home\hishidama\asakusa\scripts\asakusa-build.xml:59: Java returned: 1
[ERROR] around Ant part ...<ant antfile="D:/cygwin/home/hishidama/asakusa/scripts/asakusa-build.xml">... @ 6:77 in D:\data\workspace\ws_hadoop1\afw-dio05\target\antrun\build-main.xml
「-plugin」という必須オプションに値が指定されていないということらしい。
asakusa-build.xmlの59行目付近を見てみると
<java classname="com.asakusafw.dmdl.java.Main" classpath="${compile_classpath}" fork="true" failonerror="true">
〜
<arg value="-plugin" />
<arg pathref="dmdl-ext-plugins" />
</java>
となっており、「-plugin」のパス参照先のdmdl-ext-pluginsは以下の様になっている。
<path id="dmdl-ext-plugins">
<fileset dir="${env.ASAKUSA_HOME}/dmdl/plugin" includes="*.jar" erroronmissingdir="false" />
</path>
AsakusaFW 0.5.0から、DMDLコンパイルの際にASAKUSA_HOME/dmdl/plugin/の下にあるjarファイルをクラスパスに含めるようになったらしい。(ユーザー独自のjarファイルを入れやすくする為)
が、Windows版ではこの場所に何らかのファイルが無いとエラーになる、という事のようだ。
したがって、適当なファイルを(0バイトでよいので)作ってやると、DMDL生成が正常に終了するようになる。
$ mkdir -p $ASAKUSA_HOME/dmdl/plugin $ touch $ASAKUSA_HOME/dmdl/plugin/dummy.jar