ソーシャルゲームのEMR活用事例

知教 本間
知教 本間システムオペレーションエンジニア at 株式会社gumi
ソーシャルゲームのEMR活用事例
       ∼ユーザに愛されるカスタマーサポートを目指して∼




11年12月16日金曜日
自己紹介

          Name:本間 知教(ほんま とものり)
          Twitter:@CkReal
          経歴
               2008年4月∼2011年9月

                国内某ITコンサルティング会社:インフラ担当

               2011年9月∼

                株式会社gumi:インフラand解析チーム

          好きなAWS:EMR(とS3)
                                 2
11年12月16日金曜日
アジェンダ

       1.EMR利用に至る経緯
       2.gumiのEMR活用事例
       3.EMRを使ってみて




                        3
11年12月16日金曜日
EMR利用に至る経緯




                   4
11年12月16日金曜日
gumiの課題

          CS(カスタマーサポート)の応対負荷
               エンジニアが調査に時間を取れない
               NFSサーバが単一障害点
     gumiのカスタマーサポート概略図




                              対応が遅くなりがち            APPサーバ
       ゲームユーザ                                        syslog-ng
                                                       転送
       質問      回答                 回答
                                                  NFSサーバ
                                 調査依頼
                         CS               エンジニア
                                  5
11年12月16日金曜日
現在のログ状況

         例)任侠道のアクションログ
               最大18GB(圧縮2.4GB)/日
               ログ形式(赤字は整形)
               【日付】【ホスト名】【アプリ名】

               【アクション名】 【ユーザID】【アクション詳細】

     Nov 1 23:59:59 hogehoge-ap1 hogehoge

     ADD_MONEY 12345 [BeforeMoney] 67979 [AfterMoney]     68024 [Money] 45

     Nov 1 23:59:59 hogehoge-ap2 hogehoge

     CONSUME_POWER 12345 [BeforePower] 25       [AfterPower] 20 [ConsumePower] 5
                                            6
11年12月16日金曜日
DB投入時のドキュメント形式
    ユーザ/時のアクション内容をJSON形式で格納
    例)MongoDB格納後のログ(一部整形&省略)
       "_id" : "df41b04eb72d29b4a30955f2de1a20134e187cd6f59f0d3df0468d22",
       "app" : "hogehoge",
       "userid" : "12345",
       "dateint" : 20111101,
       "hourint" : 23,                                    ユーザIDごとに、
       "actions" : [
                                                      アクションレコードを格納
            "CONSUME_POWER",
            "ADD_MONEY"
       ],                                            時刻フィールドを利用して、
       "records" : [                                MongoDBのShardingキーとする
          {
             "action" : "ADD_MONEY",
             "timeint" : 235959,                     ユーザごとの各アクションを
          }                                                 配列として格納
       ]
                                        7
11年12月16日金曜日
EMR or EC2?

               Amazon S3とEMRのコラボが素敵
                NFSサーバの障害リスク解消
                インスタンスを常時稼動させる必要がない
                過去ログからも調査・解析できるようにできる




                           8
11年12月16日金曜日
解析方法の模索

          EMR利用時に、何のプロダクトを使うか?
               Pythonが利用可能なため、Hadoop Streamingを採用

               プロダクト           メリット         デメリット


                Pig         複雑な処理も記述可能   スクリプト習得コスト


                                         ある程度、ログが整形
                Hive        SQLに近い記述方法
                                         されている必要がある


         Hadoop Streaming   多くの言語で対応可能   MapReduce習得コスト


                                9
11年12月16日金曜日
gumiのEMR活用事例




                    10
11年12月16日金曜日
gumiの解析システム構成Ver0.3

          日次で各アプリのアクションログを集計
                     Amazon S3                     Amazon EMR

                        圧縮アクションログ         集計ログ
                        圧縮アクションログ         集計ログ
                         圧縮アクションログ         集計ログ

       NFSサーバ1
           アクションログ
                                                   DBサーバ
                                                           Shard1
       NFSサーバ2
           アクションログ                                         Shard2
                         圧縮(gzip)
                                                           Shard3
                                          mongos
       NFSサーバ3           アクションログ                           Shard4
           アクションログ
                         アクションログ
                          アクションログ         config
                                                           Shard5
                           バッチサーバ
                                                           Shard6

                                     11            ReplicaSets & Sharding
