54
1

Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

Embed Size (px)

DESCRIPTION

This is the Japanese translation of the presentation at Tokyo HBase Meetup (July 1, 2011) Author: Jonathan Gray Software Engineer / HBase Commiter at Facebook

Citation preview

Page 1: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

1

Page 2: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

Realtime Big Data at Facebookwith Hadoop and HBase

Jonathan GrayJuly !, "#!!Tokyo HBase Meetup

Hadoop と HBase によるFacebook のリアルタイム・ビッグ・データRealtime Big Data at Facebookwith Hadoop and HBase

ジョナサン・グレイ / Jonathan GrayJuly 1, 2011Tokyo HBase Meetup

2

Page 3: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

1 なぜ Apache Hadoop / HBaseなのか?

2 HBaseの紹介

3 FacebookにおけるHBase利 事例

アジェンダ

3

Page 4: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪以前は Streamy.com の共同設 者▪ リアルタイム・ソーシャルニュース・アグリゲータ▪ 当初は PostgreSQL で構築▪ ビッグデータの問題をきっかけに Hadoop/HBase に乗り換えた

▪ Facebookのソフトウェア・エンジニア▪ データインフラとオープンソースのエバンジェリスト▪ HBaseと他の技術(Hadoop、Hive、Scribe、Thrift)の開発、デプロイ、サポート

紹介 ジョナサン・グレイ

4

Page 5: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

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

5

Page 6: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

OS ウェブサーバー データベース 語

6

Page 7: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

OS ウェブサーバー データベース 語

キャッシュ データ分析

6

Page 8: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ MySQL は安定している、しかし、▪ 分散システムとしては設計されていない▪ テーブルサイズの上限▪ 柔軟性に けるスキーマ

▪ Hadoop はスケーラブル、しかし、▪ MapReduce は遅いうえに難しい▪ ランダム書き込みに対応していない▪ ランダム読み込みの対応が貧弱

既存ソフトウェア・スタックの問題

7

Page 9: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ スループットな key-value 永続化エンジン▪ Tokyo Cabinet

▪ 規模データウェアハウス▪ Hive

▪写真の格納▪ Haystack

▪その他もろもろの 途向けの 独 C++ サーバー

個別の解決策

8

Page 10: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ Facebook メッセージの要件▪ 巨 なデータセット。その 半はcoldデータ▪ エラスティック性、 可 性▪ データセンター内の強い 貫性▪ 故障の封じ込め

▪求めなかったこと▪ データセンター内のネットワーク分断▪ データセンター同 のアクティブ~アクティブ構成

私たちがデータストアに求めていたことは?

9

Page 11: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ 2010年初頭、FBのエンジニアチームがDBを 較▪ Apache Cassandra、Apache HBase、MySQLシャーディング構成

▪性能、スケーラビリティー、機能を 較した▪ HBaseは、抜群の書き込み性能と 分な読み込み性能を発揮▪ HBaseには「あったらいいな」と思う機能が数多く含まれていた

▪ アトミックな「読み込み → 変更 → 書き込み」操作▪ 個々のサーバーに複数のシャードを割り当て▪ バルク・インポート▪ MapReduce

HBase が要件に合致

10

Page 12: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBase とは?分散型、カラム指向、多次元、ソート済み、可 性、ハイパフォーマンスな永続化ストレージ・システム

11

Page 13: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBaseとは?▪分散型

▪ コモディティ・サーバーによるクラスター▪列指向

▪ スプレッドシートにはめ込むのではなく、データ構造をマッピング▪多次元、ソート済み

▪ 3つの次元が全てソートされている▪ テーブルは 順、 はカラム順、カラムはバージョン順にソート

12

Page 14: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBaseとは?▪ 可 性

▪ ノード故障への耐性を持つ▪ いパフォーマンス

▪ ログ形式による いスループット▪ スキャンとランダム読み込みの効率を考慮した設計

▪永続性▪ 持続性(durability)を保証

13

Page 15: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ Hadoop の 部としてスタート▪ HBase によりHDFSのランダム読み込み・書き込みが可能に

