Created
May 23, 2011 18:52
-
-
Save torazuka/987281 to your computer and use it in GitHub Desktop.
batchapp.sandboxのexample.batchを追っかける
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
batchapp.sandboxのexample.batchのテストクラスを実行してみる。 | |
(前処理) | |
実行時の追加設定をしたり、バッチ実行時引数を受け取ったりする。 | |
コンパイラ(Flowコンパイラ)のオプション用変数を使うと、ここで最適化の設定を色々変えられる。詳細は、FlowCompilerOptionsのItemというenumを参照するとよい。 | |
- Combiner(って何?)の有効化 | |
- フロー部品をインライン化するときの最適化設定 | |
- 互いに影響しないステージの合成 | |
- データ結合の有無や方法(ハッシュ/マージなど)のデータサイズごとの指定 | |
- デバッグロギングの有効化 | |
などができるっぽい。 | |
build.propertiesを読み込み、ASAKUSA_MODELGEN_PACKAGEとASAKUSA_MODELGEN_OUTPUTを設定する(これらのディレクトリは後ほど作成される)。テストデータのディレクトリへのパスも、ここで設定される。 | |
HADOOP_HOMEの設定、ジョブ実行シェルへのパスの設定、クラスタの作業ディレクトリの設定などが終わると、初期化が完了する。 | |
(コア部分) | |
まず、クラスタ上のディレクトリを削除する。# あらかじめHadoopのソースコードを持ってきておかないと、このあたりは読めないので注意。 | |
次に、BatchDriverクラスをインスタンス化する。BatchDriverは、Batchアノテーションを付けたクラスを解析する。バッチクラスは、トップレベルかつpublicなクラスでないといけない、抽象クラスであってはいけない等の制約がある。 | |
それから、バッチ記述メソッドが起動される。この処理は、別のジョブフローの登録中だと例外を投げる。 | |
サンプルのバッチクラスの中身が取り出される。バッチクラスは、BatchDescriptionを拡張している。Batchアノテーションでname="ex"という属性が付いているが、これが命名規則なのかどうかは未確認。 | |
コンパイル作業ディレクトリが存在したら削除する。outputディレクトリとbuildディレクトリをに作成する。 | |
そして、バッチからjarが作成される。この時、大量にログが出る。この処理をするDirectBatchCompilerクラスは、testingパッケージよりも下にいるが、つどバッチからjarをパッケージングする子は、通常どこにいるんだろう? | |
最後に、バッチコンパイラが生成したシェルスクリプトが実行される。環境変数に-D引数一覧が積まれる。コマンドの文脈情報というものを作る。 | |
(後処理) | |
テスト結果を検証ツールにかけて、テスト終了 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment