AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

44
1 Copyright © 2013 CAC Corporation. All rights reserved. 株式会社シーエーシー 生産技術部 田中 AZAREA-Cluster Hadoopアプリケーションを GUIで簡単に開発! 2013121

description

Hadoop Conference Japan 2013 Winterでの株式会社シーエーシーによるAZAREA-Clusterに関する発表「HadoopアプリケーションをGUIで簡単に開発」です。

Transcript of AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

Page 1: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

1 Copyright © 2013 CAC Corporation. All rights reserved.

株式会社シーエーシー

生産技術部

田中 等

AZAREA-Cluster

Hadoopアプリケーションを GUIで簡単に開発!

2013年1月21日

Page 2: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

2 Copyright © 2013 CAC Corporation. All rights reserved.

自己紹介

株式会社シーエーシー ◦ 独立系SIer

◦ 社員数 約1,300名

◦ 信託銀行、製薬業に強い

Page 3: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

3 Copyright © 2013 CAC Corporation. All rights reserved.

自己紹介

田中 等 ◦ アプリケーションアーキテクト

◦ システム構築プロジェクトにおいて、アーキテクチャを設計したりフレームワークを作成したりする Java、.NET、Flexなど

Page 4: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

4 Copyright © 2013 CAC Corporation. All rights reserved.

自己紹介

AZAREA-Cluster ◦ 「あざれあ くらすたー」と読みます

◦ AZAREAソリューションファミリーの1つ

◦ 名前の由来は省略 興味ある方はホームページを参照してください

http://www.cac.co.jp/product/azarea-cluster/ 「azarea-cluster」でググればたどりつけます

Page 5: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

5 Copyright © 2013 CAC Corporation. All rights reserved.

アジェンダ

経緯 -なぜ、AZAREA-Clusterを作ったのか?

方針 -どんなアプリケーションフレームワークにするのか?

機能 -AZAREA-Clusterで何ができるのか?

Page 6: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

6 Copyright © 2013 CAC Corporation. All rights reserved.

経緯

なぜ、 AZAREA-Clusterを 作ったのか?

Page 7: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

7 Copyright © 2013 CAC Corporation. All rights reserved.

Hadoopを使ってみよう

CACでは、以前から業務システムのバッチ処理を開発していた ◦ パフォーマンス面では苦労することもあった

Hadoopで解決できるのでは?

Page 8: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

8 Copyright © 2013 CAC Corporation. All rights reserved.

Hadoopを検証してみた

実際にHadoopでサンプルアプリケーションを作って検証してみた ◦ 売上データと店情報や営業担当情報を結合して、複数種類の集計

◦ しかし アプリケーション開発の難易度は高い

簡単に開発する方法は無いか?

0

40

80

120

160

0 8 16 24

処理時間(分)

マシン数

◦ これはいけそう!

Page 9: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

9 Copyright © 2013 CAC Corporation. All rights reserved.

どうやってアプリを開発するか?

生MapReduce ◦ 当初、これでサンプルアプリケーションを開発

◦ 難易度は高い

Page 10: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

10 Copyright © 2013 CAC Corporation. All rights reserved.

どうやってアプリを開発するか?

Pig、Hive ◦ SQLライクな言語

◦ 簡単なバッチなら簡単に書ける

◦ 複雑なバッチは無理 SQLだけでは業務バッチを書けないのと同様

Page 11: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

11 Copyright © 2013 CAC Corporation. All rights reserved.

AZAREA-Clusterの開発へ

自分でアプリケーションフレームワークを作ってしまえ! ◦簡単に効率よくHadoopアプリケーションを開発できるように

Page 12: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

12 Copyright © 2013 CAC Corporation. All rights reserved.

方針

どんなアプリケーションフレームワークに するか?

Page 13: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

13 Copyright © 2013 CAC Corporation. All rights reserved.

フレームワークの目標

Hadoopにより 分散アプリケーションの開発は簡単になった

もっともっと簡単にしたい

とは言え、まだまだ大多数の開発者にとっては難しい

Page 14: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

14 Copyright © 2013 CAC Corporation. All rights reserved.

アプリケーション開発環境

(CACで一般的な)業務システム開発環境に近付ける ◦ OSはWindows Linuxにも対応

◦ Java言語 (CACでは)JavaとVB.NETが主流

