SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
AZAREA-Cluster
Hadoopアプリケーションを
  GUIで簡単に開発!
                         2013年1月21日
                       株式会社シーエーシー
                            生産技術部
                             田中 等




       Copyright © 2013 CAC Corporation. All rights reserved.   1
自己紹介
   株式会社シーエーシー
    ◦ 独立系SIer
    ◦ 社員数 約1,300名
    ◦ 信託銀行、製薬業に強い




                    Copyright © 2013 CAC Corporation. All rights reserved.   2
自己紹介
   田中 等
    ◦ アプリケーションアーキテクト
    ◦ システム構築プロジェクトにおいて、アーキテクチャを設計し
      たりフレームワークを作成したりする
      Java、.NET、Flexなど




                          Copyright © 2013 CAC Corporation. All rights reserved.   3
自己紹介
   AZAREA-Cluster
    ◦ 「あざれあ くらすたー」と読みます
    ◦ AZAREAソリューションファミリーの1つ
    ◦ 名前の由来は省略
       興味ある方はホームページを参照してください
          http://www.cac.co.jp/product/azarea-cluster/
             「azarea-cluster」でググればたどりつけます




                              Copyright © 2013 CAC Corporation. All rights reserved.   4
アジェンダ
   経緯
    - なぜ、AZAREA-Clusterを作ったのか?


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


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



                    Copyright © 2013 CAC Corporation. All rights reserved.   5
経緯



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




              Copyright © 2013 CAC Corporation. All rights reserved.   6
Hadoopを使ってみよう
   CACでは、以前から業務システムのバッチ処理を開発
    していた
    ◦ パフォーマンス面では苦労することもあった

         Hadoopで解決できるのでは?




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

    ◦ これはいけそう!     160

                 処 120
                 理
                 時 80
                 間
                 (
                 分 40
                 )
                     0
                         0          8          16         24
                                        マシン数



    ◦ しかし
      アプリケーション開発の難易度は高い
         簡単に開発する方法は無いか?

                         Copyright © 2013 CAC Corporation. All rights reserved.   8
どうやってアプリを開発するか?
   生MapReduce
    ◦ 当初、これでサンプルアプリケーションを開発
    ◦ 難易度は高い




                  Copyright © 2013 CAC Corporation. All rights reserved.   9
どうやってアプリを開発するか?
   Pig、Hive
    ◦ SQLライクな言語
    ◦ 簡単なバッチなら簡単に書ける
    ◦ 複雑なバッチは無理
       SQLだけでは業務バッチを書けないのと同様




                    Copyright © 2013 CAC Corporation. All rights reserved.   10
AZAREA-Clusterの開発へ
   自分でアプリケーションフレームワークを作っ
    てしまえ!
    ◦ 簡単に効率よくHadoopアプリケーションを開発で
      きるように




                Copyright © 2013 CAC Corporation. All rights reserved.   11
方針



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




         Copyright © 2013 CAC Corporation. All rights reserved.   12
フレームワークの目標
          Hadoopにより
   分散アプリケーションの開発は簡単になった



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




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

            Copyright © 2013 CAC Corporation. All rights reserved.   13
アプリケーション開発環境
   (CACで一般的な)業務システム開発環境に近付ける
    ◦ OSはWindows
      Linuxにも対応
    ◦ Java言語
       (CACでは)JavaとVB.NETが主流
    ◦ Eclipseで開発・デバッグ可能
      コマンドラインは使わない
      GUIのプラグインも用意したい




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

                       Copyright © 2013 CAC Corporation. All rights reserved.   14
機能



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




            Copyright © 2013 CAC Corporation. All rights reserved.   15
AZAREA-Clusterの構成

        アプリケーション
                                                            編集



  AZAREA-Cluster                            AZAREA-Cluster
  フレームワーク          シミュレータ                     プラグイン




    Hadoop                         Eclipse
   【本番環境】                         【開発環境】

     Linux                    Windows/Linux
                    Copyright © 2013 CAC Corporation. All rights reserved.   16
AZAREA-Clusterの概念
   エンティティ
                                             エンティ                 エンティ
    ◦ データを表す                                  ティ                   ティ


   処理
    ◦ エンティティを入力し、エンティティを出力する                             処理
                                              ア
    ◦ 変換、結合、グループ化集計、ソート                       プ
                                              リ
                                              ケ        エンティ
                                              ー         ティ
   アプリケーション                                  シ
                                              ョ
    ◦ エンティティの処理フローとして表わされる                    ン
                                                         処理


                                                       エンティ
                                                        ティ



                     Copyright © 2013 CAC Corporation. All rights reserved.   17
