Más contenido relacionado La actualidad más candente (20) Similar a 刊行記念セミナー「HBase徹底入門」 (20) 刊行記念セミナー「HBase徹底入門」5. 5
HBase徹底入門
● Part 1「HBaseとは」
o 図や例を多用してできるだけわかりやすく
● Part 2「アプリケーション開発」
o 実践的なサンプルアプリが多数
● Part 3「クラスタの構築と運用」
o Cloudera Managerを使った構築
● 付録
o コプロセッサやバルクロード、パフォーマンスチューニング
などの高度なトピック、HBase-1.0.0など
10. 10
特徴
● スケーラブル
o 自動シャーディング
o 大規模データに対応
● 高可用性
o 自動フェイルオーバー機能
● ハイパフォーマンス
o LSM-tree(Log Structured Merge Tree)
o 特に書き込みが速い
o 読み込みも低レイテンシ
13. 13
ユースケース
● Facebook
o メッセージ機能
● LINE
o おそらく、日本で一番規模が大きい
o 1000台規模
● Amebaのスマートフォンプラットフォーム
o グラフDBとして
o HBaseを用いたグラフDB「Hornet」の設計と運用
http://www.slideshare.net/brfrn169/hcj2014-hornet
21. 21
HBaseのAPI
● CRUD
o get
Rowを取得
o put
RowやColumnの追加・更新
o delete
RowやColumnの削除
● スキャン
o 複数のRowを取得
o レンジスキャン(開始RowKey、停止RowKey)
40. 40
スキーマ設計
● RowKey, Column, Timestamp, 値のどこにデータをマッピングす
るか
● RDBの設計
o 対象世界を分析してER図を書く(概念設計)
o ER図をもとにリレーショナルモデルを作成(論理設計)
o テーブルやインデックスを定義など(物理設計)
● HBaseのスキーマ設計
o 論理設計までは同じ
o 物理設計をどうするかというところがかなり違う
API
ストレージフォーマット
51. 51
メッセージングサービス
● スキーマ設計(物理設計)
o スキーマを考える(RowKey)
全てのクエリでメッセージを取得する
=> メッセージIDをRowKeyに入れる
全てのクエリでルーム毎に取得している
=> RowKeyにルームIDを先頭に入れる
ルーム毎に最新順で取得できる必要がある
● 送信日時のリバースタイムスタンプをルームIDとメッセー
ジIDの間に入れる
o リバースタイムスタンプとは、タイムスタンプをlong型
の最大値から引いた値
最後にホットスポット対策のために、ルームIDのハッシュ値を
先頭に入れる
56. 56
メッセージングサービス
RowKey Column Timesamp 値
0xab-1-100-msgId1 m:body msg1
0xab-1-100-msgId1 m:userId user1
0xab-1-100-msgId1 m:userName name1
0xab-1-200-msgId2 m:body msg2
0xab-1-200-msgId2 m:userId user2
0xab-1-200-msgId2 m:userName name2
0xab-1-300-msgId3 m:body msg3
0xab-1-300-msgId3 m:userId user2
0xab-1-300-msgId3 m:userName name2
0xac-9-100-msgId5
・
・
・
「0xab-1-」を
プレフィックス
として
レンジスキャン
58. 58
メッセージングサービス
RowKey Column Timesamp 値
0xab-1-100-msgId1 m:body msg1
0xab-1-100-msgId1 m:userId user1
0xab-1-100-msgId1 m:userName name1
0xab-1-200-msgId2 m:body msg2
0xab-1-200-msgId2 m:userId user2
0xab-1-200-msgId2 m:userName name2
0xab-1-300-msgId3 m:body msg3
0xab-1-300-msgId3 m:userId user2
0xab-1-300-msgId3 m:userName name2
0xac-9-100-msgId5
・
・
・
受け取っている一番古
いメッセージ+1をスキ
ャン開始RowKeyにして
レンジスキャン
60. 60
メッセージングサービス
RowKey Column Timesamp 値
0xab-1-100-msgId1 m:body msg1
0xab-1-100-msgId1 m:userId user1
0xab-1-100-msgId1 m:userName name1
0xab-1-200-msgId2 m:body msg2
0xab-1-200-msgId2 m:userId user2
0xab-1-200-msgId2 m:userName name2
0xab-1-300-msgId3 m:body msg3
0xab-1-300-msgId3 m:userId user2
0xab-1-300-msgId3 m:userName name2
0xac-9-100-msgId5
・
・
・
受け取っている一番新
しいメッセージをスキ
ャン停止RowKeyにして
レンジスキャン
80. 80
Chapter 8 クラスタの設計 のポイント
● クラスタの構成やサーバスペックの参考情報を紹介
● HBaseの完全分散モードでの構築方法を紹介
o Cloudera Managerを使用
o スクリーンキャプチャ多め
Chapter 9 クラスタの構築 のポイント
81. 81
Chapter 10 管理オペレーションの基礎 のポイント
● よくあるオペレーションをハンズオン形式で紹介
o どういったオペレーションがあるのか
Chapter 11 発展的な管理オペレーションのポイント
● Cloudera ManagerのREST APIの紹介
● 各ノードダウン時の復旧方法
o Cloudera Manager Server、
マスターノード、スレーブノード