11年12月16日金曜日
MapReduce処理
          2000万件超/日のアクションを約30万件に集計
               --bootstrap-action
                 Python2.7インストールスクリプト

               --mapper

                 アクションログを以下のKey/Valueに整形

                    [Key]【アプリ名】/【ユーザID】/【日付】/【時刻】

                    [Value]action:【アクション種別】,timeint:【時刻】,params:{“AAA:123,…”}

               --reducer

                 Mapperで処理されたValue内のactionを集約

                    [Value]actions:[【アクション種別1】,【アクション種別2】…] ,records:[action:…]


                                               12
11年12月16日金曜日
とある一日のバッチ処理

          前日分の各アプリのアクションログを集計
               EMRは各アプリごとのクラスタで起動

               各アプリのEMR実行は、2h程度で終了

   0:00         1:00            3:00               7:00



     転送&圧縮             EMR実行           MongoDB挿入
    (並列実行)             (並列実行)          (順次実行)




                                 13
11年12月16日金曜日
EMRを使ってみて




                   14
11年12月16日金曜日
EMRを使ってみて

               S3上のファイルをいつでも利用できる
               EC2⇔S3間の転送は、20MB/sec程度

               必要なときだけ、EMRクラスタを使える
               Hadoopクラスタを管理する必要がない

               変化する要件にも対応しやすい
               とりあえず、S3に元ファイルはあるしねw




                            15
11年12月16日金曜日
EMRを使ってみて

          たまにジョブが失敗する
               Reduce処理が終わらない?
               集計ログを回収しきれない?

          チューニング方法模索中…
               毎時集計まで対応予定
          ファイルサイズ        Master                Slave        実行時間
               8.4GB    m1.xlarge         m2.4xlarge × 4台    2h12m
               3.2GB    c1.xlarge         m1.xlarge × 3台     44分
               835MB    c1.xlarge         m1.xlarge × 3台     28分
               22GB     m2.4xlarge        m2.4xlarge × 2台   FAILED…

                                     16
11年12月16日金曜日
EMR実行途中のCPU使用率

          リニアにスケールさせるのは、なかなか難しい




11年12月16日金曜日
ご清聴ありがとうございました。




                     18
11年12月16日金曜日
1 of 18

Recommended

20111215_第1回EMR勉強会発表資料 by
20111215_第1回EMR勉強会発表資料20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料Kotaro Tsukui
2.5K views20 slides
AWS Black Belt Techシリーズ Amazon EMR by
AWS Black Belt Techシリーズ  Amazon EMRAWS Black Belt Techシリーズ  Amazon EMR
AWS Black Belt Techシリーズ Amazon EMRAmazon Web Services Japan
27.6K views74 slides
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips by
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsyuichi_komatsu
6.3K views82 slides
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義) by
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)Amazon Web Services Japan
18K views60 slides
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce by
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduceAWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduceAmazon Web Services Japan
102.4K views84 slides
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回- by
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-SORACOM, INC
4K views56 slides

More Related Content

What's hot

エンタープライズワークロードにおけるAmazon Auroraの活用 by
エンタープライズワークロードにおけるAmazon Auroraの活用エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用Amazon Web Services Japan
2.8K views47 slides
Aurora by
AuroraAurora
Auroramaruyama097
3.3K views253 slides
Amazon Aurora by
Amazon AuroraAmazon Aurora
Amazon AuroraShinpei Ohtani
5.2K views88 slides
AWS Black Belt Techシリーズ Amazon Redshift by
AWS Black Belt Techシリーズ  Amazon RedshiftAWS Black Belt Techシリーズ  Amazon Redshift
AWS Black Belt Techシリーズ Amazon RedshiftAmazon Web Services Japan
36.1K views44 slides
データレイクを基盤としたAWS上での機械学習サービス構築 by
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築Amazon Web Services Japan
11.4K views63 slides
はじめてのAmazon RDS for PostgreSQL by
はじめてのAmazon RDS for PostgreSQLはじめてのAmazon RDS for PostgreSQL
はじめてのAmazon RDS for PostgreSQLJunpei Nakada
5.4K views29 slides

