SlideShare a Scribd company logo
1 of 24
Download to read offline
NAUTILUS 1
Asakusa Framework
スモールジョブ実行エンジン & Windows対応	
Akira,  KAWAGUCHI
Nautilus  Technologies,  Inc.
2015/1/8
  Asakusa  Framework  勉強会  2015冬
NAUTILUS 2
n  川⼝口  章
–  ノーチラス・テクノロジーズ 所属
–  Twitter: @apirakun
n  Asakusa Framework
–  開発当初から参画
n  開発環境, テストツール系の開発
n  ビルド, テスト, ドキュメント整備
–  リリースマネージャーを担当
⾃自⼰己紹介
NAUTILUS 3
Asakusa  直近リリース
n  2014/11/20:  Version  0.7.1  リリース
–  スモールジョブ実行エンジン
n  2015/1/5:  Version  0.7.2  リリース
–  Windows対応  (開発環境)
–  その他のアップデート
n  Hortonworks  Data  Platform対応  
n  Hive  0.14対応
NAUTILUS 4
スモールジョブ実行エンジン	
小さいジョブを高速に処理
NAUTILUS 5
スモールジョブ実行エンジン	
n  スモールジョブに最適化されたジョブ実行エンジン
–  スモールジョブの実行を高速化
–  これまで実行エンジンはHadoopのみ
–  これからは2つのエンジンを併用することが可能
n  スモールジョブ
–  小さなデータを入力にとるHadoopジョブ
n  目安として、ステージの入力データが100MB未満のジョブ
–  処理時間の大半がHadoopのオーバーヘッド
n  目安として、実行時間が40秒未満程度のジョブ
NAUTILUS 6
スモールジョブ問題	
n  バッチにスモールジョブが多数含まれ、十分な処理性
能が出ない問題
–  目安として、バッチ実行時間の5割以上がスモールジョブ
n  Asakusaで書くと大量のスモールジョブが発生しがち
–  補助データの処理
–  エラーデータの処理
n  開発環境でも同様の問題が発生しがち
–  複雑なアプリケーションのテスト実行
–  ビルド時の全件テスト実行
NAUTILUS 7
スモールジョブ実行エンジンの特徴	
n  高速
n  自動選択
n  シンプルな環境設定
NAUTILUS 8
特徴1:  高速	
n  MBレンジのデータサイズに最適化
–  10MBの入力でHadoopの5~∼10倍高速にジョブを実行
–  多くの場合、GBレンジ以上はHadoopのほうが高速
n  単一マシン上で高速に動作
–  Hadoopクライアントプロセス上で実行
–  動作する単一マシンのスペックに性能が依存
NAUTILUS 9
実行環境のパフォーマンス例	
n  ツリー系集計演算
–  複雑なバッチで、そのほとんどがスモールジョブの場合は効果絶大
n  正規化
–  シンプルなバッチでもスモールジョブが多いと改善効果が高い
n  BOM
–  スモールジョブが少ないバッチの場合は効果が限定的
バッチ ジョブ数 スモール
ジョブ数
Hadoop Hadoop	
  &	
  	
  
SJEE	
  ※
ツリー系集計演算 184 180 50分 15分
データ正規化処理理 20 17 8分 3分
BOM系原価計算 60 10 65分 52分
※SJEE: スモールジョブ実⾏行行エンジン
NAUTILUS 10
特徴2:  自動選択	
n  データサイズに応じて実行エンジンを自動選択
–  Hadoop
–  スモールジョブ実行エンジン
stage1
stage2
stage3
stage4
Hadoop
スモールジョブ
実⾏行行エンジン
Asakusa	
  
(Runtime)	
  
