More Related Content Similar to Liberty On Hbase 20091113 (20) Liberty On Hbase 200911132. Version 11/12 23:00
第1部:Hbaseに出会うまでの経緯。インデクサでやりたいこと
テラニウムテクノロジ代表;松岡信也;企画・試験
第2部:Hbaseによる開発の実際
テラニウムテクノロジ技術部;小宮山康子;設計・開発
CONFIDENTIAL © 2009 Telanium Technology Incorporated 2
3. そもそもやりたかったこと
メール検索、および、メールボックスとアルバム・カレンダを
連携させること
CONFIDENTIAL © 2009 Telanium Technology Incorporated 3
4. Liberty – 既存サービスから新たなサービスを
ウェブ 住所録 メール 検索
既存サービス
Contact
List
Web Logging Mail Data Location Log
Libertyスケーラブルインデクシングサービス(Liberty Scalable Indexing Service)
Document Abstraction Service
Indexing Sub-System
Index Access Subsystem
Java / C++ API
新規サービス
アクセス グループ
解析 ウェア
CONFIDENTIAL © 2009 Telanium Technology Incorporated 4
5. Liberty – BDB(SleepyCat)を分散配置する
汎用サーバを水平配置すること
でスケーラビリティを実現する Mail Box Indexer Extent
Liberty
Manager Core
Googleのペーパ(*)により
触発 Index
Server
Index
Server
Index
Server
C C C
External Document Services [EDS]
(Access, Tokenization, Validation)
顧客DB
データベースを使用しない Hash Partitioned Extents (Forward Indexes)
データベースはインデクス作 Index
Server
Index
Server
Index
Server
Index
Server
C C C C
成目的には重すぎる・高すぎる その他 Search
データ Router
Range Partitioned Extents (Reverse Indexes)
Liberty:BDBをノード要素とし
て分散配置する アプリケーション
検索UI
(*)http://research.google.com/archive/googlecluster.html
5
6. Liberty: Architecture (Backup)
Liberty Core
Document Liberty Extent
Repository Indexers Manager
Index Index Index
(Access, Tokenization, Validation)
Server Server Server
C C C
Data Abstraction Services
Document update
triggers
Hash Partitioned Extents (Forward Indexes)
Index Index Index Index
Server Server Server Server
C C C C
Presentation Search
Clients – WebUI, GUI Routers
Range Partitioned Extents (Reverse Indexes)
Liberty Realm
CONFIDENTIAL © 2008 BAS Group 6
7. Liberty In Action
特徴:DASレイヤにより種々のデータ種別に対応する
Web Applications 3rd Party Applications
Liberty C++/Java API
Liberty Document Abstraction Services/Plugins
Liberty Search and Index Routers
Liberty Core
Liberty Realm
PAAS Layer
2006年から2007年にこのアーキテクチャにて開発を実施した
クラウド以前であったためか、話半分がいいところ。全然売れず
CONFIDENTIAL © 2009 Telanium Technology Incorporated 7
8. OSS利用への方向転換
2008年頃から「クラウド」がホットに
商用インフラとして「汎用サーバ」の大規模展開が市民権を得る
OSSの世界では「hadoop」が出現。非RDB大規模データがブームに
2009年にLibertyをOSSで実現することで評価
種々の選択肢(Voldemort、Hbase、Cassandraなどが有力)が乱立状態
Hbaseの使用に決定した
コミュニティ活動がある
サービス付随でない
Hadoopがホット
開発活動活発(2009/Q2)
出典:http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/より抜粋
CONFIDENTIAL © 2009 Telanium Technology Incorporated 8
10. 第1部:Hbaseに出会うまでの経緯。インデクサでやりたいこと
テラニウムテクノロジ代表;松岡信也;企画・試験
第2部:Hbaseによる開発の実際
テラニウムテクノロジ技術部;小宮山康子;設計・開発
CONFIDENTIAL © 2009 Telanium Technology Incorporated 11
11. 第2部 HBaseによる開発の実際
HBase
概要
機能
アーキテクチャ
Liberty システム
HBase の使用上のポイント
CONFIDENTIAL © 2009 Telanium Technology Incorporated 12
12. HBase - 概要
Google BigTable をベースにした column-oriented なDB
(http://research.google.com/archive/bigtable-osdi06.pdf)
2008年3月 Hadoop のサブプロジェクトとして 0.1.0 版リリース
2009年10月 0.20.1 版リリース (最新)
Hadoop のバージョンと同期してリリース
0.19から0.20 の間で API 変更があった。
Commiter: 8人
メーリングリスト
一般用 (hbase-user@hadoop.apache.org) 平均流量 : 20通 / 日
開発用 (hbase-dev@hadoop.apache.org)平均流量 : 2通 / 日
CONFIDENTIAL © 2009 Telanium Technology Incorporated 13
13. テーブルは 複数の行
HBase の行キーとカラムの関係 で構成されている。
カラムA 各行は、行キーといく
つかのカラムからでき
行キー1 セルA1 行キーとカラムが1対1 ている。
データは、行キー・カ
カラムA ラム名・タイムスタンプ
ム値1 セルが変更履歴を持っている
を指定すれば一意に
決まる。
行キー1 セルA1-3
複数のカラムは、カラム
ファミリでグループピン
カラムA カラム名B グする。
1つの行キーで、
テーブルのカラムをア
1-2 複数のカラムを プリケーションの運用
行キー1 セルA1-3 セルB1-2
持っている 中に追加することがで
きる。
カラムファミリ F1 カラムファミリ F2
カラムA カラムB カラムC
複数のカラムがカラム
ファミリでグループ化され
行キー1 セルA1-3 セルB1-2 セルC1-4
ている
CONFIDENTIAL © 2009 Telanium Technology Incorporated 14
14. HBase - 機能
HDFS 上に存在するデータセットに対して、リアルタイムでランダ
ムな読み書きが可能な仕組みを提供。
HDFS では扱いにくい大量の “小さめ” ファイルに入っているデー
タも、HBaseでまとめて管理することができる。
行は行キーによって自動的に昇順ソートされる。
テーブルの大きさが閾値を超えると自動的に分割される 。
CONFIDENTIAL © 2009 Telanium Technology Incorporated 15
15. HBase - クラスタ
Master HBase クラスタ ZooKeeper
クラスタ
Regionserver Regionserver HBase クラスタ
-Master: regionserver の管理
-Regionserver: HBaseクライアン
トからのテーブル操作に対応
HDFS
-HBase メタデータ保持
HDFS メタデータ テーブル
-テーブルデータ 保持
ZooKeepr クラスタ
Region -HBase メタデータの設定管理
-ROOT- .META.
-HBase クラスタ内のプロセス監視
.logs Region
CONFIDENTIAL © 2009 Telanium Technology Incorporated 16
16. Liberty システムと HBase
今回のアプリの対象ドキュメントの性格: Document Abstraction Service (DAS)
サイズはHadoopとしては小規模だが流
入数が多い(毎分数万から10万程度)
データ到着速度以上で ドキュメントのイ
ンデクスを作成し、HBase に格納する HBase
検索処理部
インデクス
作成部
一つのドキュメントに対しては、100か所
程度以上のインデクスを張る
Cache
インデクス対象のドキュメントサイズは Index
data
数KB~100KBのサイズの個別ファイル
になっている。格納の効率化を図るため
丸ごと HBase に格納した
(行キーはファイル名のハッシュコード)
検索処理部からは到着したドキュメント
に対して Hbaseを介してニアリアルタイ
ムに検索処理が適宜行われる。
CONFIDENTIAL © 2009 Telanium Technology Incorporated 17
17. Liberty の HDFS/HBase の活用
HDFS で実現
ファイルの永続性の確保
分散してのファイルの保持
冗長化
HBaseで実現
分散 Key-Value
ドキュメント(ファイル)管理
アプリケーションで実現
アプリケーションロジック
インデクスの持ち方
CONFIDENTIAL © 2009 Telanium Technology Incorporated 18
18. 開発中にはまった点
テーブルサイズの膨張
インデクステーブルのサイズが大きくなった
(今回のアプリではインデクス元のデータサイズの 50倍)
カラムとカラム名が一緒に保存されている
カラム名をつけずカラムファミリ名のみ使用した。
行キーの選択
行キーとして重複が許される値を使ってしまって、新規の行が作
成されずに、既存の行のカラム値が更新された
ユニークだと仮定していたデータが実は重複があることが判明
行キー設計し直し
CONFIDENTIAL © 2009 Telanium Technology Incorporated 19
19. HBase を使う際のポイント
設計時
行キーの設計は慎重に行う。行キーはユニークかつ、想定される検索パタ
ーンにおいて効率的に検索できるようにしておく必要がある。
テーブルファイルのサイズを節約するためには、カラム名は短めに設定し
ておく
1リージョンで管理できるテーブル数はファイルディスクリプタの上限値に依
存するので、作成するテーブル数の配慮が必要。
開発時
0.20.x で新しく導入された API を使う
運用時
Master は単一障害ポイントなので、 この停止を極力減らすべく信頼性の
高いコンピュータ上で動かすことが重要。
リージョンサーバがクラッシュした場合、コミットログに書かれなかったオペ
レーションは失われる。
CONFIDENTIAL © 2009 Telanium Technology Incorporated 20
20. まとめ
HBase を使ってみて
開発作業のしやすさ: ○
ドキュメント類の充実度: ○
サンプルコードの手に入りやすさ: ○
HBase/アプリケーションのバグ切り分けの容易さ: ○
コミュニティからの情報収集量: ○
インストール/バージョンアップのしやすさ: ○~△
HBase を使ったシステム設計のしやすさ: ○~△
テーブルスキーマ設計の容易さ: ○~△
ミドルウエアとして運用・監視・対障害対策等機能 の充実: △
HBase をDistributed Key-Value Storeとしては?
今後もアプリケーション基盤として使いたい
活発なコミュニティと必要な機能の着実な実現
CONFIDENTIAL © 2009 Telanium Technology Incorporated 21
21. Q&A
連絡先
松岡 (shinya.matsuoka@telanium.com)
小宮山 (yasuko.komiyama@telanium.com)
www.telanium.com
参考サイト
概要
http://hadoop.apache.org/ Hadoop 本家
http://jimbojw.com/wiki/index.php?title=Understanding_Hbase_and_BigTable
行キーとセルの理解のわかりやすい説明
http://wiki.apache.org/hadoop/HBase/HBasePresentations?action=AttachFile&do=view&target=ApacheCon2009
_Practical_HBase-1.pdf
HBase コミッタによる HBase の解説
開発
http://ole-martin.net/hbase-tutorial-for-beginners/
HelloWorld 的HBaseサンプルコード。HBase 0.18用ですが、雰囲気はつかめます
http://old.nabble.com/Re:-Map-Reduce-over-HBase---sample-code-p18253120.html
HBase の入出力をMapReduceに組み合わせたサンプルコード。こちらも 0.18用
CONFIDENTIAL © 2009 Telanium Technology Incorporated 22