awsで作るビッグデータ解析今とこれから

28
AWSで作るビッグデータ解析 今とこれから Shohei Kobayashi Twitter http://twitter.com/srockstyle Facebook https://www.facebook.com/srockstyle Github https://github.com/srockstyle 月刊ライトニングトーク年末特別号@いいオフィス

Upload: shohei-kobayashi

Post on 09-Jul-2015

964 views

Category:

Data & Analytics


0 download

DESCRIPTION

AWSで作るビッグデータの話です! AWSさんの拡散事例に載りたいんでみんな拡散してください!

TRANSCRIPT

Page 1: Awsで作るビッグデータ解析今とこれから

AWSで作るビッグデータ解析 今とこれから

Shohei Kobayashi Twitter http://twitter.com/srockstyle

Facebook https://www.facebook.com/srockstyle Github https://github.com/srockstyle

月刊ライトニングトーク年末特別号@いいオフィス

Page 2: Awsで作るビッグデータ解析今とこれから

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

Page 3: Awsで作るビッグデータ解析今とこれから

8月のLT大会では弊社のつるが大変お世話になりまんた

今回はこのプレゼンのバックエンド、インフラサイドのお話です

Page 4: Awsで作るビッグデータ解析今とこれから

今回は集計システムのバックエンド、インフラサイドのお話です

Page 5: Awsで作るビッグデータ解析今とこれから

今年6月のCreators Meetupでこんな発表したよ

Page 6: Awsで作るビッグデータ解析今とこれから

会社がやってるアプリの新・集計システム• データ増大によりそれまで使ってた集計システムがパンクしたため2014年4月に同僚ふたりと開発開始。

• 二人にMapperとReducer、SQL、管理画面などのフロント全般を任せ、僕がクラウドを使った集計インフラの設計とAWSのプロダクトをコントロールするプログラムを担当。

• AWSをキックする仕組み全般を僕が作り、二人には集計データのまとめと集計に必要なリソースを書くYamlファイルの作成だけお願いした。

• Yamlのフォーマットはこちらで決めた

Page 7: Awsで作るビッグデータ解析今とこれから

2014年11月段階で動いている新・集計

Page 8: Awsで作るビッグデータ解析今とこれから

細かい仕組み等

Page 9: Awsで作るビッグデータ解析今とこれから

0.アプリからS3へ

Page 10: Awsで作るビッグデータ解析今とこれから

0:アプリからS3にログをあげることでやってること

だいたいこの3パターン

• 経由するAPIの方でログを生成し、S3にアップ

• DynamoDBに収めたログをS3にエクスポート。

• API内でログを生成したものをFluentdを経由してS3にアップ。

Page 11: Awsで作るビッグデータ解析今とこれから

1.mapperとreducerをS3へ

Page 12: Awsで作るビッグデータ解析今とこれから

1:MapperとReducerをS3へ

• クラウドをキックするコントロールアプリケーション内にmapperとreducerはフォルダを切って、集計したい事案ごとに格納。

• 集計が走る段階でCronを回し、その瞬間にS3にmapperとreducerも一緒にアップロードされる。

• 普段はコントロールアプリケーションと一緒にGit管理。(スクリプトは常に変更が走る可能性があるため、毎回S3にあるやつは消して今あるものをアップロードしてる)

ログ集計したいときにやっちゃいます

Page 13: Awsで作るビッグデータ解析今とこれから

3.EMRクラスタ作成と起動と実行

Page 14: Awsで作るビッグデータ解析今とこれから

3:EMRクラスタの作成と起動と実行その1

• 必要なパラメータはYamlファイルに書いてもらい、それをプログラム内でEMRクラスタの作成・起動に必要なJob-Flowスクリプトに変換してる。(集計インフラの仕組みを理解してなくても、mapperとReducerを書く集計担当のエンジニアが集計作業ができるように)

• 現在は一つの集計のたびにいちいちクラスタは起動せず、一回クラスタ立ち上げたら複数のMapReduceを連続で流してます。(EC2インスタンス大量起動による経費削減のため)

