HBase at Facebook に行ってきました

FacebookでのHbase利用について、
アーキテクトのJonathan Grayさんに来てもらって、プレゼンしてもらうという
素晴らしい会に参加しました。


http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GOuRAgw


@ さんによるJonathanのプレゼン資料の日本語訳



(英語資料は未公開)

  • 感想
    • FacebookでHiveで15-24hoursかかってた処理がPUMA(+PTail)というので10-30 secになった。衝撃的。PTailは数週間(a couple of weeks)で公開されるとのこと。
    • FacebookはHBaseにかなり力を入れている。
    • おそらくMySQLをやめて代わりにHBase+CacheにしてWebもバックエンドもリアルタイム化しようとしている。
    • 「バッチスタイルのアプローチだったが、ストリーミングなアプローチにした」というのが印象的だった。
    • 彼らの中ではHadoopはもう古いんだと思う。これからはストリーミング。日本は数年遅れてると思った。
    • もしかしたらCassandraでもと思われる方が多いかもしれないが、僕はそうは思わない。おそらく全てのサービスでconsistency(一貫性)は非常に重要なので、HBaseが合う。実際にCassandraを作ったFacebookで、もうCassandraは使われてないという事実が全てを示している。
    • Facebookは広告の効果測定をリアルタイム化していた。
    • オープンソース化する文化って本当に素晴らしい。日本にはないものだと思った。日本も恩恵を受けてるんだから返さないとだめだと思う。
    • @ さんとアンケートのユースケースにもあった某CT○の翻訳が素晴らしかった。
    • 普通に二次会予約しておけばよかった。
    • FacebookとJonathanかっこいい!
  • Jonathan Grayさんが言ってたこと
    • HBaseの特徴で「HDFSは3000ノードで40PB」
    • 「HBaseは辞書とリストに優れている。登録した瞬間に3世代でソートされている」
    • 「PTailとHBaseによってほとんど全てのMap-Reduceを置き換えられる」
    • MySQLのスケールに成功した。でもめちゃめちゃコストがかかる(笑)。HBaseは安く済む。MySQLは1台に300GB(SSD)だが、HBaseなら1台に2TB乗る。」
    • 「HBaseでトランザクションを扱えるようにしたい」
  • Q&A覚書き(長いです)

Q: Scribeあたりのバッファの消失の問題をどうしているか(古橋さん[twitter@frsyuki])
A: オフセットを保持して、そこまで書けたら次のオフセットまでという方式。
Transactionの話
scribeがこけたらどうのという話題も。


Q: なぜCassandraやMySQLシャーディングじゃなかったのか?
A: consistency(一貫性)が欲しかった。
ひとつのサーバーに複数のシャードを割り当てたい。
社内にHDFSに詳しい人がたくさんいた。


Q: Pumaのボトルネックはどこでどう改善したのか?
A: Hiveでは24時間のデータを処理するのに24時間以上かかっていた。
バッチスタイルのアプローチだったが、ストリーミングなアプローチに変えたということ。


Q: MySQLをスケーラブルにっていうのはどういう風に?
A: 単純なシャーディング
レンジがどうとか(よくわからん)
Joinはアプリケーションサイド


Q: ネットワークの苦労話は?
A: DC内でネットワークパーティションがおきないこと。
Redundancy(冗長性)の確保。
上層のネットワークを10GBにした。
下は1G。
物理的に近いところにある。階をまたがない。


Q: rainbirdやverticaをなぜ使わないのか?
A: 自分で作りたいし(笑)


Q: スケーラブルなスキーマの例がなかったが
A: rowがユーザーひとりで、メッセージとか全部そこにつまってるよ


Q: どんな見積もり方法をしましたか?
A: Darkloanchと呼ばれる方法(Facebookの詳しい資料にちょっと書いてありました)。


Q: FacebookでCassandraは使われてるのですか?
CassandraのコミッターはFacebookにたくさんいますが・・・(西澤無我さん)
A: 使ってません。(ざわざわざわ・・・)
僕らが欲しかったのは
Availability
Consistency
まあ、違う用途には使えるだろう。


Q: PUMAはオープンソース?どうしても欲しいです。
A: PUMAはサービスよりの技術(的な事を言ってた)。こんな構成要素からなる。
scribe
ptail
HBase
(Caribe FS?(カリブと聞こえた))
昨日なにか発表があったよ。そこで新しい発表があったかもしれない。
ptailは数週間以内にオープンソース化されるだろう。(歓声!そして質問者握手!w)


Q: HBaseのバックアップは?(将さん)
A: 実は開発中です。
今までは2箇所に書いてた。
今は違うアプローチを取ろうとしてる。
HBaseでスナップショットを取るような
インメモリはディスクに書き出す。
HLOGを書き出すような。


Q: メジャーコンパクションのレイテンシはどう保つか
A: スプリットやコンパクション自体を少なくすればいい。
ブルームフィルターみたいので解決できる(よくわからず)。
あらかじめスプリットしておく。
TITANは自動スプリットはしてない?


Q: もしJonathanがスタートアップにいて、それでも使う?
A: 会社によると思う。
僕が起こした会社はものすごい量のデータを扱っていたので必要があると思う。
NoSQLとかの新しい技術はいいこともあるけど悪いこともある。
新しいことはできるけど、成熟してない。


Q: PUMAを使えるようになってよかった例は?
A: さまざまな効果測定がリアルタイムに。
広告のUU数とか。
ユーザーの動きがリアルタイムにわかるようになった。