More Related Content Similar to Awsで作るビッグデータ解析今とこれから (20) More from Shohei Kobayashi (8) Awsで作るビッグデータ解析今とこれから2. Shohei
Kobayashi
• Cloud Infra Server Engineer
• AWS、Azure
• Ruby,PHP,Perl,Python,JavaScript,Golang <-New!
• 2005~2011: Infra Server Engineer
• 2011~2013:Front&Serverside Engineer
• 2014~:Cloud Infra Server Engineer
6. 会社がやってるアプリの新・集計システム
• データ増大によりそれまで使ってた集計システ
ムがパンクしたため2014年4月に同僚ふたりと
開発開始。
• 二人にMapperとReducer、SQL、管理画面な
どのフロント全般を任せ、僕がクラウドを使っ
た集計インフラの設計とAWSのプロダクトをコ
ントロールするプログラムを担当。
• AWSをキックする仕組み全般を僕が作り、二人
には集計データのまとめと集計に必要なリソー
スを書くYamlファイルの作成だけお願いした。
• Yamlのフォーマットはこちらで決めた
12. 1:MapperとReducerをS3へ
ログ集計したいときにやっちゃいます
• クラウドをキックするコントロールアプリケーション内に
mapperとreducerはフォルダを切って、集計したい事案ごとに
格納。
• 集計が走る段階でCronを回し、その瞬間にS3にmapperと
reducerも一緒にアップロードされる。
• 普段はコントロールアプリケーションと一緒にGit管理。(スク
リプトは常に変更が走る可能性があるため、毎回S3にあるやつ
は消して今あるものをアップロードしてる)
14. 3:EMRクラスタの作成と起動と実行その1
Yamlファイルで設定したものをJob-Flowに変換してます
• 必要なパラメータはYamlファイルに書いてもらい、それをプログラ
ム内でEMRクラスタの作成・起動に必要なJob-Flowスクリプトに変
換してる。(集計インフラの仕組みを理解してなくても、mapperと
Reducerを書く集計担当のエンジニアが集計作業ができるように)
• 現在は一つの集計のたびにいちいちクラスタは起動せず、一回クラス
タ立ち上げたら複数のMapReduceを連続で流してます。(EC2イン
スタンス大量起動による経費削減のため)
16. 3:EMRクラスタの作成と起動と実行その3
ログフォルダは移動しなくても全部フォルダ指定
• 最初inputフォルダしかログファイルおかないとだめだとおもっ
たらS3のバケットのフォルダ直接指定でいけた……(inputフォ
ルダにログコピーに6時間かかってたのが0分になった)
• ログを「-input=“<ログフォルダ>”」で指定する
• 一度に指定できるログフォルダの数は~1024程度ぽい。(前さ
過去3年の日付分のフォルダを指定したら怒られた)
21. Google Data Flowでやりたい
次世代データ集計
• バッチとリアルタイム処理で同じAPIをつかって作
業
• パイプラインらへんはGoogleに任せて、解析のロ
ジックだけに開発者は集中できる
• 集計サーバとかいらなくなるね!楽!
(AWS Lambdaで実装すればいいかも……/ぼそっ)
22. Google DataFlow
だとBigQuery?
• RedshiftほどAWSとの親和性はないけど、とにかく安い。ク
エリも早い。(1.2億行なら2円)
• 1TBを1秒でフルスキャンするために5000台のディスクをイン
デックスなしで並列稼働させてるから早いらしい(ナニソレ
• S3にログを集める以降の処理はAWSからGoogle Dataflowに
飛ばしてからのBigQuery格納でいい気がしてる。
(現状ではRedshiftのパフォーマンスは満足なので
Redshiftさん値下がりしないかな……/ぼそっ)