S-JIS[2013-05-10/2013-10-05] 変更履歴

Asakusa Framework Direct I/O(Maven時代)

Asakusa Framework0.5.0(Maven時代)のDirect I/Oのメモ。


概要

Direct I/OはHDFS(あるいはMapR FSやAmazon S3)のファイルにアクセスするアーキタイプ


開発環境構築(Windows)

Windows7にAsakusaFW 0.5.0の開発環境を構築してみる。
ただしコンパイルが出来るところまで。テスト実行は(Hadoopが必要になるので)しない。
(→AsakusaFW 0.5.1・Windows7でテストを実行する方法

AsakusaFW 0.5.0では、Asakusa Frameworkのインストール(ASAKUSA_HOMEの下に必要なライブラリー一式を入れる)は0.4以前と方法が違う。

  1. 環境変数ASAKUSA_HOMEを定義しておく。
    (ASAKUSA_HOMEで指定したディレクトリーにAsakusa Frameworkがインストールされる)
    環境変数名 値の例 備考
    ASAKUSA_HOME D:/cygwin/home/hishidama/asakusa D:/cygwin/home/hishidama」は、Cygwin上のホームディレクトリー($HOME)
  2. Framework Organizerをインストールする。
    1. Framework Organizer利用ガイドから、Framework Organizerのアーカイブ(asakusafw-organizer-0.5.0.tar.gz)をダウンロードする。
    2. Cygwinでアーカイブを解凍する。
      $ cd 展開する場所
      $ tar xf ダウンロードした場所/asakusafw-organizer-0.5.0.tar.gz
      $ ls		…asakusafw-organizerというディレクトリーが作られていることの確認
      asakusafw-organizer
  3. Asakusa Frameworkをインストールする。
    (色々なjarファイルがダウンロードされるので、時間がかかる)
    (これにより、環境変数ASAKUSA_HOME指すディレクトリーの下に色々なファイル・ディレクトリーが配置される)
    $ 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
  4. Asakusa Frameworkの開発用プロジェクト(ディレクトリー)を作成する。
    $ cd ワークスペースのディレクトリー
    $ mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml
    Choose archetype:
    1: http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml -> com.asakusafw:asakusa-archetype-windgate (-)
    2: http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml -> com.asakusafw:asakusa-archetype-thundergate (-)
    3: http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml -> com.asakusafw:asakusa-archetype-directio (-)
    3 Direct I/Oを選択。
    Choose version:
    1: 0.5-SNAPSHOT
    2: 0.5.0
    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 パッケージ名。
    デフォルトはグループ名と同一。
  5. ダミーファイルを作成する。(→ダミーファイルが必要な理由
    $ mkdir -p $ASAKUSA_HOME/dmdl/plugin
    $ touch $ASAKUSA_HOME/dmdl/plugin/dummy.jar
  6. Eclipseの設定を生成する。
    $ cd afw-dio05/
    $ mvn eclipse:eclipse

Windowsでデータモデルの生成が出来るようにする

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

Direct I/Oへ戻る / AsakusaFW目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま