Post on 19-May-2015
Chirp Hack 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でのこの講演中に 225GB
技術的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 sample users = 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-
twitter-chirp-2010
最後に
• 日本からも何人か参加されてました • 次回参加されてはいかがでしょうか • ご清聴ありがとうございました