◦ Eclipseで開発・デバッグ可能 コマンドラインは使わない

GUIのプラグインも用意したい

導入コスト・学習コストが下がる

Page 15: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

15 Copyright © 2013 CAC Corporation. All rights reserved.

機能

AZAREA-Clusterで 何ができるのか?

Page 16: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

16 Copyright © 2013 CAC Corporation. All rights reserved.

AZAREA-Clusterの構成

Hadoop

【本番環境】

Eclipse

【開発環境】

AZAREA-Cluster

フレームワーク シミュレータ

AZAREA-Cluster

プラグイン

アプリケーション

編集

Windows/Linux Linux

Page 17: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

17 Copyright © 2013 CAC Corporation. All rights reserved.

アプリケーション

AZAREA-Clusterの概念

エンティティ ◦ データを表す

処理 ◦ エンティティを入力し、エンティティを出力する

◦ 変換、結合、グループ化集計、ソート

アプリケーション ◦ エンティティの処理フローとして表わされる

処理

処理

エンティティ

エンティティ

エンティティ

エンティティ

Page 18: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

18 Copyright © 2013 CAC Corporation. All rights reserved.

エンティティ

テキストファイルとマッピングされる ◦ TSV/CSV/正規表現(入力のみ)

項目の型 ◦ 文字列/数値(int/long/BigDecimal/double)/日時

◦ 固定長配列

◦ 可変長リスト

◦ 他のエンティティ

入れ子にできる

#商品コード 商品名 単価

C101 フライパン 2000

C201 中華鍋 3000

C202 土鍋 7000

... ... ... エンティティ

Page 19: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

19 Copyright © 2013 CAC Corporation. All rights reserved.

エンティティクラス

エンティティを保持するためのDTOクラス

GUIまたはExcelファイルからクラスを生成する

Page 20: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

20 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

GUIによりアプリケーションを編集できる ◦ 対象はフローの基本部分

エンティティの種類

処理の種類

入出力関係

キー

◦ 処理の詳細部分は手でコーディングする必要あり 変換仕様

集計式

Page 21: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

21 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

デモアプリケーション仕様

結合

売上 ・商品コード ・顧客ID ・金額

顧客 ・顧客ID (PK) ・地域

地域別売上 ・地域 (PK) ・件数 ・金額

グループ化

顧客IDで結合

地域でグループ化

Page 22: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

22 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

双方向 ◦ フロー図⇨ソース だけでなく

◦ フロー図⇦ソース も可能

Javaソースを解析し、フロー図を生成している 実現にはEclipseのASTParserを利用

フロー図の情報は全てJavaソース上に保存されている 入出力関係は引数で 座標情報はアノテーションで

EntityFile<SalesEntity> ... EntityFile<CustomerEntity> ... Join<SalesEntity, CustomerEntity>... protected void merge(...) { ... } };

×

解析

生成

Page 23: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

23 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

手でコーディングした部分も失われない ◦ フロー情報とは別に解析される

◦ GUIでフローを編集しても保持される

Join<SalesEntity, CustomerEntity>... protected void merge(...) { ... ... } };

解析情報

フロー情報

その他の情報

×

フロー 編集画面

表示

編集 ... ...

解析/生成

int i = 1;

Page 24: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

24 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

アンドゥ・リドゥ ◦ GUI編集画面上でアンドゥ・リドゥ可能

◦ ソース生成後、テキストエディタ上でアンドゥ可能

Page 25: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

25 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

SVG出力 ◦ フロー図をSVGファイルとして出力可能

Webブラウザ等で表示可能

◦ 実現にはApache Batikを利用 画面描画と同じ要領でSVGデータを作成できる

Page 26: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

26 Copyright © 2013 CAC Corporation. All rights reserved.

GUI編集機能

GUI編集機能は「便利なオプション」 ◦ GUIを使わなくてもアプリケーションの開発・修正は可能

リファクタリングなどはその方がやり易い場合も

◦ 元々は全て手でコーディングする前提でフレームワークを設計 ソースの構造を解析してフロー図を表示する機能を追加

更に拡張し、表示だけでなく編集もできるように

AZAREA-Cluster

フレームワーク

AZAREA-Cluster

プラグイン

アプリケーション 編集

Page 27: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

