狠狠撸

狠狠撸Share a Scribd company logo
贰惭搁勉强会発表资料


                   アクセスログ解析システム構築事例
                    インフラ設計編/アプリ設計編


                                        2011/12/15
                                      ヴェルク株式会社

                                       津久井 浩太郎
                                        石田 智志


Copyright ?2011 by Velc, Inc. Japan
Agenda

 ? インフラ設計編 (by 津久井)
       ?      贰惭搁を利用したシステム构成例
       ?      Hadoop/EMRのインフラ設計のポイント

 ? アプリ設計編 (by 石田)
       ?      Hiveについて
       ?      アプリケーション実装事例




Copyright ?2011 by Velc, Inc. Japan
インフラ設計編




Copyright ?2011 by Velc, Inc. Japan
自己绍介

               津久井浩太郎 (@quarterkota)


 ?ITコンサル(4年半) → ITベンチャー(2年) → 起業(昨年末)
 ?もともとは基幹系を中心としたインフラ畑出身
 ?現在はPMや営業や事業企画等の何でも屋状態

 ?好きなAWSのサービスはRDS
 ?最近はまってるサービスはVPC
 ?スキーとダイビングが好き




Copyright ?2011 by Velc, Inc. Japan
贰惭搁を利用したシステム构成例

                    ログ計測                       集計管理(UI?EMR制御)
                    ELB/EC2                    ELB/EC2/EBS/RDS
                    EBS/AutoScale

                    アクセスログデータの生成
                                                     起動/制御
                          Hadoop Job
                          EMR
        ログ                集計条件に従った集計処理
       取り込み
                                       ログ    集計結果
                                      取り込み   取り込み

                    データストア(アクセスログ、集計結果CSVの保存)
                    S3


Copyright ?2011 by Velc, Inc. Japan
贰惭搁を利用したシステム构成例

                    ログ計測                       集計管理(UI?EMR制御)
                    ELB/EC2                    ELB/EC2/EBS/RDS
                    EBS/AutoScale

                    アクセスログデータの生成
                                                     起動/制御
                          Hadoop Job
                          EMR
        ログ                集計条件に従った集計処理
       取り込み
                                       ログ    集計結果
                                      取り込み   取り込み

                    データストア(アクセスログ、集計結果CSVの保存)
                    S3


Copyright ?2011 by Velc, Inc. Japan
贰惭搁を利用したシステム构成例


              1.利用時のみ起動するインスタンス群
                       → 運用コストを安価に
                                      Hadoop Job
                                      EMR
                                      集計条件に従った集計処理




Copyright ?2011 by Velc, Inc. Japan
贰惭搁を利用したシステム构成例

                    ログ計測                       集計管理(UI?EMR制御)
                    ELB/EC2                    ELB/EC2/EBS/RDS
                    EBS/AutoScale

                    アクセスログデータの生成
                                                     起動/制御
                          Hadoop Job
                          EMR
        ログ                集計条件に従った集計処理
       取り込み
                                       ログ    集計結果
                                      取り込み   取り込み

                    データストア(アクセスログ、集計結果CSVの保存)
                    S3


Copyright ?2011 by Velc, Inc. Japan
贰惭搁を利用したシステム构成例

                                      集計管理(UI?EMR制御)
                                      ELB/EC2/EBS/RDS



                                            起動/制御




       2.EMRインスタンス群の起動状況の監視/管理
                      →EMRの安定運用



Copyright ?2011 by Velc, Inc. Japan
贰惭搁选定时に気をつけること


                                       大量データ

                                       バッチ集計

                                      スモールスタート




Copyright ?2011 by Velc, Inc. Japan
アプリ設計編




Copyright ?2011 by Velc, Inc. Japan
自己绍介


? 石田 智志(@o918)


? 広告系システム会社(4年程) → VELC(9ヶ月目)


? B to Bのシステムの開発 → AWS周りの検証and開発


? 好きなAWSサービス → EC2


Copyright ?2011 by Velc, Inc. Japan
Hiveについて



? MapReduceのラッパー



? SQL(HiveQL)で操作ができる


  http://www.atmarkit.co.jp/fdb/single/s_hive/hive_01.html
  http://hive.apache.org/



Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~データ蓄積~

? RDBのようにTableを作成しINSERTでデータ挿入可

                                      hive> CREAET TABLE ...
                                          > INSERT INTO ...


? Hadoop(EMR)が常時起動していない



? S3上にデータをアップロード



Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~データ蓄積~
 ? データ格納イメージ
Hive TABLE 構成                          S3 構成
                                        バケット
       ACCESS_LOG                        ACCESS_LOG※テーブル
                                          ACCESS_YM=201111※パーテーション
 ? ACCESS_DATETIME                        ACCESS_YM=201112※パーテーション
 ? REMOTE_IP                                ログ1
 ? USER_AGENT                               ログ2
  ? URL
