Asakusa Introduction in Pyfes 2011/10/15

Asakusa Framework とは

Asakusa Framework (以下 Asakusa) を初めて知る人向けに話します.

Hadoop の概要は知っているものとします.

お前誰よ?

  • id: cocoatomo
  • 現職: Nautilus Technologies
  • 前職: 基幹業務向けパッケージベンダーの研究開発部門っぽいとこ
_images/TwitPenguin52.jpg

Asakusa Framework とは (ロゴ)

_images/logo397.png

Asakusa Framwork とは

  1. Hadoop 上の
  2. オープンソースの
  3. 基幹バッチ向け
  4. 開発, テスト, 実行フレームワーク

1つ1つ解説して行きます.

「Hadoop 上」

Asakusa Framwork (以下, Asakusa) で作れるものは Hadoop MapReduce アプリケーション

専用 DSL とデータモデル定義 DMDL から MapReduce ジョブを生成

「オープンソース」

Github で公開しています

開発ドキュメントなども整備されています.

https://github.com/asakusafw/asakusafw

「基幹バッチ向け」

基幹業務のバッチで要求されるのは?

  • 品質
  • 例外処理
  • 障害対応
  • 外部システム連携
  • (速度は案外優先度低い)

品質

給与額が1円でもズレたら NG

システム移行で旧システムとズレたら NG

→ テストしやすい仕組みが必要

例外処理

異常値が入ってきても無視は NG

→ どこに異常値があったかの帳票を出す, とかの対応が必要

障害対応

バッチが異常終了するとマスタデータが壊れるなんて NG

→ トランザクションが必要

外部システム連携

基幹システムが単独で動くことは少ない

→ 既存の RDBMS や CSV を使った連携が必要

(速度は案外優先度低い)

時間のかかる処理は夜間バッチに回される

素の MapReduce だと……

素の MapReduce だと……

通常のバッチは複数の MapReduce ジョブで構成される

こんなイメージ

_images/group181.jpg

立ちはだかる問題

  • 設計どうするの??
  • 並列処理の結合テストは?? デバッグできるの??
  • 異常値の処理用のジョブをどこに折り込むの??
  • このジョブが失敗した場合, どこまで戻るの??
  • HDFS と外部システムの連携は??

こんなイメージ

_images/crowd167.jpg

そこで Asakusa では

そこで Asakusa では

象を飼い慣らします

_images/AsakusaOnHadoop165.jpg

基幹バッチ開発のサポート機能

  • 設計手法 → 多層 DAG で設計, 実装

    DAG = Directed Acyclic Graph

  • テスト → TestDriver というテストライブラリあり

  • 障害対応 → アトミックな処理が記述できる

  • 外部システム連携 → ThunderGate という MySQL との連携モジュールあり

補足しておくと, Hadoop は

素晴しい分散処理フレームワーク

_images/hadoop37.jpg

これがあったから基幹バッチで並列処理が現実的になりました.

まとめ

Asakusa Framework は

  • 基幹バッチ開発, テスト, 運用に必要なものを備えた
  • Hadoop 上のフレームワーク

です.

以下, 質疑応答

答えられる限り答えます

資料

GitHub の Wiki https://github.com/asakusafw/asakusafw

基本的にここに全て資料があります.