What's hot(20)

エンタープライズワークロードにおけるAmazon Auroraの活用 by Amazon Web Services Japan
エンタープライズワークロードにおけるAmazon Auroraの活用エンタープライズワークロードにおけるAmazon Auroraの活用
エンタープライズワークロードにおけるAmazon Auroraの活用
データレイクを基盤としたAWS上での機械学習サービス構築 by Amazon Web Services Japan
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築
はじめてのAmazon RDS for PostgreSQL by Junpei Nakada
はじめてのAmazon RDS for PostgreSQLはじめてのAmazon RDS for PostgreSQL
はじめてのAmazon RDS for PostgreSQL
Junpei Nakada5.4K views
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ by Yasuhiro Matsuo
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo5K views
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶ by Amazon Web Services Japan
スケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶスケーラブルな Deep Leaning  フレームワーク "Apache MXNet” を AWS で学ぶ
スケーラブルな Deep Leaning フレームワーク "Apache MXNet” を AWS で学ぶ
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ by Amazon Web Services Japan
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス by Amazon Web Services Japan
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Sparkストリーミング検証 by BrainPad Inc.
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証
BrainPad Inc. 2.7K views
クラウド上のデータ活用デザインパターン by Amazon Web Services Japan
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターン
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法 by SORACOM, INC
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法次世代ディザスタリカバリを成功させるアマゾンクラウド活用法
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法
SORACOM, INC8.7K views

Viewers also liked

クックパッドでのemr利用事例 by
クックパッドでのemr利用事例クックパッドでのemr利用事例
クックパッドでのemr利用事例Tatsuya Sasaki
4.6K views38 slides
Groongaでのタグ検索と表記揺れとの戦い by
Groongaでのタグ検索と表記揺れとの戦いGroongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦いNaoya Murakami
3.2K views46 slides
Tabemirusalessheet20160610 by
Tabemirusalessheet20160610Tabemirusalessheet20160610
Tabemirusalessheet20160610tabemiru-support
96.3K views14 slides
MySQLユーザ視点での小さく始めるElasticsearch by
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchKentaro Yoshida
16.8K views59 slides
ソーシャルアプリにおけるRedisの活用事例とトラブル事例 by
ソーシャルアプリにおけるRedisの活用事例とトラブル事例ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例leverages_event
12.8K views31 slides
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR) by
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)
[AWSマイスターシリーズ] Amazon Elastic MapReduce (EMR)Amazon Web Services Japan
13.2K views67 slides

Viewers also liked(20)

クックパッドでのemr利用事例 by Tatsuya Sasaki
クックパッドでのemr利用事例クックパッドでのemr利用事例
クックパッドでのemr利用事例
Tatsuya Sasaki4.6K views
Groongaでのタグ検索と表記揺れとの戦い by Naoya Murakami
Groongaでのタグ検索と表記揺れとの戦いGroongaでのタグ検索と表記揺れとの戦い
Groongaでのタグ検索と表記揺れとの戦い
Naoya Murakami3.2K views
MySQLユーザ視点での小さく始めるElasticsearch by Kentaro Yoshida
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida16.8K views
ソーシャルアプリにおけるRedisの活用事例とトラブル事例 by leverages_event
ソーシャルアプリにおけるRedisの活用事例とトラブル事例ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例
leverages_event12.8K views
DeepSecurityでシステムを守る運用を幾つか by Hirokazu Yoshida
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つか
Hirokazu Yoshida10.6K views
Redis勉強会資料(2015/06 update) by Yuji Otani
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
Yuji Otani52.5K views
MongoDBで作るソーシャルデータ新解析基盤 by Takahiro Inoue
MongoDBで作るソーシャルデータ新解析基盤MongoDBで作るソーシャルデータ新解析基盤
MongoDBで作るソーシャルデータ新解析基盤
Takahiro Inoue29K views
MongoDB on AWSクラウドという選択 by Yasuhiro Matsuo
MongoDB on AWSクラウドという選択MongoDB on AWSクラウドという選択
MongoDB on AWSクラウドという選択
Yasuhiro Matsuo22.8K views
MapReduce入門 by Satoshi Noto
MapReduce入門MapReduce入門
MapReduce入門
Satoshi Noto23.4K views
SparkやBigQueryなどを用いた モバイルゲーム分析環境 by yuichi_komatsu
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
yuichi_komatsu5.3K views
MongoDB全機能解説1 by Takahiro Inoue
MongoDB全機能解説1MongoDB全機能解説1
MongoDB全機能解説1
Takahiro Inoue54.6K views
sparksql-hive-bench-by-nec-hwx-at-hcj16 by Yifeng Jiang
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
Yifeng Jiang10.5K views