stage1
stage3
stage2
stage4
10GB
1MB
8GB
3MB
NAUTILUS 11
特徴3:  シンプルな設定	
n  スモールジョブとして扱うデータサイズを設定
–  com.asakusafw.inprocess.limit
n  asakusa-‐‑‒resouces.xmlに指定
–  ドキュメント:  運用環境の整備  –  Hadoopタスクの最適化設定
n  スモールジョブとして扱う入力データサイズの合計を指定(byte)
–  10MB程度までを推奨
<property>
<name>com.asakusafw.inprocess.limit</name>
<value>5242880</value>
</property>
asakusa-resources.xml
NAUTILUS 12
デベロッパーテストの高速化	
n  開発環境でスモールジョブ実行エンジンを使用
–  テストドライバの実行時にスモールジョブ実行エンジン
を指定できるようになった
n  エミュレーションモードの拡張として提供
n  テストに使用するのはたいてい小さなデータ
–  スモールジョブ実行エンジン上での実行に適する
NAUTILUS 13
開発環境のパフォーマンス例	
テスト実⾏行行モード CategorySummaryJobTest	
  	
  
(4件のテスト実⾏行行)	
  
Hadoop	
  
(スタンドアロンモード)
46.2秒
エミュレーションモード	
   26.0秒
エミュレーションモード拡張	
  
(スモールジョブ実⾏行行エンジン)
5.5秒
n  サンプルアプリケーションのテスト実行例
–  サンプルアプリケーションに含まれるジョブフローのテ
ストを各モードで実行
NAUTILUS 14
開発環境の設定方法  1)	
n  プロジェクトのbuild.gradleに設定
–  asakusa-‐‑‒test-‐‑‒inprocess-‐‑‒ext
n  ドキュメント:  アプリケーションのテスト  (TestDriver)    -‐‑‒                   
エミュレーションモードによるアプリケーションテスト
n  Eclipseを利用する場合はbuild.gradle編集後にクラスパスを更新
dependencies {
...
testRuntime group: 'com.asakusafw',
name: 'asakusa-test-inprocess-ext',
version: asakusafw.asakusafwVersion
build.gradle
NAUTILUS 15
開発環境の設定方法  2)	
n  Shafuで設定
–  Eclipse上でエミュレーションモードが有効化
–  build.gradleの編集は不要
NAUTILUS 16
Windows上でのテスト実行	
n  スモールジョブ実行エンジンにを使うことでWindows
開発環境でもテストが可能に
–  これまではテストドライバを実行すると強制的にそのテ
ストがスキップされていた
n  詳細は次のセクションで
NAUTILUS 17
Windows対応	
開発、テスト、ビルドのほぼすべてが利用可能に
NAUTILUS 18
Windows対応とは	
n  開発環境のプラットフォームとしてWindowsを追加
–  Windows上でアプリケーションの開発、テスト、ビルド
機能のほぼすべてを利用することが可能
–  テスト実行にはスモールジョブ実行エンジンを利用した
エミュレーションモードを利用
n  動作検証済の環境
–  Windows  7
–  Windows  8.1
NAUTILUS 19
スタートガイド for  Windows	
n  環境構築からサンプルアプリケーションの手順をまと
めたドキュメント
–  Asakusa  Framework  スタートガイド for  Windows
–  Windows以外でもこの手順で環境構築することが可能
n  Jinrikishaで環境構築するよりラクかもしれない
n  YAESSの実行やHive連携などを確認したい場合はJinrikishaで
NAUTILUS 20
未対応機能	
n  YAESSを利用したアプリケーションの実行
–  運用環境としては利用できない
n  Windows上でビルドしたアプリケーションを他の環境にデプロ
イ、実行することは可能
–  開発環境上で実データを使ったバッチの確認
n  バッチテストランナーを使って実現可能(後述)
n  コマンドラインで提供する運用機能全般
–  シェルスクリプトで提供されているツール類
n  クリーニングツールやDirect  I/Oのメンテナンスツールなど
NAUTILUS 21
Shafu	
n  Asakusaバッチ開発用のEclipseプラグイン
–  開発に必要な作業はすべてEclipse上から可能
n  コマンドプロンプト上での作業は不要
NAUTILUS 22
Shafuの主な機能  (version  0.4.0)	
n  Asakusa  Frameworkプロジェクトの作成
–  オンライン上に公開されているテンプレートから選択
n  エミュレーションモードの有効化 (new!)
–  プロジェクト作成時にエミュレーションモードを自動で有効化
n  Asakusa  Frameworkのインストール (new!)
–  ASAKUSA_̲HOME  配下に開発環境向けの実行環境を構築
n  データモデルクラスやバッチアプリケーションの生成
–  DMDL、Asakusa  DSLのコンパイル
n  Asakusa  デプロイメントアーカイブの生成 (new!)
–  運用環境(Hadoopクラスター)にデプロイするアーカイブファイルを生成
n  Windows向けの細かい修正 (new!)
–  文字化け対策など
NAUTILUS 23
バッチテストランナー	
n  API経由で簡易的にバッチアプリケーションを実行
–  実データ(CSVなど)を使ったバッチの疎通確認など
n  WindowsではYAESSが実行できないため、その代替として
n  スモールジョブ実行エンジン上も利用可能
–  テストランナーAPIにバッチIDと引数を指定して実行
n  com.asakusafw.testdriver.tools.runner.BatchTestRunner
n  ドキュメント:  アプリケーションのテスト  (TestDriver)  -‐‑‒                                
テストドライバユーザガイド  –  インテグレーションテスト
int result = new
BatchTestRunner("example.summarizeSales")
.withArgument("date", "2011-04-01")
.execute();
NAUTILUS 24
まとめ	
n  スモールジョブ実行エンジン
–  小さいデータ入力のジョブを高速化
–  適切なエンジンを選択してバッチ全体を高速化
–  開発環境のテストを高速化
n  Windows対応
–  Windows上でアプリケーション開発が可能
–  Shafuを使うとEclipse上ですべての作業が可能