2011-12-14 19:00:00,xxx.xxx.xxx.xxx,iPhone,http://velc.biz/,http://velc.jp/
  ? REFERER
2011-12-14 19:00:10,xxx.xxx.xxx.xxx,IE,http://velc.com/,http://velc.jp/
  ? ACCESS_YM
2011-12-14 19:10:00,xxx.xxx.xxx.xxx,firefox,http://velc.co.jp/,
    (パーテーション)
2011-12-14 19:12:30,xxx.xxx.xxx.xxx,chorme,http://velc.ne.jp/,
...


 Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~データ抽出~

? RDBのように操作できるのでSELECTでデータ抽出

                                      hive> SELECT * FROM ...


? Hadoop(EMR)が常時起動していない



? API経由でEMRを起動(Ruby Client)
     $ elastic-mapreduce --create --name *** --num-instances
     * --instance-type m1.small --hive-interactive

Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~データ抽出~
? Hadoop Hive環境が立ち上がったのでデータ抽出

                                      hive> SELECT * FROM ...


? Hive上にTableとデータが存在しない


? CREATE文でTableの作成とS3上のデータをロード
     hive> CREATE EXTERNAL ACCESS_LOG
            (ACCESS_DATETIME STRING,...)
            PARTITIONED BY (ACCESS_YM STRING)
            ... LOCATION 's3://バケット/ACCESS_LOG/';
         > ALTER TABLE ACCESS_LOG RECOVER PARTITIONS;

Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~データ抽出~
? Hadoop Hive環境 + S3 DATA

                                      hive> SELECT * FROM ...


? SELECTの出力先をS3に指定
hive> INSERT OVERWRITE DIRECTORY ?s3://バケット/***'
     SELECT ACCESS_DATETIME FROM ACCESS_LOG WHERE ...;
? EMR起動時にHiveQLを指定
$ elastic-mapreduce --create --name *** --num-instances *
--instance-type m1.small --hive-interactive
--args ?"s3://us-west-1.elasticmapreduce/libs/hive/hive-script?”
,?"--base-path?",?"s3://us-west-1.elasticmapreduce/libs/hive/?”
,?“--run-hive-script?”,?“--args?”,?“-f?”,?“s3://バケット/HiveQLFile?”

Copyright ?2011 by Velc, Inc. Japan
アプリ実装事例 ~その他~



? EMRエラーハンドリング



? EMR完了確認



? EMR起動制限



Copyright ?2011 by Velc, Inc. Japan
ご清聴ありがとうございました




                                      enjoy life and creation

Copyright ?2011 by Velc, Inc. Japan

More Related Content

