Asakusa Frameworkの0.4.0が出たので、例によって独断と偏見で見所を書いてみるw(→追記版)
→0.4.0のリリース情報・リリースノート
まず、前のバージョン番号は0.2.6で、今回0.2系から0.4に上がった。
これは、AsakusaFWが洗濯機DSLに大進化を遂げた!からではなく、 逆に、大きな変化は無い→安定してきている→1.0に近付いた、ということらしい。
なので、(ThunderGateやWindGateの追加といったレベルの)大きな変化は無いが、しかしトピックは色々ある^^;
●対応プラットフォームの拡張
対応するHadoopは、Apache Hadoopは0.20.205の他に1.0.3、CDH3はCDH3u5となった。
そして、MapR(Greenplum MR1.2)やEMR(Amazon Elastic MapReduce)Hadoop1.0.3も加わった!
●シミュレーションモード(ドライラン)の新設
ドライランは、0.4RCで使っていて一番便利だった機能!! 実際のMapReduceは実行せず、設定が正しいかどうかだけ確認する動作モード。
これが無いと、MapReduce処理本体を何十分も流した後で、WindGate-JDBCの設定ミスやRDBの起動忘れorzで落ちたら、また最初から何十分もかけて再実行になる><
事前にドライランで実行することにより設定を確認できるのは、とても助かった。
●アプリケーションの検証機能の新設
別マシンに同一Asakusaアプリをインストールしてyaess-ssh等で連携する場合、同一バージョンのAsakusaアプリがどうかが検証されるようになった。
●モジュールの取り込み(フラグメント)
依存するjarファイルをまとめて1つのjarファイルを作成する機能が用意された。
自作ユーティリティーとかがAsakusaプロジェクトと分かれている場合、自作ユーティリティーを「モジュール」としてAsakusaプロジェクトの成果物であるjarファイルに統合することが出来る。
●拡張モジュール・レガシーモジュール
FileImporter/FileExporter(Direct I/Oより昔のHDFS入出力用クラス)とかcleanerとかexperimental.shは、今回標準から削除となり、拡張モジュール(extension module)になった。
(標準から削除になったそれらのモジュールをレガシーモジュールと呼ぶ)
拡張モジュールはデフォルトでは組み込まれないが、プラグインとして組み込むことは出来る。
プラグインの拡張方法も、(YAESS/WindGate等の機能別でなく)統一された。
●Direct I/O・ジョブキュー
Direct I/Oやジョブキューは、前回まではexperimental(実験機能)だったが、正式機能となった。
●Direct I/Oの機能追加
Direct I/Oの出力ファイル名パターンにワイルドカード「*」が使えるようになった!
今までは指定されたパターンに応じて出力ファイルの分割/統合が行われていた(その為のMapReduceが実行された)が、Sqoopで読み込むような場合は分割されたままでよい為、無駄な処理だった。
「*」を指定するとMapReduceで出力されたそのままの状態になるので、その分速い。
それと、SequenceFileFormatでCODEC(圧縮形式)が指定できるようになった。これにより、ファイル毎に圧縮方法が指定できることになる。
●WindGateのプロファイルでの環境変数使用
WindGateのプロファイル(ASAKUSA_HOME/windgate/profile/*.properties)内のほぼ全ての箇所で環境変数が使えるようになった。
(今までは一部でしか使えなかったようだ)
●Direct I/Oコマンドラインツール・ユーティリティーツール
Direct I/OのbasePath/ファイル名パターンを指定してファイル一覧を表示したりファイルを削除したりするツールが用意された。
また、指定された日数より以前のHDFS上のファイルを削除できるツールも加わった。
●Jinrikisha0.2.1
AsakusaFW0.4.0に合わせてJinrikishaもバージョンアップ。違いはデフォルトでAsakusaFW0.4が対象になったくらいかもしれないが^^;
一番大きなのは、ロゴが出来たことかなw ロゴに合わせてホームページの色も変えられてるしw
今回加わった機能(の一部)のユースケースとして、EMRを使う例を考えてみる。
HadoopクライアントにAsakusa一式(YAESS)をデプロイ(配置・インストール)し、そこからEMR上のAsakusaアプリを起動するといった構成が考えられる。(EMRには、bootstrapでS3からAsakusaアプリをデプロイする)
YAESSには「yaess-ssh」という機能があり、クライアントからYEASSを起動して、SSH経由で別マシン上のYAESS・Asakusaアプリ(Hadoop)を実行することが出来る。
あるいは、WindGateで別サーバー上のRDBにアクセスすることが出来る。
★これらの接続用設定が上手くいっているかどうかを、ドライランで確認することが出来る。
また、接続先のIPアドレスはAsakusaFWのプロパティーファイルで指定する必要があるが、EMRは毎回IPアドレスが変わる。そこで、EMR CLI等のツールでIPアドレスを取得して環境変数に入れ、プロパティーファイルには環境変数だけ記述しておけば、プロパティーファイルを毎回書き換える必要は無い。
★WindGateのプロファイルで環境変数が指定できるようになった。
また、この構成ではクライアントとEMRでAsakusaアプリ一式を別々にデプロイすることになるが、このバージョンが異なっていたら不整合が起きるかも知れない。(ステージ構成もビルドの度に変わる可能性があるし)
★アプリケーションの検証機能により、バージョンが違っていたら起動できない。
こうして見ると、必要な機能が着々と実装されている感じがするかもw