More Related Content

What's hot

LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideYusuke Tochigi
 
Session3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training CourseSession3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training CourseYusuke Tochigi
 
Session5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training CourseSession5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training CourseYusuke Tochigi
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318Yuhki Hanada
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれYasuaki Matsuda
 
.NET CoreとVS Codeで作る人狼知能
.NET CoreとVS Codeで作る人狼知能.NET CoreとVS Codeで作る人狼知能
.NET CoreとVS Codeで作る人狼知能takots
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンYasuaki Matsuda
 
AndroidWearアプリ Hands on
AndroidWearアプリ Hands onAndroidWearアプリ Hands on
AndroidWearアプリ Hands onKenz Matsuoka
 
Gcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scriptGcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scripttsukasa tamaru
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageKazushi Kamegawa
 
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)takots
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Kohsuke Kawaguchi
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリTakayoshi Tanaka
 
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)takots
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュYasuaki Matsuda
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルTsuyoshi Ushio
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースFuminobu Takeyama
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~aha_oretama
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編irix_jp
 

What's hot (20)

LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
Session3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training CourseSession3 - LabVIEW NXG Training Course
Session3 - LabVIEW NXG Training Course
 
Session5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training CourseSession5 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training Course
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
.NET CoreとVS Codeで作る人狼知能
.NET CoreとVS Codeで作る人狼知能.NET CoreとVS Codeで作る人狼知能
.NET CoreとVS Codeで作る人狼知能
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
 
AndroidWearアプリ Hands on
AndroidWearアプリ Hands onAndroidWearアプリ Hands on
AndroidWearアプリ Hands on
 
Gcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scriptGcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown script
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's image
 
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
C#版人狼知能エージェントの作り方(MonoDevelop/Xamarin Studio編)
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
 
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキル
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
 

Viewers also liked

Asynchronous Messaging入門(第4回実施分)
Asynchronous Messaging入門(第4回実施分)Asynchronous Messaging入門(第4回実施分)
Asynchronous Messaging入門(第4回実施分)Tatsuaki Sakai
 
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」でHinemos
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AzareaCluster
 