Similar to ソーシャルゲームのEMR活用事例

ソーシャルゲームログ解析基盤のMongoDB活用事例 by
ソーシャルゲームログ解析基盤のMongoDB活用事例ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例知教 本間
4.8K views19 slides
Flume cassandra real time log processing (日本語) by
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)CLOUDIAN KK
2K views20 slides
MongoDBざっくり解説 by
MongoDBざっくり解説MongoDBざっくり解説
MongoDBざっくり解説知教 本間
3.6K views29 slides
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜 by
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
43.2K views89 slides
【JAWS UG 山形】ランサーズでのAWS活用事例 by
【JAWS UG 山形】ランサーズでのAWS活用事例【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例Yuki Kanazawa
1.7K views58 slides
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land by
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandMasakazu Matsushita
11.2K views43 slides

Similar to ソーシャルゲームのEMR活用事例(20)

ソーシャルゲームログ解析基盤のMongoDB活用事例 by 知教 本間
ソーシャルゲームログ解析基盤のMongoDB活用事例ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例
知教 本間4.8K views
Flume cassandra real time log processing (日本語) by CLOUDIAN KK
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)
CLOUDIAN KK2K views
MongoDBざっくり解説 by 知教 本間
MongoDBざっくり解説MongoDBざっくり解説
MongoDBざっくり解説
知教 本間3.6K views
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜 by Takahiro Inoue
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue43.2K views
【JAWS UG 山形】ランサーズでのAWS活用事例 by Yuki Kanazawa
【JAWS UG 山形】ランサーズでのAWS活用事例【JAWS UG 山形】ランサーズでのAWS活用事例
【JAWS UG 山形】ランサーズでのAWS活用事例
Yuki Kanazawa1.7K views
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land by Masakazu Matsushita
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita11.2K views
ログブラウズ、解析サービスSumologicの紹介 by Yasuhiro Araki, Ph.D
ログブラウズ、解析サービスSumologicの紹介ログブラウズ、解析サービスSumologicの紹介
ログブラウズ、解析サービスSumologicの紹介
ゆるふわLinux-HA 〜PostgreSQL編〜 by Taro Matsuzawa
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa6.8K views
Rubyによるお手軽分散処理 by maebashi
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理
maebashi3.9K views
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計 by maebashi
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi2.3K views
第6回インターネットと運用技術シンポジウム WIPセッション by Hiroki Kashiwazaki
第6回インターネットと運用技術シンポジウム WIPセッション第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
Hiroki Kashiwazaki2.4K views
Sinatraでwebアプリケーション開発を学ぶ by Hiroshi Oyamada
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
Hiroshi Oyamada6.1K views
Tokyo.R#16 wdkz by Kazuya Wada
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
Kazuya Wada7.3K views
Terraformで始めるInfrastructure as Code by Takahisa Iwamoto
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
Takahisa Iwamoto4.8K views
ゲームのインフラをAwsで実戦tips全て見せます by infinite_loop
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop6.1K views
ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法 by Amazon Web Services Japan
ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法 ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法
ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門 by Akira Shimosako
CLUB DB2 第122回  DB2管理本の著者が教える 簡単運用管理入門CLUB DB2 第122回  DB2管理本の著者が教える 簡単運用管理入門
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
Akira Shimosako13K views
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT by OCHI Shuji
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LTソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
OCHI Shuji3K views
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例 by Yuuki Namikawa
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
Yuuki Namikawa1.6K views