エンティティ
   テキストファイルとマッピングされる
    ◦ TSV/CSV/正規表現(入力のみ)


   項目の型
    ◦   文字列/数値(int/long/BigDecimal/double)/日時
    ◦   固定長配列
    ◦   可変長リスト
    ◦   他のエンティティ           #商品コード   商品名      単価
          入れ子にできる         C101     フライパン    2000
                            C201                 中華鍋                  3000
                            C202                 土鍋                   7000
                エンティティ      ...                  ...                  ...




                           Copyright © 2013 CAC Corporation. All rights reserved.   18
エンティティクラス
   エンティティを保持するためのDTOクラス
   GUIまたはExcelファイルからクラスを生成する




                   Copyright © 2013 CAC Corporation. All rights reserved.   19
GUI編集機能
   GUIによりアプリケーションを編集できる
    ◦ 対象はフローの基本部分
        エンティティの種類
        処理の種類
        入出力関係
        キー
    ◦ 処理の詳細部分は手でコーディングする必要あり
      変換仕様
      集計式




                     Copyright © 2013 CAC Corporation. All rights reserved.   20
GUI編集機能
   デモアプリケーション仕様
           売上
                          顧客
        ・商品コード
                       ・顧客ID (PK)
        ・顧客ID
                       ・地域
        ・金額

                                     顧客IDで結合
                  結合

                                      地域でグループ化

                 グループ化


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


                       Copyright © 2013 CAC Corporation. All rights reserved.   21
GUI編集機能
   双方向
    ◦ フロー図⇨ソース だけでなく
    ◦ フロー図⇦ソース も可能
        Javaソースを解析し、フロー図を生成している
           実現にはEclipseのASTParserを利用
      フロー図の情報は全てJavaソース上に保存されている
           入出力関係は引数で
           座標情報はアノテーションで

                      ×
                                                      EntityFile<SalesEntity> ...

                                生成                    EntityFile<CustomerEntity> ...

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




                           Copyright © 2013 CAC Corporation. All rights reserved.            22
GUI編集機能
   手でコーディングした部分も失われない
    ◦ フロー情報とは別に解析される
    ◦ GUIでフローを編集しても保持される

           ×         解析情報
               表示
     フロー                             解析/生成
                    フロー情報                               Join<SalesEntity, CustomerEntity>...
    編集画面       編集
                                                            protected void merge(...) {
                                                                ...
                                                                ...
                                                            }
                                                        };
                    その他の情報
                                                        int i = 1;




                            Copyright © 2013 CAC Corporation. All rights reserved.             23
GUI編集機能
   アンドゥ・リドゥ
    ◦ GUI編集画面上でアンドゥ・リドゥ可能
    ◦ ソース生成後、テキストエディタ上でアンドゥ可能




                  Copyright © 2013 CAC Corporation. All rights reserved.   24
GUI編集機能
   SVG出力
    ◦ フロー図をSVGファイルとして出力可能
      Webブラウザ等で表示可能
    ◦ 実現にはApache Batikを利用
      画面描画と同じ要領でSVGデータを作成できる




                      Copyright © 2013 CAC Corporation. All rights reserved.   25
GUI編集機能
   GUI編集機能は「便利なオプション」
    ◦ GUIを使わなくてもアプリケーションの開発・修正は可能
      リファクタリングなどはその方がやり易い場合も
    ◦ 元々は全て手でコーディングする前提でフレームワークを設計
      ソースの構造を解析してフロー図を表示する機能を追加
      更に拡張し、表示だけでなく編集もできるように



                  アプリケーション
                                                                  編集




                  AZAREA-Cluster                   AZAREA-Cluster
                   フレームワーク                           プラグイン


                      Copyright © 2013 CAC Corporation. All rights reserved.   26
処理
   フレームワークで数種類の処理をクラスとして提供
    ◦ アプリケーションでは匿名クラスで継承して実装
    フレームワーク          処理
                    基底クラス



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



                                                                  グループ化
                                                                   ソート



       処理      処理           処理                   処理                   処理
       実装      実装           実装                   実装                   実装
    アプリケーション
                            Copyright © 2013 CAC Corporation. All rights reserved.   27
処理
   変換                                                             顧客 = A
    ◦ あるエンティティを別のエンティティに変換                                         商品 = ZZZ
                                                                   売上 = 2,000
    ◦ 1つの入力エンティティに対して、任意の個数                         顧客 = A
                                                    商品 = XXX
      のエンティティを出力可能                                  売上 = 10,000 顧客 = B
                                                                商品 = YYY
        0個でもよい                                                 売上 = 5,000



    ◦ 例)                                                        変換
       売上を10,000円未満と10,000円以上に分類
        する
                                                顧客 = A                顧客 = A
                                                商品 = ZZZ              商品 = XXX
                                                売上 = 2,000            売上 = 10,000

                                                顧客 = B
                                                商品 = YYY
                                                売上 = 5,000



                        Copyright © 2013 CAC Corporation. All rights reserved.      28