PHP & Queue
PHP & QueuePHP & Queue
PHP & Queuesasezaki
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術KinebuchiTomo
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~Akabane Hiroyuki
 
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理Hinemos
 
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖Hinemos
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Hasegawa Yusuke
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編Amazon Web Services Japan
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行Yoshitaka Kawashima
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
ガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツールガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツール賢 秋穂
 

Viewers also liked (14)

Asynchronous Messaging入門(第4回実施分)
Asynchronous Messaging入門(第4回実施分)Asynchronous Messaging入門(第4回実施分)
Asynchronous Messaging入門(第4回実施分)
 
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
PHP & Queue
PHP & QueuePHP & Queue
PHP & Queue
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
 
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
 
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
ガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツールガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツール
 

Similar to Asakusa Framework スモールジョブ実行エンジン & Windows対応

Google Compute Engine 入門
Google Compute Engine 入門Google Compute Engine 入門
Google Compute Engine 入門Yuko Oshima
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud AutomationEtsuji Nakai
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CIkanabuchi
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようMidori Oge
 
Session8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training CourseSession8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training CourseYusuke Tochigi
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2Etsuji Nakai
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014VirtualTech Japan Inc.
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Visual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うVisual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うTakeshi Fukuhara
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Nobuyuki Tamaoki
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)irix_jp
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介Midori Oge
 
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws   sqaleの場合サーバ構築自動化 On aws   sqaleの場合
サーバ構築自動化 On aws sqaleの場合Ryo Kuroda
 

Similar to Asakusa Framework スモールジョブ実行エンジン & Windows対応 (20)

Google Compute Engine 入門
Google Compute Engine 入門Google Compute Engine 入門
Google Compute Engine 入門
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CI
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
 
Session8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training CourseSession8 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training Course
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
 
Osaka-Meetup-Sep2016
Osaka-Meetup-Sep2016Osaka-Meetup-Sep2016
Osaka-Meetup-Sep2016
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Visual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使うVisual StudioやAzureからAzure DevOpsを使う
Visual StudioやAzureからAzure DevOpsを使う
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws   sqaleの場合サーバ構築自動化 On aws   sqaleの場合
サーバ構築自動化 On aws sqaleの場合
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 

