liberty on hbase 20091113
DESCRIPTION
The presentation material: "Adaptable Indexer on Hadoop/HBase" at Hadoop Conference Japan 2009 in Tokyo.TRANSCRIPT
Hadoop/HBase開発Adaptable Indexer on Hadoop/HBase
HBase上での開発事例と教訓
2009年11月13日
テラニウムテクノロジ株式会社
松岡信也・小宮山康子
2CONFIDENTIAL © 2009 Telanium Technology Incorporated
Version 11/12 23:00
第1部:Hbaseに出会うまでの経緯。インデクサでやりたいことテラニウムテクノロジ代表;松岡信也;企画・試験
第2部:Hbaseによる開発の実際テラニウムテクノロジ技術部;小宮山康子;設計・開発
3CONFIDENTIAL © 2009 Telanium Technology Incorporated
そもそもやりたかったこと
メール検索、および、メールボックスとアルバム・カレンダを連携させること
4CONFIDENTIAL © 2009 Telanium Technology Incorporated
住所録
Liberty –既存サービスから新たなサービスを
ウェブ
Web Logging
Contact
List
メール
Mail Data
検索
Location Log
Libertyスケーラブルインデクシングサービス(Liberty Scalable Indexing Service)
Document Abstraction Service
Index Access Subsystem
Java / C++ API
Indexing Sub-System
アクセス解析
グループウェア
新規サービス
既存サービス
5
Liberty – BDB(SleepyCat)を分散配置する
汎用サーバを水平配置することでスケーラビリティを実現する Googleのペーパ(*)により触発
データベースを使用しないデータベースはインデクス作成目的には重すぎる・高すぎる
Liberty:BDBをノード要素として分散配置する
C
Indexer
Search
Router
Hash Partitioned Extents (Forward Indexes)
Range Partitioned Extents (Reverse Indexes)
Exte
rnal D
ocum
ent S
erv
ices [E
DS
]
(Access, T
okeniz
atio
n,
Valid
atio
n)
Extent
Manager
CIndex
Server CIndex
Server
CIndex
Server CIndex
Server CIndex
Server CIndex
Server
Index
Server
Liberty
Core
その他データ
顧客DB
Mail Box
検索UI
アプリケーション
(*)http://research.google.com/archive/googlecluster.html
6CONFIDENTIAL © 2008 BAS Group
Liberty: Architecture (Backup)
C
Document Repository
Liberty Indexers
PresentationClients – WebUI, GUI
Search Routers
Hash Partitioned Extents (Forward Indexes)
Range Partitioned Extents (Reverse Indexes)
Document update triggers
Extent Manager
C
IndexServer
C
IndexServer
CIndexServer C
IndexServer C
IndexServer C
IndexServer
IndexServer
Liberty Realm
Liberty Core
Data
Abstr
actio
n S
erv
ices
(Access, T
okeniz
atio
n,
Valid
atio
n)
7CONFIDENTIAL © 2009 Telanium Technology Incorporated
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年にこのアーキテクチャにて開発を実施した クラウド以前であったためか、話半分がいいところ。全然売れず
8CONFIDENTIAL © 2009 Telanium Technology Incorporated
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/より抜粋
10CONFIDENTIAL © 2009 Telanium Technology Incorporated
HBaseを商用システム開発するとき、解決すべき課題
HBaseは、クラウド(AWSなど)を大規模データのインフラとして有効活用するHadoopプロジェクトと一体不可分であるが…
開発 ;適したアーキテクチャか?開発環境は?ドキュメントは?
品質 ;リリース品質は?十分に焼きこまれているのか?
構築 ;性能・耐障害は宣伝通りなのか?
運用 ;レプリケーション・バックアップなどのデータ運用性
保守 ;オープンソースでの保守主体は?
将来性;コミュニティロードマップへの機能の反映は可能?
11CONFIDENTIAL © 2009 Telanium Technology Incorporated
第1部:Hbaseに出会うまでの経緯。インデクサでやりたいことテラニウムテクノロジ代表;松岡信也;企画・試験
第2部:Hbaseによる開発の実際テラニウムテクノロジ技術部;小宮山康子;設計・開発
12CONFIDENTIAL © 2009 Telanium Technology Incorporated
第2部 HBaseによる開発の実際
HBase
概要
機能
アーキテクチャ
Liberty システム
HBase の使用上のポイント
13CONFIDENTIAL © 2009 Telanium Technology Incorporated
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人
メーリングリスト
一般用 ([email protected]) 平均流量 : 20通 / 日
開発用 ([email protected])平均流量 : 2通 / 日
14CONFIDENTIAL © 2009 Telanium Technology Incorporated
HBase の行キーとカラムの関係 テーブルは複数の行で構成されている。
各行は、行キーといくつかのカラムからできている。
データは、行キー・カラム名・タイムスタンプを指定すれば一意に決まる。
複数のカラムは、カラムファミリでグループピングする。
テーブルのカラムをアプリケーションの運用中に追加することができる。
行キー1 セルA1
カラムA
行キーとカラムが1対1
行キー1
ム値1
カラムA
セルA1-3
セルが変更履歴を持っている
行キー1
カラムA
1-2セルA1-3
カラム名B
セルB1-2
1つの行キーで、
複数のカラムを持っている
行キー1
カラムA
セルA1-3
カラムB
セルB1-2
カラムC
セルC1-4
カラムファミリ F2カラムファミリ F1
複数のカラムがカラムファミリでグループ化されている
15CONFIDENTIAL © 2009 Telanium Technology Incorporated
HBase -機能
HDFS 上に存在するデータセットに対して、リアルタイムでランダムな読み書きが可能な仕組みを提供。
HDFS では扱いにくい大量の “小さめ” ファイルに入っているデータも、HBaseでまとめて管理することができる。
行は行キーによって自動的に昇順ソートされる。
テーブルの大きさが閾値を超えると自動的に分割される 。
16CONFIDENTIAL © 2009 Telanium Technology Incorporated
HBase - クラスタ
Regionserver Regionserver
Master
Region
Region
テーブル
-ROOT- .META.
.logs
メタデータHDFS
HBase クラスタ ZooKeeper
クラスタ
HBase クラスタ-Master: regionserver の管理-Regionserver: HBaseクライアントからのテーブル操作に対応
HDFS
-HBase メタデータ保持-テーブルデータ 保持
ZooKeepr クラスタ-HBase メタデータの設定管理-HBase クラスタ内のプロセス監視
17CONFIDENTIAL © 2009 Telanium Technology Incorporated
Liberty システムと HBase
今回のアプリの対象ドキュメントの性格:サイズはHadoopとしては小規模だが流入数が多い(毎分数万から10万程度)
データ到着速度以上で ドキュメントのインデクスを作成し、HBase に格納する
一つのドキュメントに対しては、100か所程度以上のインデクスを張る
インデクス対象のドキュメントサイズは数KB~100KBのサイズの個別ファイルになっている。格納の効率化を図るため丸ごと HBase に格納した(行キーはファイル名のハッシュコード)
検索処理部からは到着したドキュメントに対して Hbaseを介してニアリアルタイムに検索処理が適宜行われる。
インデクス
作成部
HBase
Index
検索処理部
Cache
data
Document Abstraction Service (DAS)
18CONFIDENTIAL © 2009 Telanium Technology Incorporated
Liberty の HDFS/HBase の活用
HDFS で実現
ファイルの永続性の確保
分散してのファイルの保持
冗長化
HBaseで実現
分散 Key-Value
ドキュメント(ファイル)管理
アプリケーションで実現
アプリケーションロジック
インデクスの持ち方
19CONFIDENTIAL © 2009 Telanium Technology Incorporated
開発中にはまった点
テーブルサイズの膨張
インデクステーブルのサイズが大きくなった(今回のアプリではインデクス元のデータサイズの 50倍)
カラムとカラム名が一緒に保存されている
カラム名をつけずカラムファミリ名のみ使用した。
行キーの選択
行キーとして重複が許される値を使ってしまって、新規の行が作成されずに、既存の行のカラム値が更新された
ユニークだと仮定していたデータが実は重複があることが判明
行キー設計し直し
20CONFIDENTIAL © 2009 Telanium Technology Incorporated
HBase を使う際のポイント 設計時
行キーの設計は慎重に行う。行キーはユニークかつ、想定される検索パターンにおいて効率的に検索できるようにしておく必要がある。
テーブルファイルのサイズを節約するためには、カラム名は短めに設定しておく
1リージョンで管理できるテーブル数はファイルディスクリプタの上限値に依存するので、作成するテーブル数の配慮が必要。
開発時
0.20.x で新しく導入された API を使う
運用時
Master は単一障害ポイントなので、この停止を極力減らすべく信頼性の高いコンピュータ上で動かすことが重要。
リージョンサーバがクラッシュした場合、コミットログに書かれなかったオペレーションは失われる。
21CONFIDENTIAL © 2009 Telanium Technology Incorporated
まとめ
HBase を使ってみて 開発作業のしやすさ: ○
ドキュメント類の充実度: ○
サンプルコードの手に入りやすさ: ○
HBase/アプリケーションのバグ切り分けの容易さ: ○
コミュニティからの情報収集量: ○
インストール/バージョンアップのしやすさ: ○~△
HBase を使ったシステム設計のしやすさ: ○~△
テーブルスキーマ設計の容易さ: ○~△
ミドルウエアとして運用・監視・対障害対策等機能の充実: △
HBase をDistributed Key-Value Storeとしては?
今後もアプリケーション基盤として使いたい 活発なコミュニティと必要な機能の着実な実現
22CONFIDENTIAL © 2009 Telanium Technology Incorporated
Q&A
連絡先
松岡 ([email protected])
小宮山 ([email protected])
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.pdfHBase コミッタによる 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.htmlHBaseの入出力をMapReduceに組み合わせたサンプルコード。こちらも 0.18用