処理
   結合
    ◦ あるエンティティと別のエンティティを指定したキーで結合する
       キーは複数指定可能
       1対NやN対1の結合が可能
       任意の個数のエンティティを出力可能
            1対N結合で、1個出力することもN個出力することも可能


    ◦ 例)                                   社員 = ○○
                                           部門コード = 110
                                                                    部門コード = 110
                                                                    部門名 = “営業部”
       社員に部門を結合して部門名を付加する                 売上 = 10,000



                                                              結合

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



                        Copyright © 2013 CAC Corporation. All rights reserved.    29
処理
   結合
    ◦ 入力が大きい場合はReducer側で、小さい場合はMapper側で結合
      する




    Mapper    map   map                                  結合


    Reducer   結合    結合




                     Copyright © 2013 CAC Corporation. All rights reserved.   30
処理
   グループ化集計
    ◦ エンティティを指定したキーでグループ化して集計する
       キーは複数指定可能
       集計式は手でコーディングする必要あり                  顧客 = B         顧客 = A
                                                           商品 = ZZZ
              件数                           商品 = XXX
                                                           売上 = 2,000
                                            売上 = 10,000
              合計値                               顧客 = A
              最大値                               商品 = XXX
                                                 売上 = 10,000 顧客 = B
              最小値                                           商品 = YYY
              etc...                                        売上 = 5,000



    ◦ 例)                                                   グループ化
       顧客毎に売上金額を合計する

                                                顧客 = A               顧客 = B
                                                売上 = 12,000          売上 = 5,000



                        Copyright © 2013 CAC Corporation. All rights reserved.    31
処理
   グループ化集計
    ◦ Mapper側のメモリ内で一次集計を行い、Reducer側で最終集計を行う
        MapperからReducerへのデータ転送量が減少し、高速化する

    ◦ Combinerはデフォルトでは使用していない
        オーバーヘッドがあるので、逆に遅くなる場合がある




       Mapper    集計         集計                        集計



       Reducer   集計         集計                        集計



                       Copyright © 2013 CAC Corporation. All rights reserved.   32
処理
   ソート                                                    顧客 = A
                                                           売上 = 12,000
    ◦ エンティティを指定したキーでソートする                  顧客 = B
                                           売上 = 15,000
       キーは複数指定可能                                    顧客 = C
                                                     売上 = 8,000
       昇順/降順
    ◦ ソートされたエンティティを順次処理する
    ◦ 任意の個数のエンティティを出力可能                              ソート


    ◦ 例)                                          顧客 = B
                                                  売上 = 15,000
       売上金額順に顧客に連番を振る                            番号 = 1

                                                  顧客 = A
    ◦ ソートの拡張版として、グループ化とソート                        売上 = 12,000
                                                  番号 = 2
      を組み合わせた処理もあり
                                                  顧客 = C
                                                  売上 = 8,000
                                                  番号 = 3


                    Copyright © 2013 CAC Corporation. All rights reserved.   33
処理最適化
   フローをMapReduceジョブに変換する
   処理の種類、キーなどの制約、入出力関係を解析し、Mapperや
    Reducerに割り当てる
    ◦ 複数の処理が1つのMapperやReducerに割り当てられることもある
   分散の制御も行う
    ◦ 基本的にはキー(結合キー/グループ化キー)に応じて分散する

                                    アプリケーション
※最新バージョン(0.9.1) は            変換             結合            ソート
 前バージョン(0.9.0) よりも
 最適化ロジックを若干改善
                                        処理最適化


                     変換        結合                                      ソート

                     MapReduceジョブ①                      MapReduceジョブ②


                             Copyright © 2013 CAC Corporation. All rights reserved.   34
デバッガ対応
   Eclipse上で実行・デバッグ可能
    ◦ スタンドアローンJava VM上でアプリケーションを実行可能
      なシミュレータを搭載




                  Copyright © 2013 CAC Corporation. All rights reserved.   35
フローの分割
   正確に言うと
    ◦ 処理フローはフロークラスで定義される
    ◦ アプリケーションは1つ以上のフロークラ
      スから成る
                                                   処理            処理
   処理フローが複雑な場合は、フローク                       フ
                                            ロ
    ラスを分割するとよい                        ア     ー
                                      プ                  処理
    ◦ 最適化結果は変わらない                     リ
                                      ケ
                                      ー
                                      シ
                                      ョ                  処理
                                      ン     フ
                                            ロ
                                            ー
                                                         処理




                     Copyright © 2013 CAC Corporation. All rights reserved.   36