▪ FBでの利 にあたって Hadoop の変更が必要だった▪ ファイルの 追記(append)▪ 可 性版 NameNode▪ 読み込み操作の最適化

▪そして ZooKeeper!

Apache HBase

14

Page 16: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBase システムの概要

. . . HBASE

. . .

データベース層

ストレージ層

Master バックアップMaster

Region Server Region Server Region Server

Namenode Secondary Namenode

Datanode

ZK Peer

ZK Peer

協調サービス

Zookeeper QuorumDatanode Datanode

HDFS

. . .

15

Page 17: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBase の特徴▪ い書き込みスループット▪ 平 向のスケーラビリティー▪ 動フェイルオーバー▪リージョンの動的なシャーディング▪ HBase では HDFS と ZooKeeper を利

16

Page 18: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

い書き込みスループット

Key val

Key val

Key val

Key val

...

...

Key val

Key val

Key val

Key val

...

コミットログ Memストア17

Page 19: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

い書き込みスループット

Key val

Key val

Key val

Key val

...

...

Key val

Key val

Key val

Key val

...

Key Value書き込み

Key val シーケンシャルな書き込み

コミットログ Memストア17

Page 20: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

い書き込みスループット

Key val

Key val

Key val

Key val

...

...

Key val

Key val

Key val

Key val

Key val

...

Key val

コミットログ Memストア

メモリ上に保存

17

Page 21: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

い書き込みスループット

Key val

Key val

Key val

Key val

...

...

Key val

Key val

Key val

Key val

Key val

...

Key val

コミットログ

シーケンシャルな書き込み

Memストア17

Page 22: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

平 向のスケーラビリティ

Region

. . . . . .

18

Page 23: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

平 向のスケーラビリティ

Region

. . . . . .

18

Page 24: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

平 向のスケーラビリティ

Region

. . . . . .

18

Page 25: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

平 向のスケーラビリティ

Region

. . . . . .

18

Page 26: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

動フェイルオーバーHBaseクライアント

19

Page 27: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

動フェイルオーバーHBaseクライアント

サーバーダウン

19

Page 28: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

動フェイルオーバーHBaseクライアント

19

Page 29: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

動フェイルオーバーHBaseクライアント

METAから新しいサーバーをつける

19

Page 30: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

リージョンを動的にシャーディング

Region. . . . . .

20

Page 31: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

リージョンを動的にシャーディング

Region. . . . . .

サーバーが過負荷に

20

Page 32: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

リージョンを動的にシャーディング

Region. . . . . .

20

Page 33: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

HBase は HDFS を利 しているHDFSのストレージとしてのうま味が 緒に付いてくる▪故障への耐性▪スケーラビリティ▪チェックサムで損傷を修復▪ MapReduce▪ HDFSにはペタバイト規模での 分なテストと利 実績がある

21

Page 34: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

Facebook における HBase アプリケーション

22

Page 35: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

事例1

Titan(Facebook メッセージ)

23

Page 36: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

SMSメッセージ EメールIM/チャット

Facebook 新メッセージ

24

Page 37: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ FB史上 最 規模の開発作業▪ 15 のエンジニアで1年超▪ 20を超えるインフラ技術を統合

▪ Hadoop、HBase、Haystack、ZooKeeper、etc...

▪初 から、途 もない規模のサービス▪ 数億 のアクティブ・ユーザー▪ 毎秒6000通のメッセージ、5万件のインスタントメッセージ▪ 圧縮状態で 間300TBのデータ増加

Facebook メッセージング

25

Page 38: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

メッセージングのチャレンジ▪ い書き込み性能

▪ メッセージ、インスタント・メッセージ、SMS、Eメールを1つ残らず▪ これら全てに対する検索 インデックス▪ 正規化されたスキーマ

▪途 もない規模のクラスター▪ 量のデータと利 形態から、 規模なサーバー・フットプリントが必然に▪ サービスの利 に影響のある停 は避けたい▪ 容易にスケールアウトできなければならない

26

Page 39: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

典型的なセルの構成▪ メッセージング向けに複数のセル▪ 1ラックあたり 20サーバー、1クラスターあたり 5つ以上のラック▪ コントローラー (マスター/Zookeeper) は各ラックに分散

