azarea-cluster (hadoop conference japan 2013 winter)
Post on 30-Jun-2015
958 Views
Preview:
DESCRIPTION
TRANSCRIPT
1 Copyright © 2013 CAC Corporation. All rights reserved.
株式会社シーエーシー
生産技術部
田中 等
AZAREA-Cluster
Hadoopアプリケーションを GUIで簡単に開発!
2013年1月21日
2 Copyright © 2013 CAC Corporation. All rights reserved.
自己紹介
株式会社シーエーシー ◦ 独立系SIer
◦ 社員数 約1,300名
◦ 信託銀行、製薬業に強い
3 Copyright © 2013 CAC Corporation. All rights reserved.
自己紹介
田中 等 ◦ アプリケーションアーキテクト
◦ システム構築プロジェクトにおいて、アーキテクチャを設計したりフレームワークを作成したりする Java、.NET、Flexなど
4 Copyright © 2013 CAC Corporation. All rights reserved.
自己紹介
AZAREA-Cluster ◦ 「あざれあ くらすたー」と読みます
◦ AZAREAソリューションファミリーの1つ
◦ 名前の由来は省略 興味ある方はホームページを参照してください
http://www.cac.co.jp/product/azarea-cluster/ 「azarea-cluster」でググればたどりつけます
5 Copyright © 2013 CAC Corporation. All rights reserved.
アジェンダ
経緯 -なぜ、AZAREA-Clusterを作ったのか?
方針 -どんなアプリケーションフレームワークにするのか?
機能 -AZAREA-Clusterで何ができるのか?
6 Copyright © 2013 CAC Corporation. All rights reserved.
経緯
なぜ、 AZAREA-Clusterを 作ったのか?
7 Copyright © 2013 CAC Corporation. All rights reserved.
Hadoopを使ってみよう
CACでは、以前から業務システムのバッチ処理を開発していた ◦ パフォーマンス面では苦労することもあった
Hadoopで解決できるのでは?
8 Copyright © 2013 CAC Corporation. All rights reserved.
Hadoopを検証してみた
実際にHadoopでサンプルアプリケーションを作って検証してみた ◦ 売上データと店情報や営業担当情報を結合して、複数種類の集計
◦ しかし アプリケーション開発の難易度は高い
簡単に開発する方法は無いか?
0
40
80
120
160
0 8 16 24
処理時間(分)
マシン数
◦ これはいけそう!
9 Copyright © 2013 CAC Corporation. All rights reserved.
どうやってアプリを開発するか?
生MapReduce ◦ 当初、これでサンプルアプリケーションを開発
◦ 難易度は高い
10 Copyright © 2013 CAC Corporation. All rights reserved.
どうやってアプリを開発するか?
Pig、Hive ◦ SQLライクな言語
◦ 簡単なバッチなら簡単に書ける
◦ 複雑なバッチは無理 SQLだけでは業務バッチを書けないのと同様
11 Copyright © 2013 CAC Corporation. All rights reserved.
AZAREA-Clusterの開発へ
自分でアプリケーションフレームワークを作ってしまえ! ◦簡単に効率よくHadoopアプリケーションを開発できるように
12 Copyright © 2013 CAC Corporation. All rights reserved.
方針
どんなアプリケーションフレームワークに するか?
13 Copyright © 2013 CAC Corporation. All rights reserved.
フレームワークの目標
Hadoopにより 分散アプリケーションの開発は簡単になった
もっともっと簡単にしたい
とは言え、まだまだ大多数の開発者にとっては難しい
14 Copyright © 2013 CAC Corporation. All rights reserved.
アプリケーション開発環境
(CACで一般的な)業務システム開発環境に近付ける ◦ OSはWindows Linuxにも対応
◦ Java言語 (CACでは)JavaとVB.NETが主流
◦ Eclipseで開発・デバッグ可能 コマンドラインは使わない
GUIのプラグインも用意したい
導入コスト・学習コストが下がる
15 Copyright © 2013 CAC Corporation. All rights reserved.
機能
AZAREA-Clusterで 何ができるのか?
16 Copyright © 2013 CAC Corporation. All rights reserved.
AZAREA-Clusterの構成
Hadoop
【本番環境】
Eclipse
【開発環境】
AZAREA-Cluster
フレームワーク シミュレータ
AZAREA-Cluster
プラグイン
アプリケーション
編集
Windows/Linux Linux
17 Copyright © 2013 CAC Corporation. All rights reserved.
アプリケーション
AZAREA-Clusterの概念
エンティティ ◦ データを表す
処理 ◦ エンティティを入力し、エンティティを出力する
◦ 変換、結合、グループ化集計、ソート
アプリケーション ◦ エンティティの処理フローとして表わされる
処理
処理
エンティティ
エンティティ
エンティティ
エンティティ
18 Copyright © 2013 CAC Corporation. All rights reserved.
エンティティ
テキストファイルとマッピングされる ◦ TSV/CSV/正規表現(入力のみ)
項目の型 ◦ 文字列/数値(int/long/BigDecimal/double)/日時
◦ 固定長配列
◦ 可変長リスト
◦ 他のエンティティ
入れ子にできる
#商品コード 商品名 単価
C101 フライパン 2000
C201 中華鍋 3000
C202 土鍋 7000
... ... ... エンティティ
19 Copyright © 2013 CAC Corporation. All rights reserved.
エンティティクラス
エンティティを保持するためのDTOクラス
GUIまたはExcelファイルからクラスを生成する
20 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
GUIによりアプリケーションを編集できる ◦ 対象はフローの基本部分
エンティティの種類
処理の種類
入出力関係
キー
◦ 処理の詳細部分は手でコーディングする必要あり 変換仕様
集計式
21 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
デモアプリケーション仕様
結合
売上 ・商品コード ・顧客ID ・金額
顧客 ・顧客ID (PK) ・地域
地域別売上 ・地域 (PK) ・件数 ・金額
グループ化
顧客IDで結合
地域でグループ化
22 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
双方向 ◦ フロー図⇨ソース だけでなく
◦ フロー図⇦ソース も可能
Javaソースを解析し、フロー図を生成している 実現にはEclipseのASTParserを利用
フロー図の情報は全てJavaソース上に保存されている 入出力関係は引数で 座標情報はアノテーションで
EntityFile<SalesEntity> ... EntityFile<CustomerEntity> ... Join<SalesEntity, CustomerEntity>... protected void merge(...) { ... } };
×
解析
生成
23 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
手でコーディングした部分も失われない ◦ フロー情報とは別に解析される
◦ GUIでフローを編集しても保持される
Join<SalesEntity, CustomerEntity>... protected void merge(...) { ... ... } };
解析情報
フロー情報
その他の情報
×
フロー 編集画面
表示
編集 ... ...
解析/生成
int i = 1;
24 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
アンドゥ・リドゥ ◦ GUI編集画面上でアンドゥ・リドゥ可能
◦ ソース生成後、テキストエディタ上でアンドゥ可能
25 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
SVG出力 ◦ フロー図をSVGファイルとして出力可能
Webブラウザ等で表示可能
◦ 実現にはApache Batikを利用 画面描画と同じ要領でSVGデータを作成できる
26 Copyright © 2013 CAC Corporation. All rights reserved.
GUI編集機能
GUI編集機能は「便利なオプション」 ◦ GUIを使わなくてもアプリケーションの開発・修正は可能
リファクタリングなどはその方がやり易い場合も
◦ 元々は全て手でコーディングする前提でフレームワークを設計 ソースの構造を解析してフロー図を表示する機能を追加
更に拡張し、表示だけでなく編集もできるように
AZAREA-Cluster
フレームワーク
AZAREA-Cluster
プラグイン
アプリケーション 編集
27 Copyright © 2013 CAC Corporation. All rights reserved.
アプリケーション
フレームワーク
処理
フレームワークで数種類の処理をクラスとして提供 ◦ アプリケーションでは匿名クラスで継承して実装
処理 基底クラス
変換 結合 グループ化 ソート
グループ化 ソート
処理 実装
処理 実装
処理 実装
処理 実装
処理 実装
28 Copyright © 2013 CAC Corporation. All rights reserved.
処理
変換 ◦ あるエンティティを別のエンティティに変換
◦ 1つの入力エンティティに対して、任意の個数のエンティティを出力可能
0個でもよい
◦ 例) 売上を10,000円未満と10,000円以上に分類する
変換
顧客 = A 商品 = ZZZ 売上 = 2,000
顧客 = A 商品 = XXX 売上 = 10,000 顧客 = B
商品 = YYY 売上 = 5,000
顧客 = A 商品 = XXX 売上 = 10,000
顧客 = B 商品 = YYY 売上 = 5,000
顧客 = A 商品 = ZZZ 売上 = 2,000
29 Copyright © 2013 CAC Corporation. All rights reserved.
処理
結合 ◦ あるエンティティと別のエンティティを指定したキーで結合する
キーは複数指定可能
1対NやN対1の結合が可能
任意の個数のエンティティを出力可能 1対N結合で、1個出力することもN個出力することも可能
◦ 例) 社員に部門を結合して部門名を付加する
社員 = ○○ 部門コード = 110 売上 = 10,000
結合
部門コード = 110 部門名 = “営業部”
社員 = ○○ 部門コード = 110 部門名 = “営業部”
30 Copyright © 2013 CAC Corporation. All rights reserved.
処理
結合 ◦ 入力が大きい場合はReducer側で、小さい場合はMapper側で結合する
結合 Mapper
Reducer 結合 結合
map map
31 Copyright © 2013 CAC Corporation. All rights reserved.
処理
グループ化集計 ◦ エンティティを指定したキーでグループ化して集計する
キーは複数指定可能
集計式は手でコーディングする必要あり 件数 合計値 最大値 最小値 etc...
◦ 例) 顧客毎に売上金額を合計する
グループ化
顧客 = B 商品 = XXX 売上 = 10,000
顧客 = A 商品 = ZZZ 売上 = 2,000
顧客 = B 売上 = 5,000
顧客 = A 売上 = 12,000
顧客 = A 商品 = XXX 売上 = 10,000 顧客 = B
商品 = YYY 売上 = 5,000
32 Copyright © 2013 CAC Corporation. All rights reserved.
処理
グループ化集計 ◦ Mapper側のメモリ内で一次集計を行い、Reducer側で最終集計を行う
MapperからReducerへのデータ転送量が減少し、高速化する
◦ Combinerはデフォルトでは使用していない
オーバーヘッドがあるので、逆に遅くなる場合がある
集計
集計
Mapper
Reducer
集計
集計
集計
集計
33 Copyright © 2013 CAC Corporation. All rights reserved.
処理
ソート ◦ エンティティを指定したキーでソートする
キーは複数指定可能
昇順/降順
◦ ソートされたエンティティを順次処理する
◦ 任意の個数のエンティティを出力可能
◦ 例) 売上金額順に顧客に連番を振る
◦ ソートの拡張版として、グループ化とソートを組み合わせた処理もあり
ソート
顧客 = C 売上 = 8,000 番号 = 3
顧客 = A 売上 = 12,000
顧客 = B 売上 = 15,000
顧客 = C 売上 = 8,000
顧客 = B 売上 = 15,000 番号 = 1
顧客 = A 売上 = 12,000 番号 = 2
34 Copyright © 2013 CAC Corporation. All rights reserved.
アプリケーション
処理最適化
フローをMapReduceジョブに変換する
処理の種類、キーなどの制約、入出力関係を解析し、MapperやReducerに割り当てる ◦ 複数の処理が1つのMapperやReducerに割り当てられることもある
分散の制御も行う ◦ 基本的にはキー(結合キー/グループ化キー)に応じて分散する
変換 結合 ソート
MapReduceジョブ① MapReduceジョブ②
変換 結合 ソート
処理最適化
※最新バージョン(0.9.1) は 前バージョン(0.9.0) よりも 最適化ロジックを若干改善
35 Copyright © 2013 CAC Corporation. All rights reserved.
デバッガ対応
Eclipse上で実行・デバッグ可能 ◦ スタンドアローンJava VM上でアプリケーションを実行可能なシミュレータを搭載
36 Copyright © 2013 CAC Corporation. All rights reserved.
アプリケーション フ
ロー フロー
フローの分割
正確に言うと ◦ 処理フローはフロークラスで定義される
◦ アプリケーションは1つ以上のフロークラスから成る
処理フローが複雑な場合は、フロークラスを分割するとよい ◦ 最適化結果は変わらない
処理
処理
処理
処理
処理
37 Copyright © 2013 CAC Corporation. All rights reserved.
JAR作成機能
Hadoop上で実行可能なJARを作成する
$ hadoop jar WordCountFlow.jar ...
38 Copyright © 2013 CAC Corporation. All rights reserved.
JAR作成機能
JAR作成機能の内容 ◦ MANIFESTファイルの作成
メインクラスを設定
◦ 各ファイルをJARにまとめる
MANIFESTファイル
AZAREA-ClusterのJARファイル
アプリケーションのクラスファイル
その他の参照ライブラリ
自分でbuild.xmlを書いてもそれほど難しくないが、検証時等には便利
MANIFEST .MF
AZAREA-Cluster.jar
xxx.class
App.jar
xxx.class XXX.class
39 Copyright © 2013 CAC Corporation. All rights reserved.
Oozie連携
Oozie ◦ MapReduceジョブを実行できるワークフロースケジューラ
http://oozie.apache.org/
◦ そのままではAZAREA-Clusterのアプリケーションを実行できないので拡張して使用する
◦ Oozieを使っている人は少なそうなので詳細は割愛
40 Copyright © 2013 CAC Corporation. All rights reserved.
パフォーマンス
PigやHiveなどと比べて、極端に速くも遅くもないようである ◦ 以下は、結合1つとグループ化2つから成るアプリケーションの結果
◦ アプリケーションの内容によって速かったり遅かったりする 一概にどちらが速いとか遅いとかは言えない
0
60
120
180
240
300
360
420
480
AZAREA-Cluster Pig Hive
処理時間(秒)
実装方式 ジョブ数 処理時間(秒)
AZAREA-Cluster 2 221
Pig 3 424
Hive 2 247
41 Copyright © 2013 CAC Corporation. All rights reserved.
対応ディストリビューション
以下で動作確認済み ◦ EMC Greenplum MR
2.0
2.1
◦ Cloudera CDH
3系 3u4 3u5
4系 (MapReduce v1のみ対応) 4.1.1 4.1.2
◦ Amazon EMR
Hadoop 1.0.3 (Amazon Distribution)
Hadoop 0.20.205 (MapR M5 Edition v1.2.8)
Hadoop 0.20.205 (MapR M3 Edition v1.2.8)
42 Copyright © 2013 CAC Corporation. All rights reserved.
残念ながらオープンソースではございません ◦ 利用条件や価格についてはご相談ください
開発ガイドや評価版をダウンロード可能です ◦ http://www.cac.co.jp/product/azarea-cluster/download/index.html
「azarea-cluster」でググればたどりつけます
1/18に最新版(バージョン0.9.1)をリリース
問合せ先 ◦ azarea-cluster@cac.co.jp
AZAREA-Clusterの提供形態
43 Copyright © 2013 CAC Corporation. All rights reserved.
AZAREA-Clusterの適用分野
業務システムのバッチ処理 ◦ 高速化
◦ スケーラビリティの向上
ビッグデータ分析のためのデータ処理 ◦ データクレンジング処理
◦ データ集計処理
44 Copyright © 2013 CAC Corporation. All rights reserved.
おわり
Hadoopをもっと簡単に!
top related