Chirp hackday

Post on 19-May-2015

929 views 4 download

description

@koichi

Transcript of Chirp hackday

ChirpHack Day Report

(株 ) デジタルガレージ 和田浩一wada@garage.co.jp

@Koichi

自己紹介

• 和田浩一– wada@garage.co.jp– @Koichi

• ツイナビのエンジニアリング– http://twinavi.jp

Chirp

• 4/14, 15 in San Francisco

• 本日ご紹介する内容– Chirp の様子– Hack Day のセッションから技術トピック

を2つ

Chirp の様子

1日目 -Conference

1 日目 - 夕方 Hack Day Start

1 日目 - 夜 Ignite

1 日目 - 深夜 Coding time

2 日目 - 開始前

2日目 -Sessions

2 日目 -Lunch, Meet The founders

まとめ

• 夜も通して 2 日連続のスケジュール• エンジニアが大勢集まって活気いっぱ

い• 食べ物と飲み物はしっかり

Hack Day セッション

技術トピック

• アプリが守るべきポリシー• 大量データの扱い

アプリが守るべきポリシー

守ってほしいポリシー

• ユーザーを悪い意味でびっくりさせない– 説明と違う動きをしたり– 急に機能が変わったり

• SPAM を送らない– 過去に DM を大量に送るゲームがありました

• プライバシーを守る– みんなが気にしてることです

守ってほしいポリシー (2)

• ガイドラインやルールを守る– Tweet Display Guidlines

• http://media.twitter.com/14/tweet-display-guidelines

– Terms Of Service• http://twitter.com/tos

• わからないことは質問する• Awesome なアプリを作る

–重要 !

守ってほしいポリシー (3)

• API 呼び出しの結果は Cache する• もらった OAuth Key を使わない

ポリシーまとめ

• いいアプリを作ってください

• スライド at slideshare - #chirppolicy– We Have Faith in (Most of) You: How Twitter

Crafts Policies to Allow Good Apps to Thrive– http://www.slideshare.net/delbius/chirppolicy

大量データの扱い

Twitter 上で生成されるデータ

7TB/日Chirp でのこの講演中に

225 GB

技術的 Challenge

• データ収集• 格納 & 解析• 早く解析結果を得る

データ収集

• 最初は syslog-ng を使った• データ量が膨大になってくるとスケー

ルしなかった

そこで

• Scribe– Facebook で開発されたオープンソースの

ログ収集フレームワーク– Thrift 上で動作– アプリケーションからはカテゴリーをつ

けてログを書き込むだけ

Scribe

• ローカルで動作– 障害に強い

• 階層構成– 下向きに書き込み

• プラガブルストレージ

書き込み 書き込み 書き込み

集約 集約

ファイル HDFS

データの格納

• 7TB/ 日を書き込むとして• 書き込み速度 80MB/s を仮定すると• 24.3 時間必要• 1台では間に合いません• 容量も必要

そこで

• Hadoop– 分散ファイルシステム– MapReduce 並列処理– オープンソース– Y! では 4000 ノード– 1TB のランダムな整数を 62 秒でソート

解析

• MySQL 上での操作では無理– ツイートを数える : COUNT, GROUP– ソーシャルグラフの集計 : JOIN

• やっぱり Hadoop– 全部のツイートを数えるのに 5 分– ソーシャルグラフの集計– ページランク

早く解析結果を得る

• 解析は通常 Java でコードを書くことになる

• ちょっと難しい– MapReduce– コンパイルが必要

そこで

• Pig– オープンソース– SQL の代わりになる高級言語– レコード集合に対して操作– 処理を 1 ステップづつ記述

Pig sampleusers = load ‘users.csv’ as (username: charaarray, age: int);

users_1825 = filter users by age >= 18 and age <=25;

pages = load ‘pages.csv’ as (username: chararay, url: chararray)

joined = join users_1825 by username, pages by username;

grouped = group joined by url;

summed = foreach grouped generate group as url, COUNT(joined) AS views;

sorted = order summed by views desc;

top_5 = limit sorted 5;

store top_t into ‘top_5_sites.csv’

Java に比べて簡単

5%のコード量ですむ

まとめ

• 大量なデータを処理するためのオープンソースソフトウェアを改良して使っています– Scribe– Hadoop– Pig

• スライド at slideshare - #chirpdata– Analyzing Big Data at Twitter– http://www.slideshare.net/kevinweil/big-data-at-twit

ter-chirp-2010

最後に

• 日本からも何人か参加されてました• 次回参加されてはいかがでしょうか• ご清聴ありがとうございました