Asakusa Framework スモールジョブ実行エンジン & Windows対応

  • 1. NAUTILUS 1 Asakusa Framework スモールジョブ実行エンジン & Windows対応 Akira,  KAWAGUCHI Nautilus  Technologies,  Inc. 2015/1/8   Asakusa  Framework  勉強会  2015冬
  • 2. NAUTILUS 2 n  川⼝口  章 –  ノーチラス・テクノロジーズ 所属 –  Twitter: @apirakun n  Asakusa Framework –  開発当初から参画 n  開発環境, テストツール系の開発 n  ビルド, テスト, ドキュメント整備 –  リリースマネージャーを担当 ⾃自⼰己紹介
  • 3. NAUTILUS 3 Asakusa  直近リリース n  2014/11/20:  Version  0.7.1  リリース –  スモールジョブ実行エンジン n  2015/1/5:  Version  0.7.2  リリース –  Windows対応  (開発環境) –  その他のアップデート n  Hortonworks  Data  Platform対応   n  Hive  0.14対応
  • 5. NAUTILUS 5 スモールジョブ実行エンジン n  スモールジョブに最適化されたジョブ実行エンジン –  スモールジョブの実行を高速化 –  これまで実行エンジンはHadoopのみ –  これからは2つのエンジンを併用することが可能 n  スモールジョブ –  小さなデータを入力にとるHadoopジョブ n  目安として、ステージの入力データが100MB未満のジョブ –  処理時間の大半がHadoopのオーバーヘッド n  目安として、実行時間が40秒未満程度のジョブ
  • 6. NAUTILUS 6 スモールジョブ問題 n  バッチにスモールジョブが多数含まれ、十分な処理性 能が出ない問題 –  目安として、バッチ実行時間の5割以上がスモールジョブ n  Asakusaで書くと大量のスモールジョブが発生しがち –  補助データの処理 –  エラーデータの処理 n  開発環境でも同様の問題が発生しがち –  複雑なアプリケーションのテスト実行 –  ビルド時の全件テスト実行
  • 8. NAUTILUS 8 特徴1:  高速 n  MBレンジのデータサイズに最適化 –  10MBの入力でHadoopの5~∼10倍高速にジョブを実行 –  多くの場合、GBレンジ以上はHadoopのほうが高速 n  単一マシン上で高速に動作 –  Hadoopクライアントプロセス上で実行 –  動作する単一マシンのスペックに性能が依存
  • 9. NAUTILUS 9 実行環境のパフォーマンス例 n  ツリー系集計演算 –  複雑なバッチで、そのほとんどがスモールジョブの場合は効果絶大 n  正規化 –  シンプルなバッチでもスモールジョブが多いと改善効果が高い n  BOM –  スモールジョブが少ないバッチの場合は効果が限定的 バッチ ジョブ数 スモール ジョブ数 Hadoop Hadoop  &     SJEE  ※ ツリー系集計演算 184 180 50分 15分 データ正規化処理理 20 17 8分 3分 BOM系原価計算 60 10 65分 52分 ※SJEE: スモールジョブ実⾏行行エンジン
  • 10. NAUTILUS 10 特徴2:  自動選択 n  データサイズに応じて実行エンジンを自動選択 –  Hadoop –  スモールジョブ実行エンジン stage1 stage2 stage3 stage4 Hadoop スモールジョブ 実⾏行行エンジン Asakusa   (Runtime)   stage1 stage3 stage2 stage4 10GB 1MB 8GB 3MB
  • 11. NAUTILUS 11 特徴3:  シンプルな設定 n  スモールジョブとして扱うデータサイズを設定 –  com.asakusafw.inprocess.limit n  asakusa-‐‑‒resouces.xmlに指定 –  ドキュメント:  運用環境の整備  –  Hadoopタスクの最適化設定 n  スモールジョブとして扱う入力データサイズの合計を指定(byte) –  10MB程度までを推奨 <property> <name>com.asakusafw.inprocess.limit</name> <value>5242880</value> </property> asakusa-resources.xml
  • 12. NAUTILUS 12 デベロッパーテストの高速化 n  開発環境でスモールジョブ実行エンジンを使用 –  テストドライバの実行時にスモールジョブ実行エンジン を指定できるようになった n  エミュレーションモードの拡張として提供 n  テストに使用するのはたいてい小さなデータ –  スモールジョブ実行エンジン上での実行に適する
  • 13. NAUTILUS 13 開発環境のパフォーマンス例 テスト実⾏行行モード CategorySummaryJobTest     (4件のテスト実⾏行行)   Hadoop   (スタンドアロンモード) 46.2秒 エミュレーションモード   26.0秒 エミュレーションモード拡張   (スモールジョブ実⾏行行エンジン) 5.5秒 n  サンプルアプリケーションのテスト実行例 –  サンプルアプリケーションに含まれるジョブフローのテ ストを各モードで実行
  • 14. NAUTILUS 14 開発環境の設定方法  1) n  プロジェクトのbuild.gradleに設定 –  asakusa-‐‑‒test-‐‑‒inprocess-‐‑‒ext n  ドキュメント:  アプリケーションのテスト  (TestDriver)    -‐‑‒                    エミュレーションモードによるアプリケーションテスト n  Eclipseを利用する場合はbuild.gradle編集後にクラスパスを更新 dependencies { ... testRuntime group: 'com.asakusafw', name: 'asakusa-test-inprocess-ext', version: asakusafw.asakusafwVersion build.gradle
  • 15. NAUTILUS 15 開発環境の設定方法  2) n  Shafuで設定 –  Eclipse上でエミュレーションモードが有効化 –  build.gradleの編集は不要
  • 16. NAUTILUS 16 Windows上でのテスト実行 n  スモールジョブ実行エンジンにを使うことでWindows 開発環境でもテストが可能に –  これまではテストドライバを実行すると強制的にそのテ ストがスキップされていた n  詳細は次のセクションで
  • 18. NAUTILUS 18 Windows対応とは n  開発環境のプラットフォームとしてWindowsを追加 –  Windows上でアプリケーションの開発、テスト、ビルド 機能のほぼすべてを利用することが可能 –  テスト実行にはスモールジョブ実行エンジンを利用した エミュレーションモードを利用 n  動作検証済の環境 –  Windows  7 –  Windows  8.1
  • 19. NAUTILUS 19 スタートガイド for  Windows n  環境構築からサンプルアプリケーションの手順をまと めたドキュメント –  Asakusa  Framework  スタートガイド for  Windows –  Windows以外でもこの手順で環境構築することが可能 n  Jinrikishaで環境構築するよりラクかもしれない n  YAESSの実行やHive連携などを確認したい場合はJinrikishaで
  • 20. NAUTILUS 20 未対応機能 n  YAESSを利用したアプリケーションの実行 –  運用環境としては利用できない n  Windows上でビルドしたアプリケーションを他の環境にデプロ イ、実行することは可能 –  開発環境上で実データを使ったバッチの確認 n  バッチテストランナーを使って実現可能(後述) n  コマンドラインで提供する運用機能全般 –  シェルスクリプトで提供されているツール類 n  クリーニングツールやDirect  I/Oのメンテナンスツールなど
  • 21. NAUTILUS 21 Shafu n  Asakusaバッチ開発用のEclipseプラグイン –  開発に必要な作業はすべてEclipse上から可能 n  コマンドプロンプト上での作業は不要
  • 22. NAUTILUS 22 Shafuの主な機能  (version  0.4.0) n  Asakusa  Frameworkプロジェクトの作成 –  オンライン上に公開されているテンプレートから選択 n  エミュレーションモードの有効化 (new!) –  プロジェクト作成時にエミュレーションモードを自動で有効化 n  Asakusa  Frameworkのインストール (new!) –  ASAKUSA_̲HOME  配下に開発環境向けの実行環境を構築 n  データモデルクラスやバッチアプリケーションの生成 –  DMDL、Asakusa  DSLのコンパイル n  Asakusa  デプロイメントアーカイブの生成 (new!) –  運用環境(Hadoopクラスター)にデプロイするアーカイブファイルを生成 n  Windows向けの細かい修正 (new!) –  文字化け対策など
  • 23. NAUTILUS 23 バッチテストランナー n  API経由で簡易的にバッチアプリケーションを実行 –  実データ(CSVなど)を使ったバッチの疎通確認など n  WindowsではYAESSが実行できないため、その代替として n  スモールジョブ実行エンジン上も利用可能 –  テストランナーAPIにバッチIDと引数を指定して実行 n  com.asakusafw.testdriver.tools.runner.BatchTestRunner n  ドキュメント:  アプリケーションのテスト  (TestDriver)  -‐‑‒                                 テストドライバユーザガイド  –  インテグレーションテスト int result = new BatchTestRunner("example.summarizeSales") .withArgument("date", "2011-04-01") .execute();
  • 24. NAUTILUS 24 まとめ n  スモールジョブ実行エンジン –  小さいデータ入力のジョブを高速化 –  適切なエンジンを選択してバッチ全体を高速化 –  開発環境のテストを高速化 n  Windows対応 –  Windows上でアプリケーション開発が可能 –  Shafuを使うとEclipse上ですべての作業が可能