ラック #2 ラック #3 ラック #4 ラック #5ラック #1

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

19x... 19x... 19x... 19x... 19x...Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

Region ServerData NodeTask Tracker

ZooKeeperZooKeeperZooKeeperZooKeeperZooKeeperBackup NameNodeHDFS NameNode HBase Master Backup MasterJob Tracker

27

Page 40: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

事例2

Puma(Facebook インサイト)

28

Page 41: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

Puma以前HadoopによるトラディショナルなETL

Web Tier HDFS Hive MySQLScribe MR SQL

SQL

15分 ~ 24時間29

Page 42: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

PumaHBaseによるリアルタイム ETL

Web Tier HDFS Puma HBaseScribe PTail HTable

Thrift

10 ~ 30秒30

Page 43: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪リアルタイムなデータ・パイプライン▪ 既存のログ・アグリゲーション・パイプライン (Scribe~HDFS) を活▪ HDFSの低レイテンシ能 を拡張 (Sync+PTail)▪ スループットの書き込み (HBase)

▪リアルタイムでの集約を実現▪ ロールアップの追跡に HBaseのアトミック・インクリメントを活▪ ユニークユーザーの算出のために複雑な HBase スキーマ▪ チェックポイント情報を HBase に直接保存

Puma

31

Page 44: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ Map フェーズは PTail▪ ログ・ストリームを N個のシャードに分割▪ 最初のバージョンではランダム・バケットのみ提供▪ 現在ではアプリケーション・レベルのバケットを提供

▪ Reduce フェーズは HBase▪ HBase の個々の +カラムが出 キーになる▪ アトミック・カウンターを いてキーの数を集計▪ キーごとのリストや他の構造を維持することも可能

Pumaでリアルタイム MapReduce

32

Page 45: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪リアルタイム URL/ドメイン インサイト▪ ドメインオーナーが 分のサイトに関する掘り下げた分析を閲覧▪ クリック数、いいね(Like)の数、シェアの数、コメント数、インプレッション数

▪ 詳細にわたる 統計学的な分類 (匿名データ)▪ 地域ごと、もしくは、グローバルな観点で集計されたトップURL

▪途 もないスループット▪ 数 億のURL▪ 毎秒 百万件を超えるカウントアップ

Puma for Facebook インサイト

33

Page 46: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

34

Page 47: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

35

Page 48: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

事例3

ODS(Facebook 内部メートリックス)

36

Page 49: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ Operational Data Store▪ システム・メートリックス (CPU、メモリ、IO、ネットワーク)▪ アプリケーション・メートリックス (ウェブ、DB、キャッシュ)▪ Facebook メートリックス (利 状況、収益)

▪ 時間軸に沿ったグラフを簡単に作成▪ 複雑な集計と変換をサポート

▪ MySQLではスケールしづらい▪ 数 億の計測点に対する数百万のユニークな時系列▪ イレギュラーなデータ増加パターン

ODS

37

Page 50: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

Facebook における HBase の将来

38

Page 51: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

ユーザーとグラフ・データを HBase で

39

Page 52: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ HBase を MySQL の増強版という観点で考える▪ MySQL では 単位のACID属性のみを使 している▪ DBの 前には、常にインメモリー・キャッシュが置かれている▪ HBase はディクショナリとリストの保存に適している

▪データベース・ティアのサイズはIOP(I/O操作の重さと回数)で決まる▪ HBase はシーケンシャル書き込みだけを う▪ 少ないIOPは低コストにつながる▪ 巨 なテーブルを、 容量、低価格なコモディティー・ノードに配置

HBase を重要な 途に

40

Page 53: Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)

▪ Facebook は、リアルタイム Hadoop/HBase に注 している▪ Facebook エンジニアによる 規模なチーム作業▪ オープンソース開発者との密接なコラボレーション

▪ Apache Hadoop Goes Realtime at FacebookSIGMOD 2011▪ http://borthakur.com/ftp/RealtimeHadoopSigmod2011.pdf▪ HadoopとHBaseに加えた変更点について、技術 からの詳細▪ 本番環境での運 経験

まとめ

41