Asakusa on M3BPリファレンス¶
この文書では、Asakusa on M3BPが提供するGradle PluginやDSLコンパイラの設定、およびバッチアプリケーション実行時の設定などについて説明します。
Asakusa on M3BP Gradle Plugin リファレンス¶
Asakusa on M3BP Gradle Pluginが提供する機能とインターフェースについて個々に解説します。
プラグイン¶
asakusafw-m3bp
アプリケーションプロジェクトで、Asakusa on M3BPのさまざまな機能を有効にする。
このプラグインは
asakusafw-sdk
プラグインやasakusafw-organizer
プラグインを拡張するように作られているため、それぞれのプラグインも併せて有効にする必要がある(apply plugin: 'asakusafw-m3bp'
だけではほとんどの機能を利用できません)。
タスク¶
m3bpCompileBatchapps
DSL Compiler for M3BPを利用してDSLをコンパイルする [1] 。
asakusafw-sdk
プラグインが有効である場合にのみ利用可能。attachComponentM3bp
デプロイメントアーカイブにAsakusa on M3BP向けのバッチアプリケーションを実行するためのコンポーネントを追加する。
asakusafw-organizer
プラグインが有効である場合にのみ利用可能。asakusafwOrganizer.m3bp.enabled
にtrue
が指定されている場合、自動的に有効になる。attachM3bpBatchapps
デプロイメントアーカイブに
m3bpCompileBatchapps
でコンパイルした結果を含める。asakusafw-sdk
,asakusafw-organizer
の両プラグインがいずれも有効である場合にのみ利用可能。asakusafwOrganizer.batchapps.enabled
にtrue
が指定されている場合、自動的に有効になる。
[1] | com.asakusafw.gradle.tasks.AsakusaCompileTask |
タスク拡張¶
assemble
デプロイメントアーカイブを生成する。
asakusafw-m3bp
とasakusafw-organizer
プラグインがいずれも有効である場合、m3bpCompileBatchapps
が依存関係に追加される。compileBatchapp
Asakusa DSLコンパイラを使ってバッチアプリケーションのコンパイルを行い、実行可能モジュールを生成する。
asakusafw-m3bp
プラグインが有効である場合、m3bpCompileBatchapps
が依存関係に追加される。jarBatchapp
compileBatchapp
タスクで生成したバッチアプリケーションを含むjarファイルを生成する。asakusafw-m3bp
プラグインが有効である場合、m3bpCompileBatchapps
タスクの生成物がjarファイルの内容に追加される。
規約プロパティ拡張¶
Batch Application Plugin ( asakusafw
) への拡張¶
Asakusa on M3BP Gradle PluginはBatch Application Pluginに対してAsakusa on M3BPのビルド設定を行うための規約プロパティを追加します。この規約プロパティは、 asakusafw
ブロック内の参照名 m3bp
でアクセスできます [2] 。
以下、 build.gradle
の設定例です。
asakusafw {
m3bp {
include 'com.example.batch.*'
option 'm3bp.native.path', '/usr/bin:/usr/local/bin'
}
}
この規約オブジェクトは以下のプロパティを持ちます。
m3bp.version
Asakusa on M3BP のコンポーネントバージョンを保持する。
この値は設定による変更は不可。
既定値: Asakusa on M3BP Gradle Pluginが保持する既定のバージョン
m3bp.outputDirectory
コンパイラの出力先を指定する。
文字列や
java.io.File
などで指定し、相対パスが指定された場合にはプロジェクトからの相対パスとして取り扱う。既定値:
"$buildDir/m3bp-batchapps"
m3bp.include
コンパイルの対象に含めるバッチクラス名のパターンを指定する。
バッチクラス名には
*
でワイルドカードを含めることが可能。また、バッチクラス名のリストを指定した場合、それらのパターンのいずれかにマッチしたバッチクラスのみをコンパイルの対象に含める。
既定値:
null
(すべて)m3bp.exclude
コンパイルの対象から除外するバッチクラス名のパターンを指定する。
バッチクラス名には
*
でワイルドカードを含めることが可能。また、バッチクラス名のリストを指定した場合、それらのパターンのいずれかにマッチしたバッチクラスをコンパイルの対象から除外する。
include
とexclude
がいずれも指定された場合、exclude
のパターンを優先して取り扱う。既定値:
null
(除外しない)m3bp.runtimeWorkingDirectory
実行時のテンポラリワーキングディレクトリのパスを指定する。
パスにはURIやカレントワーキングディレクトリからの相対パスを指定可能。
未指定の場合、コンパイラの標準設定である「
target/hadoopwork
」を利用する。既定値:
null
(コンパイラの標準設定を利用する)m3bp.option
コンパイラプロパティ (コンパイラのオプション設定)を追加する。
後述する コンパイラプロパティ を
<key>, <value>
の形式で指定する [3] 。既定値: (Asakusa on M3BP向けのコンパイルに必要な最低限のもの)
m3bp.batchIdPrefix
Asakusa on M3BP向けのバッチアプリケーションに付与するバッチIDの接頭辞を指定する。
文字列を設定すると、それぞれのバッチアプリケーションは「
<接頭辞><本来のバッチID>
」というバッチIDに強制的に変更される。空文字や
null
を指定した場合、本来のバッチIDをそのまま利用するが、他のコンパイラが生成したバッチアプリケーションと同じバッチIDのバッチアプリケーションを生成した場合、アプリケーションが正しく動作しなくなる。既定値:
"m3bp."
m3bp.failOnError
Asakusa on M3BP向けのコンパイルを行う際に、コンパイルエラーが発生したら即座にコンパイルを停止するかどうかを選択する。
コンパイルエラーが発生した際に、
true
を指定した場合にはコンパイルをすぐに停止し、false
を指定した場合には最後までコンパイルを実施する。既定値:
true
(即座にコンパイルを停止する)
[2] | これらのプロパティは規約オブジェクト com.asakusafw.gradle.plugins.AsakusafwCompilerExtension が提供します。 |
[3] | コンパイラプロパティを指定する方法は他にいくつかの方法があります。詳しくは com.asakusafw.gradle.plugins.AsakusafwCompilerExtension のメソッドの説明を参照してください。 |
Framework Organizer Plugin ( asakusafwOrganizer
) への拡張¶
Asakusa on M3BP Gradle Plugin は Framework Organizer Plugin に対してAsakusa on M3BPのビルド設定を行うための規約プロパティを追加します。この規約プロパティは、 asakusafwOrganizer
ブロック内の参照名 m3bp
でアクセスできます [4] 。
この規約オブジェクトは以下のプロパティを持ちます。
m3bp.enabled
デプロイメントアーカイブにAsakusa on M3BPのコンポーネント群を追加するかどうかを指定する。
true
を指定した場合にはコンポーネントを追加し、false
を指定した場合には追加しない。既定値:
true
(コンポーネント群を追加する)m3bp.useSystemNativeDependencies
デプロイメントアーカイブのAsakusa on M3BPが、実行環境にインストールされたネイティブの依存ライブラリ群を利用するかどうかを指定する。
true
を指定した場合にはインストールされたネイティブの依存ライブラリ群を利用し、false
を指定した場合にはデプロイメントアーカイブにライブラリ群を含めてそちらを利用する。既定値:
false
(実行環境にインストールされたネイティブの依存ライブラリ群を利用しない)Note
この設定に
false
を指定することで、Asakusa on M3BPが利用するboost
などのライブラリをデプロイメントアーカイブに含めることができます。 非標準の実行環境の構成を利用している場合や、独自に入手したライブラリを利用したい場合などにはこの設定にtrue
を指定してください。 また、それぞれの依存ライブラリのバージョンについては、$ASAKUSA_HOME/m3bp/native
以下のライブラリにldd
コマンドなどを利用して確認してください。なお、この設定に
false
を指定しても全ての依存ライブラリが含まれるわけではありません。 詳しくは Asakusa on M3BPユーザーガイド を参照してください。<profile>.m3bp.enabled
対象のプロファイルに対し、デプロイメントアーカイブにAsakusa on M3BPのコンポーネントを追加するかどうかを指定する。
前述の
m3bp.enabled
と同様だが、こちらはプロファイルごとに指定できる。既定値:
asakusafwOrganizer.m3bp.enabled
(全体のデフォルト値を利用する)<profile>.m3bp.useSystemNativeDependencies
対象のプロファイルに対し、デプロイメントアーカイブのAsakusa on M3BPが、実行環境にインストールされたネイティブの依存ライブラリ群を利用するかどうかを指定する。
前述の
m3bp.useSystemNativeDependencies
と同様だが、こちらはプロファイルごとに指定できる。既定値:
asakusafwOrganizer.m3bp.useSystemNativeDependencies
(全体のデフォルト値を利用する)
[4] | これらのプロパティは規約オブジェクト com.asakusafw.m3bp.gradle.plugins.AsakusafwOrganizerM3bpExtension が提供します。 |
コマンドラインオプション¶
m3bpCompileBatchapps タスクを指定して gradlew コマンドを実行する際に、 m3bpCompileBatchapps --update <バッチクラス名>
と指定することで、指定したバッチクラス名のみをバッチコンパイルすることができます。
また、バッチクラス名の文字列には *
をワイルドカードとして使用することもできます。
以下の例では、パッケージ名に com.example.target.batch
を含むバッチクラスのみをバッチコンパイルしてデプロイメントアーカイブを作成しています。
./gradlew m3bpCompileBatchapps --update com.example.target.batch.* assemble
そのほか、 m3bpCompileBatchapps タスクは gradlew コマンド実行時に以下のコマンドライン引数を指定することができます。
-
--options
<k1=v1[,k2=v2[,...]]>
¶ 追加のコンパイラプロパティを指定する。
規約プロパティ
asakusafw.m3bp.option
で設定したものと同じキーを指定した場合、それらを上書きする。
-
--batch-id-prefix
<prefix.>
¶ 生成するバッチアプリケーションに、指定のバッチID接頭辞を付与する。
規約プロパティ
asakusafw.m3bp.batchIdPrefix
の設定を上書きする。
-
--fail-on-error
<"true"|"false">
¶ コンパイルエラー発生時に即座にコンパイル処理を停止するかどうか。
規約プロパティ
asakusafw.m3bp.failOnError
の設定を上書きする。
-
--update
<batch-class-name-pattern>
¶ 指定のバッチクラスだけをコンパイルする (指定したもの以外はそのまま残る)。
規約プロパティ
asakusafw.m3bp.{in,ex}clude
と同様にワイルドカードを利用可能。このオプションが設定された場合、規約プロパティ
asakusafw.m3bp.{in,ex}clude
の設定は無視する。
DSL Compiler for M3BPリファレンス¶
コンパイラプロパティ¶
DSL Compiler for M3BPで利用可能なコンパイラプロパティについて説明します。
これらの設定方法については、 Batch Application Plugin ( asakusafw ) への拡張 の m3bp.option
の項を参照してください。
directio.input.filter.enabled
Direct I/O input filterを有効にするかどうか。
true
ならば有効にし、false
ならば無効にする。既定値:
true
operator.checkpoint.remove
DSLで指定した
@Checkpoint
演算子をすべて除去するかどうか。true
ならば除去し、false
ならば除去しない。既定値:
false
operator.logging.level
DSLで指定した
@Logging
演算子のうち、どのレベル以上を表示するか。debug
,info
,warn
,error
のいずれかを指定する。既定値:
info
operator.aggregation.default
DSLで指定した
@Summarize
,@Fold
演算子のpartialAggregate
にPartialAggregation.DEFAULT
が指定された場合に、どのように集約を行うか。total
であれば部分集約を許さず、partial
であれば部分集約を行う。既定値:
total
input.estimator.tiny
インポーター記述の
getDataSize()
にDataSize.TINY
が指定された際、それを何バイトのデータとして見積もるか。値にはバイト数か、
+Inf
(無限大)、NaN
(不明) のいずれかを指定する。主に、
@MasterJoin
系の演算子でJOINのアルゴリズムを決める際など、データサイズによる最適化の情報として利用される。既定値:
10485760
(10MB)input.estimator.small
インポーター記述の
getDataSize()
にDataSize.SMALL
が指定された際、それを何バイトのデータとして見積もるか。その他については
input.estimator.tiny
と同様。既定値:
209715200
(200MB)input.estimator.large
インポーター記述の
getDataSize()
にDataSize.LARGE
が指定された際、それを何バイトのデータとして見積もるか。その他については
input.estimator.tiny
と同様。既定値:
+Inf
(無限大)operator.join.broadcast.limit
@MasterJoin
系の演算子で、broadcast joinアルゴリズムを利用して結合を行うための、マスタ側の最大入力データサイズ。基本的には
input.estimator.tiny
で指定した値の2倍程度にしておくのがよい。既定値:
20971520
(20MB)operator.estimator.<演算子注釈名>
指定した演算子の入力に対する出力データサイズの割合。
「演算子注釈名」には演算子注釈の単純名 (
Extract
,Fold
など) を指定し、値には割合 (1.0
,2.5
など) を指定する。たとえば、「
operator.estimator.CoGroup
」に5.0
を指定した場合、すべての@CoGroup
演算子の出力データサイズは、入力データサイズの合計の5倍として見積もられる。既定値: operator.estimator.* のデフォルト値 を参照
<バッチID>:<オプション名>
指定のオプションを、指定のIDのバッチに対してのみ有効にする。
バッチIDは
m3bp.
などのプレフィックスが付与する まえの ものを指定する必要がある。既定値: N/A
dag.planning.option.unifySubplanIo
等価なステージの入出力を一つにまとめる最適化を有効にするかどうか。
true
ならば有効にし、false
ならば無効にする。無効化した場合、ステージの入出力データが増大する場合があるため、特別な理由がなければ有効にするのがよい。
既定値:
true
dag.planning.option.checkpointAfterExternalInputs
ジョブフローの入力の直後にチェックポイント処理を行うかどうか。
true
ならばチェックポイント処理を行い、false
ならば行わない。既定値:
false
m3bp.native.cmake
アプリケーションのコンパイル時に利用する
CMake
コマンドの名前またはフルパス。既定値:
cmake
m3bp.native.make
アプリケーションのコンパイル時に利用する
Make
コマンドの名前またはフルパス。既定値:
make
m3bp.native.path
アプリケーションのコンパイル時に利用する
CMake
やMake
コマンドを探索するためのパス。複数のディレクトリを指定する場合、パスセパレータ文字 (Unixの場合は
":"
) で区切って指定する。既定値: (
PATH
環境変数の値)m3bp.native.cmake.<name>
アプリケーションのコンパイル時に利用する
CMake
コマンドの追加オプション (-D<name>
)。たとえば、
m3bp.native.cmake.CMAKE_BUILD_TYPE
にDebug
を指定することで、ビルドタイプをDebug
に変更できる。
operator.estimator.* のデフォルト値¶
演算子注釈名 | 計算式 |
---|---|
Checkpoint |
入力の 1.0 倍 |
Logging |
入力の 1.0 倍 |
Branch |
入力の 1.0 倍 |
Project |
入力の 1.0 倍 |
Extend |
入力の 1.25 倍 |
Restructure |
入力の 1.25 倍 |
Split |
入力の 1.0 倍 |
Update |
入力の 2.0 倍 |
Convert |
入力の 2.0 倍 |
Summarize |
入力の 1.0 倍 |
Fold |
入力の 1.0 倍 |
MasterJoin |
トランザクション入力の 2.0 倍 |
MasterJoinUpdate |
トランザクション入力の 2.0 倍 |
MasterCheck |
トランザクション入力の 1.0 倍 |
MasterBranch |
トランザクション入力の 1.0 倍 |
Extract |
既定値無し |
GroupSort |
既定値無し |
CoGroup |
既定値無し |
既定値がない演算子に対しては、有効なデータサイズの見積もりを行いません。