More from 知教 本間

gumiにおける、海外支社とのAtlassian製品利用事例 by
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例知教 本間
1.8K views31 slides
GitHubEnterpriseからBitbucket(Stash) への移行事例 by
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例知教 本間
3.4K views24 slides
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について by
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について知教 本間
2.4K views28 slides
Use case for using the ElastiCache for Redis in production by
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production知教 本間
3.9K views21 slides
チームでChef serverを運用するには by
チームでChef serverを運用するにはチームでChef serverを運用するには
チームでChef serverを運用するには知教 本間
5.6K views34 slides
Redisへと至る、gumiデータストアの歴史 by
Redisへと至る、gumiデータストアの歴史Redisへと至る、gumiデータストアの歴史
Redisへと至る、gumiデータストアの歴史知教 本間
8.9K views40 slides

More from 知教 本間(7)

gumiにおける、海外支社とのAtlassian製品利用事例 by 知教 本間
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例
知教 本間1.8K views
GitHubEnterpriseからBitbucket(Stash) への移行事例 by 知教 本間
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例
知教 本間3.4K views
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について by 知教 本間
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
知教 本間2.4K views
Use case for using the ElastiCache for Redis in production by 知教 本間
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production
知教 本間3.9K views
チームでChef serverを運用するには by 知教 本間
チームでChef serverを運用するにはチームでChef serverを運用するには
チームでChef serverを運用するには
知教 本間5.6K views
Redisへと至る、gumiデータストアの歴史 by 知教 本間
Redisへと至る、gumiデータストアの歴史Redisへと至る、gumiデータストアの歴史
Redisへと至る、gumiデータストアの歴史
知教 本間8.9K views
ソーシャルゲームログ解析基盤のHadoop活用事例 by 知教 本間
ソーシャルゲームログ解析基盤のHadoop活用事例ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例
知教 本間5.3K views

Recently uploaded

SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
376 views15 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
353 views13 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
73 views26 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
129 views42 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
18 views17 slides

Recently uploaded(11)

SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)