27 Copyright © 2013 CAC Corporation. All rights reserved.

アプリケーション

フレームワーク

処理

フレームワークで数種類の処理をクラスとして提供 ◦ アプリケーションでは匿名クラスで継承して実装

処理 基底クラス

変換 結合 グループ化 ソート

グループ化 ソート

処理 実装

処理 実装

処理 実装

処理 実装

処理 実装

Page 28: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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

Page 29: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

29 Copyright © 2013 CAC Corporation. All rights reserved.

処理

結合 ◦ あるエンティティと別のエンティティを指定したキーで結合する

キーは複数指定可能

1対NやN対1の結合が可能

任意の個数のエンティティを出力可能 1対N結合で、1個出力することもN個出力することも可能

◦ 例) 社員に部門を結合して部門名を付加する

社員 = ○○ 部門コード = 110 売上 = 10,000

結合

部門コード = 110 部門名 = “営業部”

社員 = ○○ 部門コード = 110 部門名 = “営業部”

Page 30: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

30 Copyright © 2013 CAC Corporation. All rights reserved.

処理

結合 ◦ 入力が大きい場合はReducer側で、小さい場合はMapper側で結合する

結合 Mapper

Reducer 結合 結合

map map

Page 31: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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

Page 32: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

32 Copyright © 2013 CAC Corporation. All rights reserved.

処理

グループ化集計 ◦ Mapper側のメモリ内で一次集計を行い、Reducer側で最終集計を行う

MapperからReducerへのデータ転送量が減少し、高速化する

◦ Combinerはデフォルトでは使用していない

オーバーヘッドがあるので、逆に遅くなる場合がある

集計

集計

Mapper

Reducer

集計

集計

集計

集計

Page 33: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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

Page 34: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

34 Copyright © 2013 CAC Corporation. All rights reserved.

アプリケーション

処理最適化

フローをMapReduceジョブに変換する

処理の種類、キーなどの制約、入出力関係を解析し、MapperやReducerに割り当てる ◦ 複数の処理が1つのMapperやReducerに割り当てられることもある

分散の制御も行う ◦ 基本的にはキー(結合キー/グループ化キー)に応じて分散する

変換 結合 ソート

MapReduceジョブ① MapReduceジョブ②

変換 結合 ソート

処理最適化

※最新バージョン(0.9.1) は 前バージョン(0.9.0) よりも 最適化ロジックを若干改善

Page 35: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

35 Copyright © 2013 CAC Corporation. All rights reserved.

デバッガ対応

Eclipse上で実行・デバッグ可能 ◦ スタンドアローンJava VM上でアプリケーションを実行可能なシミュレータを搭載

Page 36: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

36 Copyright © 2013 CAC Corporation. All rights reserved.

アプリケーション フ

ロー フロー

フローの分割

正確に言うと ◦ 処理フローはフロークラスで定義される

◦ アプリケーションは1つ以上のフロークラスから成る

処理フローが複雑な場合は、フロークラスを分割するとよい ◦ 最適化結果は変わらない

処理

処理

処理

処理

処理

Page 37: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

37 Copyright © 2013 CAC Corporation. All rights reserved.

JAR作成機能

Hadoop上で実行可能なJARを作成する

$ hadoop jar WordCountFlow.jar ...

Page 38: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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

Page 39: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

39 Copyright © 2013 CAC Corporation. All rights reserved.

Oozie連携

Oozie ◦ MapReduceジョブを実行できるワークフロースケジューラ

http://oozie.apache.org/

◦ そのままではAZAREA-Clusterのアプリケーションを実行できないので拡張して使用する

◦ Oozieを使っている人は少なそうなので詳細は割愛

Page 40: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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

Page 41: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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)

Page 42: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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)をリリース

問合せ先 ◦ [email protected]

AZAREA-Clusterの提供形態

Page 43: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

43 Copyright © 2013 CAC Corporation. All rights reserved.

AZAREA-Clusterの適用分野

業務システムのバッチ処理 ◦ 高速化

◦ スケーラビリティの向上

ビッグデータ分析のためのデータ処理 ◦ データクレンジング処理

◦ データ集計処理

Page 44: AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

44 Copyright © 2013 CAC Corporation. All rights reserved.

おわり

Hadoopをもっと簡単に!