Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

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

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 28 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie Awsで作るビッグデータ解析今とこれから (20)

Anzeige

Aktuellste (20)

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

  1. 1. AWSで作るビッグデータ解析 今とこれから 月刊ライトニングトーク年末特別号@いいオフィス Shohei Kobayashi Twitter http://twitter.com/srockstyle Facebook https://www.facebook.com/srockstyle Github https://github.com/srockstyle
  2. 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
  3. 3. 8月のLT大会では弊社のつるが大変お世話になりまんた 今回はこのプレゼンのバックエンド、インフラサイドのお話です
  4. 4. 今回は集計システムのバックエンド、インフラサイドのお話です
  5. 5. 今年6月のCreators Meetupでこんな発表したよ
  6. 6. 会社がやってるアプリの新・集計システム • データ増大によりそれまで使ってた集計システ ムがパンクしたため2014年4月に同僚ふたりと 開発開始。 • 二人にMapperとReducer、SQL、管理画面な どのフロント全般を任せ、僕がクラウドを使っ た集計インフラの設計とAWSのプロダクトをコ ントロールするプログラムを担当。 • AWSをキックする仕組み全般を僕が作り、二人 には集計データのまとめと集計に必要なリソー スを書くYamlファイルの作成だけお願いした。 • Yamlのフォーマットはこちらで決めた
  7. 7. 2014年11月段階で動いている新・集計
  8. 8. 細かい仕組み等
  9. 9. 0.アプリからS3へ
  10. 10. 0:アプリからS3にログをあげることでやってること だいたいこの3パターン • 経由するAPIの方でログを生成し、S3にアップ • DynamoDBに収めたログをS3にエクスポート。 • API内でログを生成したものをFluentdを経由してS3 にアップ。
  11. 11. 1.mapperとreducerをS3へ
  12. 12. 1:MapperとReducerをS3へ ログ集計したいときにやっちゃいます • クラウドをキックするコントロールアプリケーション内に mapperとreducerはフォルダを切って、集計したい事案ごとに 格納。 • 集計が走る段階でCronを回し、その瞬間にS3にmapperと reducerも一緒にアップロードされる。 • 普段はコントロールアプリケーションと一緒にGit管理。(スク リプトは常に変更が走る可能性があるため、毎回S3にあるやつ は消して今あるものをアップロードしてる)
  13. 13. 3.EMRクラスタ作成と起動と実行
  14. 14. 3:EMRクラスタの作成と起動と実行その1 Yamlファイルで設定したものをJob-Flowに変換してます • 必要なパラメータはYamlファイルに書いてもらい、それをプログラ ム内でEMRクラスタの作成・起動に必要なJob-Flowスクリプトに変 換してる。(集計インフラの仕組みを理解してなくても、mapperと Reducerを書く集計担当のエンジニアが集計作業ができるように) • 現在は一つの集計のたびにいちいちクラスタは起動せず、一回クラス タ立ち上げたら複数のMapReduceを連続で流してます。(EC2イン スタンス大量起動による経費削減のため)
  15. 15. 3:EMRクラスタの作成と起動と実行その2 HadoopはHadoop-streamingで使ってます • Javaを書きたくなかった(Rubyでやりたかった) • EMRを起動するためのスクリプト”Job-Flow Script”が当時ド キュメントがなくて、Yamlを変換するところ作るの死ぬほど苦 労した(存在する日本語ドキュメント全部間違ってて辛かった) • AWS-SDKフル活用
  16. 16. 3:EMRクラスタの作成と起動と実行その3 ログフォルダは移動しなくても全部フォルダ指定 • 最初inputフォルダしかログファイルおかないとだめだとおもっ たらS3のバケットのフォルダ直接指定でいけた……(inputフォ ルダにログコピーに6時間かかってたのが0分になった) • ログを「-input=“<ログフォルダ>”」で指定する • 一度に指定できるログフォルダの数は~1024程度ぽい。(前さ 過去3年の日付分のフォルダを指定したら怒られた)
  17. 17. 4.Redshiftへのインポート
  18. 18. 4:Redshiftへのインポート とにかく最後はRedshift • MapReduceしたログをJsonでS3上に吐き出したも のに対してimportコマンドを使うことでRedshiftの テーブルにインポートできる • データウェアハウスではなくデータマート的な使い 方だけど、本当はデータをただ貯めとくだけでもOK
  19. 19. 今後やりたいこと 会社でやるかは未定だけどデータ集計関連で 個人的にこうなるのかなーっていう感じのアレ
  20. 20. AWS Lambdaでやりたいイベントドリブンな集計操作 コントロールアプリの撤廃 • ログが上がり終わるなどのイベントでLambda関数 を発動 • Lambda関数内でnode.jsのAWS-SDKを使ってEMR のjob-flowを送りクラスタの作成と起動 • EMRが処理終わった段階で別なLambda関数を使っ てRedshiftへのインポート
  21. 21. Google Data Flowでやりたい 次世代データ集計 • バッチとリアルタイム処理で同じAPIをつかって作 業 • パイプラインらへんはGoogleに任せて、解析のロ ジックだけに開発者は集中できる • 集計サーバとかいらなくなるね!楽! (AWS Lambdaで実装すればいいかも……/ぼそっ)
  22. 22. Google DataFlow だとBigQuery? • RedshiftほどAWSとの親和性はないけど、とにかく安い。ク エリも早い。(1.2億行なら2円) • 1TBを1秒でフルスキャンするために5000台のディスクをイン デックスなしで並列稼働させてるから早いらしい(ナニソレ • S3にログを集める以降の処理はAWSからGoogle Dataflowに 飛ばしてからのBigQuery格納でいい気がしてる。 (現状ではRedshiftのパフォーマンスは満足なので Redshiftさん値下がりしないかな……/ぼそっ)
  23. 23. 今はフルAWSで作ってます
  24. 24. AWSのRedshift紹介ページに掲載されたいその1
  25. 25. AWSのEMR紹介ページに掲載されたいその2
  26. 26. AWSさんの導入事例に掲載されたいんで、 SlideShareにあげたこの資料のURL拡散 なにそつよろしくお願いいたします! 掲載されたら拡散してくれた人の中から 抽選で寿司か焼肉おごります僕が
  27. 27. うちの会社、絶賛エンジニア募集してるよ ぼそっ
  28. 28. ご静聴あざした!

×