20111215冲第1回贰惭搁勉强会発表资料

  • 1. 贰惭搁勉强会発表资料 アクセスログ解析システム構築事例 インフラ設計編/アプリ設計編 2011/12/15 ヴェルク株式会社 津久井 浩太郎 石田 智志 Copyright ?2011 by Velc, Inc. Japan
  • 2. Agenda ? インフラ設計編 (by 津久井) ? 贰惭搁を利用したシステム构成例 ? Hadoop/EMRのインフラ設計のポイント ? アプリ設計編 (by 石田) ? Hiveについて ? アプリケーション実装事例 Copyright ?2011 by Velc, Inc. Japan
  • 4. 自己绍介 津久井浩太郎 (@quarterkota) ?ITコンサル(4年半) → ITベンチャー(2年) → 起業(昨年末) ?もともとは基幹系を中心としたインフラ畑出身 ?現在はPMや営業や事業企画等の何でも屋状態 ?好きなAWSのサービスはRDS ?最近はまってるサービスはVPC ?スキーとダイビングが好き Copyright ?2011 by Velc, Inc. Japan
  • 5. 贰惭搁を利用したシステム构成例 ログ計測 集計管理(UI?EMR制御) ELB/EC2 ELB/EC2/EBS/RDS EBS/AutoScale アクセスログデータの生成 起動/制御 Hadoop Job EMR ログ 集計条件に従った集計処理 取り込み ログ 集計結果 取り込み 取り込み データストア(アクセスログ、集計結果CSVの保存) S3 Copyright ?2011 by Velc, Inc. Japan
  • 6. 贰惭搁を利用したシステム构成例 ログ計測 集計管理(UI?EMR制御) ELB/EC2 ELB/EC2/EBS/RDS EBS/AutoScale アクセスログデータの生成 起動/制御 Hadoop Job EMR ログ 集計条件に従った集計処理 取り込み ログ 集計結果 取り込み 取り込み データストア(アクセスログ、集計結果CSVの保存) S3 Copyright ?2011 by Velc, Inc. Japan
  • 7. 贰惭搁を利用したシステム构成例 1.利用時のみ起動するインスタンス群 → 運用コストを安価に Hadoop Job EMR 集計条件に従った集計処理 Copyright ?2011 by Velc, Inc. Japan
  • 8. 贰惭搁を利用したシステム构成例 ログ計測 集計管理(UI?EMR制御) ELB/EC2 ELB/EC2/EBS/RDS EBS/AutoScale アクセスログデータの生成 起動/制御 Hadoop Job EMR ログ 集計条件に従った集計処理 取り込み ログ 集計結果 取り込み 取り込み データストア(アクセスログ、集計結果CSVの保存) S3 Copyright ?2011 by Velc, Inc. Japan
  • 9. 贰惭搁を利用したシステム构成例 集計管理(UI?EMR制御) ELB/EC2/EBS/RDS 起動/制御 2.EMRインスタンス群の起動状況の監視/管理 →EMRの安定運用 Copyright ?2011 by Velc, Inc. Japan
  • 10. 贰惭搁选定时に気をつけること 大量データ バッチ集計 スモールスタート Copyright ?2011 by Velc, Inc. Japan
  • 12. 自己绍介 ? 石田 智志(@o918) ? 広告系システム会社(4年程) → VELC(9ヶ月目) ? B to Bのシステムの開発 → AWS周りの検証and開発 ? 好きなAWSサービス → EC2 Copyright ?2011 by Velc, Inc. Japan
  • 13. Hiveについて ? MapReduceのラッパー ? SQL(HiveQL)で操作ができる http://www.atmarkit.co.jp/fdb/single/s_hive/hive_01.html http://hive.apache.org/ Copyright ?2011 by Velc, Inc. Japan
  • 14. アプリ実装事例 ~データ蓄積~ ? RDBのようにTableを作成しINSERTでデータ挿入可 hive> CREAET TABLE ... > INSERT INTO ... ? Hadoop(EMR)が常時起動していない ? S3上にデータをアップロード Copyright ?2011 by Velc, Inc. Japan
  • 15. アプリ実装事例 ~データ蓄積~ ? データ格納イメージ Hive TABLE 構成 S3 構成 バケット ACCESS_LOG ACCESS_LOG※テーブル ACCESS_YM=201111※パーテーション ? ACCESS_DATETIME ACCESS_YM=201112※パーテーション ? REMOTE_IP ログ1 ? USER_AGENT ログ2 ? URL 2011-12-14 19:00:00,xxx.xxx.xxx.xxx,iPhone,http://velc.biz/,http://velc.jp/ ? REFERER 2011-12-14 19:00:10,xxx.xxx.xxx.xxx,IE,http://velc.com/,http://velc.jp/ ? ACCESS_YM 2011-12-14 19:10:00,xxx.xxx.xxx.xxx,firefox,http://velc.co.jp/, (パーテーション) 2011-12-14 19:12:30,xxx.xxx.xxx.xxx,chorme,http://velc.ne.jp/, ... Copyright ?2011 by Velc, Inc. Japan
  • 16. アプリ実装事例 ~データ抽出~ ? RDBのように操作できるのでSELECTでデータ抽出 hive> SELECT * FROM ... ? Hadoop(EMR)が常時起動していない ? API経由でEMRを起動(Ruby Client) $ elastic-mapreduce --create --name *** --num-instances * --instance-type m1.small --hive-interactive Copyright ?2011 by Velc, Inc. Japan
  • 17. アプリ実装事例 ~データ抽出~ ? Hadoop Hive環境が立ち上がったのでデータ抽出 hive> SELECT * FROM ... ? Hive上にTableとデータが存在しない ? CREATE文でTableの作成とS3上のデータをロード hive> CREATE EXTERNAL ACCESS_LOG (ACCESS_DATETIME STRING,...) PARTITIONED BY (ACCESS_YM STRING) ... LOCATION 's3://バケット/ACCESS_LOG/'; > ALTER TABLE ACCESS_LOG RECOVER PARTITIONS; Copyright ?2011 by Velc, Inc. Japan
  • 18. アプリ実装事例 ~データ抽出~ ? Hadoop Hive環境 + S3 DATA hive> SELECT * FROM ... ? SELECTの出力先をS3に指定 hive> INSERT OVERWRITE DIRECTORY ?s3://バケット/***' SELECT ACCESS_DATETIME FROM ACCESS_LOG WHERE ...; ? EMR起動時にHiveQLを指定 $ elastic-mapreduce --create --name *** --num-instances * --instance-type m1.small --hive-interactive --args ?"s3://us-west-1.elasticmapreduce/libs/hive/hive-script?” ,?"--base-path?",?"s3://us-west-1.elasticmapreduce/libs/hive/?” ,?“--run-hive-script?”,?“--args?”,?“-f?”,?“s3://バケット/HiveQLFile?” Copyright ?2011 by Velc, Inc. Japan
  • 19. アプリ実装事例 ~その他~ ? EMRエラーハンドリング ? EMR完了確認 ? EMR起動制限 Copyright ?2011 by Velc, Inc. Japan
  • 20. ご清聴ありがとうございました enjoy life and creation Copyright ?2011 by Velc, Inc. Japan