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を大規模リアルタイム処理に利用している理由(後編)

関連記事

このエントリーをはてなブックマークに追加
follow us in feedly


関連タグ NoSQL / 機械学習・AI / Facebook / Hadoop / オープンソース



タグクラウド(β版)

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準
アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

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

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


最新記事10本