JAR作成機能
   Hadoop上で実行可能なJARを作成する
     $ hadoop jar WordCountFlow.jar ...




                           Copyright © 2013 CAC Corporation. All rights reserved.   37
JAR作成機能
   JAR作成機能の内容
    ◦ MANIFESTファイルの作成
        メインクラスを設定
                                      MANIFEST           AZAREA-           xxx.class
    ◦ 各ファイルをJARにまとめる                    .MF              Cluster.jar        xxx.class
                                                                             XXX.class
        MANIFESTファイル
        AZAREA-ClusterのJARファイル
        アプリケーションのクラスファイル
        その他の参照ライブラリ

   自分でbuild.xmlを書いてもそれほど難しくない                             App.jar
    が、検証時等には便利




                             Copyright © 2013 CAC Corporation. All rights reserved.      38
Oozie連携
   Oozie
    ◦ MapReduceジョブを実行できるワークフロースケジューラ
       http://oozie.apache.org/
    ◦ そのままではAZAREA-Clusterのアプリケーションを実行で
      きないので拡張して使用する
    ◦ Oozieを使っている人は少なそうなので詳細は割愛




                             Copyright © 2013 CAC Corporation. All rights reserved.   39
パフォーマンス
    PigやHiveなどと比べて、極端に速くも遅くもないようである
      ◦ 以下は、結合1つとグループ化2つから成るアプリケーションの結果
    実装方式             ジョブ数   処理時間(秒)
    AZAREA-Cluster      2        221
    Pig                 3        424     480
                                         420
    Hive                2        247
                                         360
                                         300
                                       処
                                       理 240
                                       時 180
                                       間
                                       ( 120
                                       秒
                                       )  60
                                           0
                                                AZAREA-Cluster    Pig          Hive


      ◦ アプリケーションの内容によって速かったり遅かったりする
            一概にどちらが速いとか遅いとかは言えない

                                 Copyright © 2013 CAC Corporation. All rights reserved.   40
対応ディストリビューション
   以下で動作確認済み
    ◦ 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)



                                 Copyright © 2013 CAC Corporation. All rights reserved.   41
AZAREA-Clusterの提供形態
   残念ながらオープンソースではございません
    ◦ 利用条件や価格についてはご相談ください

   開発ガイドや評価版をダウンロード可能です
    ◦ http://www.cac.co.jp/product/azarea-cluster/download/index.html
        「azarea-cluster」でググればたどりつけます
        1/18に最新版(バージョン0.9.1)をリリース

   問合せ先
    ◦ azarea-cluster@cac.co.jp




                                    Copyright © 2013 CAC Corporation. All rights reserved.   42
AZAREA-Clusterの適用分野
   業務システムのバッチ処理
    ◦ 高速化
    ◦ スケーラビリティの向上

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




                    Copyright © 2013 CAC Corporation. All rights reserved.   43
おわり




  Hadoopをもっと簡単に!


        Copyright © 2013 CAC Corporation. All rights reserved.   44

Contenu connexe

Similaire à AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AzareaCluster
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるMichitaka Terada
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~decode2016
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へCybozucommunity
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」Cybozucommunity
 
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話Kamonohashi
 
Engine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSEngine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSTakahiro Imanaka
 
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版Tomoaki Sawada
 
Nifty cloud c4 sa meetup
Nifty cloud c4 sa meetupNifty cloud c4 sa meetup
Nifty cloud c4 sa meetupYuichi Saotome
 
ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5Osamu Shimoda
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...Insight Technology, Inc.
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回Keiji Kamebuchi
 

Similaire à AZAREA-Cluster (Hadoop Conference Japan 2013 Winter) (20)

AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image) AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter Demo Image)
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
 
Parallel Technology
Parallel TechnologyParallel Technology
Parallel Technology
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へ
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
【2018年3月時点】Oracle Data Visualizaion ご紹介
【2018年3月時点】Oracle Data Visualizaion ご紹介【2018年3月時点】Oracle Data Visualizaion ご紹介
【2018年3月時点】Oracle Data Visualizaion ご紹介
 
uniPaaS SaaSビジネス
uniPaaS SaaSビジネスuniPaaS SaaSビジネス
uniPaaS SaaSビジネス
 
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
 
Engine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSEngine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaS
 
Ext js 20100526
Ext js 20100526Ext js 20100526
Ext js 20100526
 
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
プライベートクラウドの動向とIT業へのインパクト(インタリオセミナー072409)最終版
 
Nifty cloud c4 sa meetup
Nifty cloud c4 sa meetupNifty cloud c4 sa meetup
Nifty cloud c4 sa meetup
 
ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
IoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL EdgeIoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL Edge
 
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回
 

AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)

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