FacebookがHBaseを大規模リアルタイム処理に利用している理由(前編)

2011年7月4日

Facebookは大規模なデータ処理の基盤としてHBaseを利用しています。なぜFacebookはHBaseを用いているのか、どのように利用しているのでしょうか? 7月1日に都内で行われた勉強会で、Facebookのソフトウェアエンジニアであるジョナサン・グレイ(Jonathan Gray)氏による解説が行われました。

fig

解説はほぼスライドの内容そのままでした。当日使われた日本語訳されたスライドが公開されているので、ポイントとなるページを紹介しましょう。

Realtime Apache Hadoop at Facebook

なぜリアルタイムデータの分析に、Hadoop/HBaseを使うのか?

MySQLは安定しているが、分散システムとして設計されておらず、サイズにも上限がある。一方、Hadoopはスケーラブルだがプログラミングが難しく、ランダムな書き込みや読み込みに向いていない。

fig

Facebookがデータストアに求めていたのは、大半がほとんどアクセスされないという特徴を持つ巨大なデータを保存でき、柔軟性と可用性があって、強い一貫性を実現できること。一方、データセンター内のネットワークは二重化していたので、ネットワーク分断耐性は求めていなかった。

fig

この要件に合致したのがHBase。抜群の書き込み性能と読み込み性能があり、十分な可用性などがあった。

fig
fig

HBaseはHadoopの一部として開発されたもので、Facebookではその利用にあたり、Hadoopに変更を行った。その1つがファイルの追記(Append)機能。書き込み中にSyncすると、そこまでのファイルがほかのクライアントから見えるようになる。

fig

データの書き込みは、まずシーケンシャルにコミットログに書き込み、メモリストアにはソートされて保持される。ディスクにはそれをシーケンシャルに書き込んでいる(ディスクへの書き込みがつねにシーケンシャルであるために、書き込み性能が非常に高い)。

fig

水平方向のスケーラビリティは自動シャーディングによって実現されている。例えば、2台のサーバがそれぞれ4つのシャード(合計8つのシャード)を保持しているとする。

fig

そこへ3台目のサーバが追加されると、自動的に3台目のサーバにシャードが分散配置される。

fig

自動フェイルオーバー機能も備える。あるサーバに対して操作中にサーバがダウンすると、そのシャードは自動的に別のサーバに再配置されて処理が続行される。

fig
fig

続きとなる後編では、HBaseが実際にどのようなアプリケ-ションで使われているのかを紹介します。

FacebookがHBaseを大規模リアルタイム処理に利用している理由(後編)

関連記事

あわせて読みたい

NoSQL 機械学習・AI Facebook Hadoop オープンソース




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本