Más contenido relacionado
La actualidad más candente (20)
Similar a Asakusa Framework 歴史探訪 & ここ最近の新機能 (20)
Asakusa Framework 歴史探訪 & ここ最近の新機能
- 2. NAUTILUS 2
n 川⼝口 章
– ノーチラス・テクノロジーズ 所属
– Twitter: @apirakun
n Asakusa Framework
– 開発当初から参画
n 開発環境, テストツール系の開発
n ビルド, テスト, ドキュメント整備
– リリースマネージャーを担当
⾃自⼰己紹介
- 5. NAUTILUS 5
リリースサイクル
n おおよそ 2-3ヶ月毎にリリース
– 2011/3: 初版 (Version 0.1.0) リリース
– 2014/5: 最新版 (Version 0.6.2)リリース
n これまでに 計16回のリリース
– 加えてJinrikisha, shafuなどの周辺プロダクトのリリース
- 6. NAUTILUS 6
Asakusa Frameworkの誕生
n 分散バッチ処理用フレームワーク
– 複雑なデータ構造/データフロー向けの機能セット
– 外部データ連携、バッチ実行処理と統合
n Asakusa DSL
– 3層のDSL (演算子, データフロー, バッチ)
n DSL仕様は当初からほぼ変わらず現在に至る
n DSLコンパイラ
– Hadoop用の実行モジュール(MapReduce Application)
– 外部データ連係、バッチ実行モジュールの定義情報
Version 0.1.0 <2011/03>
- 7. NAUTILUS 7
Asakusa Frameworkの誕生
Version 0.1.0 <2011/03>
n ThunderGate
– 外部システムとのデータ連携
– MySQL向け最適化/差分更新/排他制御/エラーリカバリ
n バッチ実行管理
– 試験的なスクリプト (experimental.sh)
– DSLコンパイラの拡張で外部ツールと連携
» MonkeyMagic
n TestDriver
– DSL単位/データ指向の自動テスト機構
n 現在は当初のコンセプトを維持しつつ、多くの拡張が追加
- 10. NAUTILUS 10
YAESS
n バッチ実行に関する諸問題
– 試験用スクリプトの機能不足
n 排他制御、ロギング、配置構成, ...
n DSLコンパイラの最適化を活かせない (並列ジョブ実行)
n ジョブ実行管理ツール (統合運用管理システム) との連携
n YAESSの誕生
– YAESSプロファイル: 汎用的な実行環境定義の機構
– 並列ジョブ実行: ParallelJobScheduler
– 外部連携用のワークフロー記述やCLIオプション
Version 0.2.3 <2011/11>
- 11. NAUTILUS 11
Direct I/O
n 多様なHadoop環境/アーキテクチャへの適応
– クラウド環境の利用 (Amazon EMR/S3)
– Hadoopエコシステムの利用 (Sqoop/ベンダ製ツール)
– Hadoopファイルシステムの別実装 (NFS/MapRFS)
– クラスタ上のデータを使い回す(キャッシュ)
n Direct I/Oの誕生
– Hadoopファイルシステムに対して直接入出力
n 高速な入出力: 分散入出力, チューニングされたCSVパーサ
n 柔軟な入出力: フィルター, ソート, キャッシュ設定
n データソース: 複数データソース, クラウドストレージ対応
Version 0.2.5 <2012/01>
- 12. NAUTILUS 12
Jinrikisha (人力車)
n 開発環境に関する諸問題
– 環境構築が煩雑
n 依存プロダクトのインストールや設定
n Linux環境に精通していないユーザ
n 手軽にAsaksuaの開発が試せる環境がほしい
n Jinrikishaの誕生
– シンプルな手順で多くのセットアップ作業を自動化
– Linuxに加え, 試験的にMacOSXに対応
Jinrikisha Version 0.1.0 <2012/02>
- 13. NAUTILUS 13
マルチクラスタ
n スモールジョブ実行に関する諸問題
– Asakusaは複雑なデータフローを現実的に実装可能
n 非常に多くのHadoopジョブが多段で構成される
n 小さなデータを扱うジョブ(スモールジョブ)も多く含まれる
n スモールジョブの分散オーバーヘッドが及ぼす性能問題が顕著に
n YAESSマルチクラスタの誕生
– 小さいジョブを非分散モード(スタンドアロン)で動作
– 大きいジョブ/小さいジョブの実行環境を振り分け
– スタンドアロンモード上の実行制御 (JobQueue)
Version 0.2.6 <2012/03>
- 15. NAUTILUS 15
展開の時代
n 対応プラットフォーム
– Hadoop2系の対応を開始, Gradle対応, Java7対応, ...
n Node0 DBR
– クラウド環境上のAsakusaプラットフォームサービス
n ユーザフィードバックによる改善
– コンパイラ, バッチ実行エラーのメッセージ改善
– テストデータ定義シートのExcel2007形式サポート
n 周辺ツール
– DMDL Editor
Version 0.5.X <2013/05~2013/12>
- 17. NAUTILUS 17
Gradle Plugin
n ビルドツールに「Gradle」を利用可能
– アプリケーション側で機能拡張を容易に
n シンプルで高機能なDSL, 依存性管理, プラグイン機構
– Framework側で機能拡張を加速
n 今後のビルドツールに関する機能追加はGradle中心
n Shafu
– Gradleプロジェクト向けのEclipse Plugin
n Eclipseとコンソール間のいったりきたりが不要になる
n ビルド後のAuto Refreshなど細かい点にも配慮
n Asakusa以外のプロジェクトでも使える
Version 0.6.0 <2014/02>
- 19. NAUTILUS 19
スモールジョブ最適化
n タスク数を抑制するチューニングパラメータ
– com.asakusafw.input.combine.tiny.limit
n 特定Mapperの入力データサイズがこの設定値(Byte)を超える場合、
そのMapperに対する入力スプリットを1つにまとめる
– com.asakusafw.reducer.tiny.limit
n 入力データサイズがこの設定値(byte)以下となる場合に、そのジョブ
のReduceタスク数を1に設定する
n YARN (MRv2) の Uberモード
– データサイズやタスク数などのパラメータに応じて、タスク
を自動的にシングルJVM上での実行に切り替えるスモールジョ
ブ用の最適化機構
– 上記のパラメータを設定することで、Uberモードの発動条件
に適合させることが可能
Version 0.6.2 <2014/05>
- 20. NAUTILUS 20
その他0.6系追加機能
n TestDriver
– Javaオブジェクトによるテストデータ指定
n Excelを使わなくもテスト可能
n アプリケーション側でのテストフレームワーク実装
n YAESS
– ログの可視化ツール
n CSVの出力=>Excelで表示
n 実行時間の傾向を簡易的に分析
n Direct I/O
– 入力データが無くても処理を続行するオプション
n YARN (MRv2) 上での安定性向上
Version 0.6.X <2014/02~2014/05>
- 22. NAUTILUS 22
SQL-on-Hadoop連携
n SQL-on-Hadoop (Hive, Impala, Presto, Drill, ...)
– Hadoop上のデータをSQLで操作するクエリエンジン
– パフォーマンス
n MapReduceを使わない機構(インメモリ, ネイティブ実装, ...)
n カラムナストレージフォーマットの対応
– ポータビリティ
n 標準SQLのクエリ (プロダクトにより対応レベルは異なる)
n ODBC/JDBCアダプタ
– 主にインタラクティブなクエリ操作向け
n バッチ処理のような複雑なデータ編集処理には向いていない
n Asakusa Frameworkのアプローチ
– SQL-on-Hadoopとカラムナフォーマットによるデータ連携
Version 0.7.0 <2014 Summer>
- 23. NAUTILUS 23
Direct I/O Hive (ORC/Parquet)
Version 0.7.0 <2014 Summer>
n Direct I/Oでカラムナ形式のファイル入出力
– ORCFile
– Parquet
n DMDLでHiveメタストア登録用のDDL生成
– Gradle Pluginの追加タスクとして提供
n DMDLと互換性の無いデータ型に対する変換機構
– Parquetで未対応のDECIMALやDATEを文字列として扱う
n JinrikishaにHiveを同梱
– 手軽にSQL on Hadoop連携を試用
- 25. NAUTILUS 25
Hadoop2系 正式対応
n Hadoop1系/Hadoop2系の両方をGA扱い
n バージョン体系の変更
– 従来 (0.6.2 以前)
n Hadoop1系: 0.6.2
n Hadoop2系: 0.6.2-hadoop2 (experimental)
– 0.7.0 以降
n Hadoop1系: 0.7.0-hadoop1
n Hadoop2系: 0.7.0-hadoop2
Version 0.7.0 <2014 Summer>
- 27. NAUTILUS 27
その他0.7系追加機能
n Version 0.7.0で予定されている追加機能
– CoGroup演算子で外部バッファ利用時の性能向上
n InputBuffer.ESCAPE 指定時の動作を改善
– ランタイムライブラリファイルのキャッシュ
n ライブラリサイズや数が大きい場合に有効
– Gradle PluginのIntelliJ IDEA対応
n ideaタスクの拡張 (Asakusa向けの追加設定を自動生成)
– Direct I/O CSVの自動トリム
n 文字列とBOOLEAN以外のデータ型は入力時に自動でトリム
Version 0.7.0 <2014 Summer>
- 28. NAUTILUS 28
Asakusa Framework Links
n Document
– http://asakusafw.s3.amazonaws.com/
documents/latest/release/ja/html/index.html
n Community Web Site
– http://www.asakusafw.com
n GitHub
– http://github.com/asakusafw/asakusafw