Yamlファイルで設定したものをJob-Flowに変換してます

Page 15: Awsで作るビッグデータ解析今とこれから

3:EMRクラスタの作成と起動と実行その2

• Javaを書きたくなかった(Rubyでやりたかった)

• EMRを起動するためのスクリプト”Job-Flow Script”が当時ドキュメントがなくて、Yamlを変換するところ作るの死ぬほど苦労した(存在する日本語ドキュメント全部間違ってて辛かった)

• AWS-SDKフル活用

HadoopはHadoop-streamingで使ってます

Page 16: Awsで作るビッグデータ解析今とこれから

3:EMRクラスタの作成と起動と実行その3

• 最初inputフォルダしかログファイルおかないとだめだとおもったらS3のバケットのフォルダ直接指定でいけた……(inputフォルダにログコピーに6時間かかってたのが0分になった)

• ログを「-input=“<ログフォルダ>”」で指定する

• 一度に指定できるログフォルダの数は~1024程度ぽい。(前さ過去3年の日付分のフォルダを指定したら怒られた)

ログフォルダは移動しなくても全部フォルダ指定

Page 17: Awsで作るビッグデータ解析今とこれから

4.Redshiftへのインポート

Page 18: Awsで作るビッグデータ解析今とこれから

4:Redshiftへのインポート

• MapReduceしたログをJsonでS3上に吐き出したものに対してimportコマンドを使うことでRedshiftのテーブルにインポートできる

• データウェアハウスではなくデータマート的な使い方だけど、本当はデータをただ貯めとくだけでもOK

とにかく最後はRedshift

Page 19: Awsで作るビッグデータ解析今とこれから

今後やりたいこと会社でやるかは未定だけどデータ集計関連で 個人的にこうなるのかなーっていう感じのアレ

Page 20: Awsで作るビッグデータ解析今とこれから

• ログが上がり終わるなどのイベントでLambda関数を発動

• Lambda関数内でnode.jsのAWS-SDKを使ってEMRのjob-flowを送りクラスタの作成と起動

• EMRが処理終わった段階で別なLambda関数を使ってRedshiftへのインポート

AWS Lambdaでやりたいイベントドリブンな集計操作 コントロールアプリの撤廃

Page 21: Awsで作るビッグデータ解析今とこれから

Google Data Flowでやりたい 次世代データ集計

• バッチとリアルタイム処理で同じAPIをつかって作業

• パイプラインらへんはGoogleに任せて、解析のロジックだけに開発者は集中できる

• 集計サーバとかいらなくなるね!楽!

(AWS Lambdaで実装すればいいかも……/ぼそっ)

Page 22: Awsで作るビッグデータ解析今とこれから

• RedshiftほどAWSとの親和性はないけど、とにかく安い。クエリも早い。(1.2億行なら2円)

• 1TBを1秒でフルスキャンするために5000台のディスクをインデックスなしで並列稼働させてるから早いらしい(ナニソレ

• S3にログを集める以降の処理はAWSからGoogle Dataflowに飛ばしてからのBigQuery格納でいい気がしてる。

Google DataFlow だとBigQuery?

(現状ではRedshiftのパフォーマンスは満足なので Redshiftさん値下がりしないかな……/ぼそっ)

Page 23: Awsで作るビッグデータ解析今とこれから

今はフルAWSで作ってます

Page 24: Awsで作るビッグデータ解析今とこれから

AWSのRedshift紹介ページに掲載されたいその1

Page 25: Awsで作るビッグデータ解析今とこれから

AWSのEMR紹介ページに掲載されたいその2

Page 26: Awsで作るビッグデータ解析今とこれから

AWSさんの導入事例に掲載されたいんで、 SlideShareにあげたこの資料のURL拡散 なにそつよろしくお願いいたします!

掲載されたら拡散してくれた人の中から 抽選で寿司か焼肉おごります僕が

Page 27: Awsで作るビッグデータ解析今とこれから

うちの会社、絶賛エンジニア募集してるよぼそっ

Page 28: Awsで作るビッグデータ解析今とこれから

ご静聴あざした!