ソーシャルゲームのEMR活用事例

  • 1. ソーシャルゲームのEMR活用事例 ∼ユーザに愛されるカスタマーサポートを目指して∼ 11年12月16日金曜日
  • 2. 自己紹介 Name:本間 知教(ほんま とものり) Twitter:@CkReal 経歴 2008年4月∼2011年9月 国内某ITコンサルティング会社:インフラ担当 2011年9月∼ 株式会社gumi:インフラand解析チーム 好きなAWS:EMR(とS3) 2 11年12月16日金曜日
  • 3. アジェンダ 1.EMR利用に至る経緯 2.gumiのEMR活用事例 3.EMRを使ってみて 3 11年12月16日金曜日
  • 4. EMR利用に至る経緯 4 11年12月16日金曜日
  • 5. gumiの課題 CS(カスタマーサポート)の応対負荷 エンジニアが調査に時間を取れない NFSサーバが単一障害点 gumiのカスタマーサポート概略図 対応が遅くなりがち APPサーバ ゲームユーザ syslog-ng 転送 質問 回答 回答 NFSサーバ 調査依頼 CS エンジニア 5 11年12月16日金曜日
  • 6. 現在のログ状況 例)任侠道のアクションログ 最大18GB(圧縮2.4GB)/日 ログ形式(赤字は整形) 【日付】【ホスト名】【アプリ名】 【アクション名】 【ユーザID】【アクション詳細】 Nov 1 23:59:59 hogehoge-ap1 hogehoge ADD_MONEY 12345 [BeforeMoney] 67979 [AfterMoney] 68024 [Money] 45 Nov 1 23:59:59 hogehoge-ap2 hogehoge CONSUME_POWER 12345 [BeforePower] 25 [AfterPower] 20 [ConsumePower] 5 6 11年12月16日金曜日
  • 7. DB投入時のドキュメント形式 ユーザ/時のアクション内容をJSON形式で格納 例)MongoDB格納後のログ(一部整形&省略) "_id" : "df41b04eb72d29b4a30955f2de1a20134e187cd6f59f0d3df0468d22", "app" : "hogehoge", "userid" : "12345", "dateint" : 20111101, "hourint" : 23, ユーザIDごとに、 "actions" : [ アクションレコードを格納 "CONSUME_POWER", "ADD_MONEY" ], 時刻フィールドを利用して、 "records" : [ MongoDBのShardingキーとする { "action" : "ADD_MONEY", "timeint" : 235959, ユーザごとの各アクションを } 配列として格納 ] 7 11年12月16日金曜日
  • 8. EMR or EC2? Amazon S3とEMRのコラボが素敵 NFSサーバの障害リスク解消 インスタンスを常時稼動させる必要がない 過去ログからも調査・解析できるようにできる 8 11年12月16日金曜日
  • 9. 解析方法の模索 EMR利用時に、何のプロダクトを使うか? Pythonが利用可能なため、Hadoop Streamingを採用 プロダクト メリット デメリット Pig 複雑な処理も記述可能 スクリプト習得コスト ある程度、ログが整形 Hive SQLに近い記述方法 されている必要がある Hadoop Streaming 多くの言語で対応可能 MapReduce習得コスト 9 11年12月16日金曜日
  • 10. gumiのEMR活用事例 10 11年12月16日金曜日
  • 11. gumiの解析システム構成Ver0.3 日次で各アプリのアクションログを集計 Amazon S3 Amazon EMR 圧縮アクションログ 集計ログ 圧縮アクションログ 集計ログ 圧縮アクションログ 集計ログ NFSサーバ1 アクションログ DBサーバ Shard1 NFSサーバ2 アクションログ Shard2 圧縮(gzip) Shard3 mongos NFSサーバ3 アクションログ Shard4 アクションログ アクションログ アクションログ config Shard5 バッチサーバ Shard6 11 ReplicaSets & Sharding 11年12月16日金曜日
  • 12. MapReduce処理 2000万件超/日のアクションを約30万件に集計 --bootstrap-action Python2.7インストールスクリプト --mapper アクションログを以下のKey/Valueに整形 [Key]【アプリ名】/【ユーザID】/【日付】/【時刻】 [Value]action:【アクション種別】,timeint:【時刻】,params:{“AAA:123,…”} --reducer Mapperで処理されたValue内のactionを集約 [Value]actions:[【アクション種別1】,【アクション種別2】…] ,records:[action:…] 12 11年12月16日金曜日
  • 13. とある一日のバッチ処理 前日分の各アプリのアクションログを集計 EMRは各アプリごとのクラスタで起動 各アプリのEMR実行は、2h程度で終了 0:00 1:00 3:00 7:00 転送&圧縮 EMR実行 MongoDB挿入 (並列実行) (並列実行) (順次実行) 13 11年12月16日金曜日
  • 14. EMRを使ってみて 14 11年12月16日金曜日
  • 15. EMRを使ってみて S3上のファイルをいつでも利用できる EC2⇔S3間の転送は、20MB/sec程度 必要なときだけ、EMRクラスタを使える Hadoopクラスタを管理する必要がない 変化する要件にも対応しやすい とりあえず、S3に元ファイルはあるしねw 15 11年12月16日金曜日
  • 16. EMRを使ってみて たまにジョブが失敗する Reduce処理が終わらない? 集計ログを回収しきれない? チューニング方法模索中… 毎時集計まで対応予定 ファイルサイズ Master Slave 実行時間 8.4GB m1.xlarge m2.4xlarge × 4台 2h12m 3.2GB c1.xlarge m1.xlarge × 3台 44分 835MB c1.xlarge m1.xlarge × 3台 28分 22GB m2.4xlarge m2.4xlarge × 2台 FAILED… 16 11年12月16日金曜日
  • 17. EMR実行途中のCPU使用率 リニアにスケールさせるのは、なかなか難しい 11年12月16日金曜日
  • 18. ご清聴ありがとうございました。 18 11年12月16日金曜日