liberty on hbase 20091113

22
Hadoop/HBase開発 Adaptable Indexer on Hadoop/HBase HBase上での開発事例と教訓 20091113テラニウムテクノロジ株式会社 松岡信也・小宮山康子

Upload: telanium-technology-inc

Post on 04-Jul-2015

6.015 views

Category:

Technology


2 download

DESCRIPTION

The presentation material: "Adaptable Indexer on Hadoop/HBase" at Hadoop Conference Japan 2009 in Tokyo.

TRANSCRIPT

Page 1: Liberty On Hbase 20091113

Hadoop/HBase開発Adaptable Indexer on Hadoop/HBase

HBase上での開発事例と教訓

2009年11月13日

テラニウムテクノロジ株式会社

松岡信也・小宮山康子

Page 2: Liberty On Hbase 20091113

2CONFIDENTIAL © 2009 Telanium Technology Incorporated

Version 11/12 23:00

第1部:Hbaseに出会うまでの経緯。インデクサでやりたいことテラニウムテクノロジ代表;松岡信也;企画・試験

第2部:Hbaseによる開発の実際テラニウムテクノロジ技術部;小宮山康子;設計・開発

Page 3: Liberty On Hbase 20091113

3CONFIDENTIAL © 2009 Telanium Technology Incorporated

そもそもやりたかったこと

メール検索、および、メールボックスとアルバム・カレンダを連携させること

Page 4: Liberty On Hbase 20091113

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

アクセス解析

グループウェア

新規サービス

既存サービス

Page 5: Liberty On Hbase 20091113

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

Page 6: Liberty On Hbase 20091113

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)

Page 7: Liberty On Hbase 20091113

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年にこのアーキテクチャにて開発を実施した クラウド以前であったためか、話半分がいいところ。全然売れず

Page 8: Liberty On Hbase 20091113

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/より抜粋

Page 9: Liberty On Hbase 20091113

10CONFIDENTIAL © 2009 Telanium Technology Incorporated

HBaseを商用システム開発するとき、解決すべき課題

HBaseは、クラウド(AWSなど)を大規模データのインフラとして有効活用するHadoopプロジェクトと一体不可分であるが…

開発 ;適したアーキテクチャか?開発環境は?ドキュメントは?

品質 ;リリース品質は?十分に焼きこまれているのか?

構築 ;性能・耐障害は宣伝通りなのか?

運用 ;レプリケーション・バックアップなどのデータ運用性

保守 ;オープンソースでの保守主体は?

将来性;コミュニティロードマップへの機能の反映は可能?

Page 10: Liberty On Hbase 20091113

11CONFIDENTIAL © 2009 Telanium Technology Incorporated

第1部:Hbaseに出会うまでの経緯。インデクサでやりたいことテラニウムテクノロジ代表;松岡信也;企画・試験

第2部:Hbaseによる開発の実際テラニウムテクノロジ技術部;小宮山康子;設計・開発

Page 11: Liberty On Hbase 20091113

12CONFIDENTIAL © 2009 Telanium Technology Incorporated

第2部 HBaseによる開発の実際

HBase

概要

機能

アーキテクチャ

Liberty システム

HBase の使用上のポイント

Page 12: Liberty On Hbase 20091113

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通 / 日

Page 13: Liberty On Hbase 20091113

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

複数のカラムがカラムファミリでグループ化されている

Page 14: Liberty On Hbase 20091113

15CONFIDENTIAL © 2009 Telanium Technology Incorporated

HBase -機能

HDFS 上に存在するデータセットに対して、リアルタイムでランダムな読み書きが可能な仕組みを提供。

HDFS では扱いにくい大量の “小さめ” ファイルに入っているデータも、HBaseでまとめて管理することができる。

行は行キーによって自動的に昇順ソートされる。

テーブルの大きさが閾値を超えると自動的に分割される 。

Page 15: Liberty On Hbase 20091113

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 クラスタ内のプロセス監視

Page 16: Liberty On Hbase 20091113

17CONFIDENTIAL © 2009 Telanium Technology Incorporated

Liberty システムと HBase

今回のアプリの対象ドキュメントの性格:サイズはHadoopとしては小規模だが流入数が多い(毎分数万から10万程度)

データ到着速度以上で ドキュメントのインデクスを作成し、HBase に格納する

一つのドキュメントに対しては、100か所程度以上のインデクスを張る

インデクス対象のドキュメントサイズは数KB~100KBのサイズの個別ファイルになっている。格納の効率化を図るため丸ごと HBase に格納した(行キーはファイル名のハッシュコード)

検索処理部からは到着したドキュメントに対して Hbaseを介してニアリアルタイムに検索処理が適宜行われる。

インデクス

作成部

HBase

Index

検索処理部

Cache

data

Document Abstraction Service (DAS)

Page 17: Liberty On Hbase 20091113

18CONFIDENTIAL © 2009 Telanium Technology Incorporated

Liberty の HDFS/HBase の活用

HDFS で実現

ファイルの永続性の確保

分散してのファイルの保持

冗長化

HBaseで実現

分散 Key-Value

ドキュメント(ファイル)管理

アプリケーションで実現

アプリケーションロジック

インデクスの持ち方

Page 18: Liberty On Hbase 20091113

19CONFIDENTIAL © 2009 Telanium Technology Incorporated

開発中にはまった点

テーブルサイズの膨張

インデクステーブルのサイズが大きくなった(今回のアプリではインデクス元のデータサイズの 50倍)

カラムとカラム名が一緒に保存されている

カラム名をつけずカラムファミリ名のみ使用した。

行キーの選択

行キーとして重複が許される値を使ってしまって、新規の行が作成されずに、既存の行のカラム値が更新された

ユニークだと仮定していたデータが実は重複があることが判明

行キー設計し直し

Page 19: Liberty On Hbase 20091113

20CONFIDENTIAL © 2009 Telanium Technology Incorporated

HBase を使う際のポイント 設計時

行キーの設計は慎重に行う。行キーはユニークかつ、想定される検索パターンにおいて効率的に検索できるようにしておく必要がある。

テーブルファイルのサイズを節約するためには、カラム名は短めに設定しておく

1リージョンで管理できるテーブル数はファイルディスクリプタの上限値に依存するので、作成するテーブル数の配慮が必要。

開発時

0.20.x で新しく導入された API を使う

運用時

Master は単一障害ポイントなので、この停止を極力減らすべく信頼性の高いコンピュータ上で動かすことが重要。

リージョンサーバがクラッシュした場合、コミットログに書かれなかったオペレーションは失われる。

Page 20: Liberty On Hbase 20091113

21CONFIDENTIAL © 2009 Telanium Technology Incorporated

まとめ

HBase を使ってみて 開発作業のしやすさ: ○

ドキュメント類の充実度: ○

サンプルコードの手に入りやすさ: ○

HBase/アプリケーションのバグ切り分けの容易さ: ○

コミュニティからの情報収集量: ○

インストール/バージョンアップのしやすさ: ○~△

HBase を使ったシステム設計のしやすさ: ○~△

テーブルスキーマ設計の容易さ: ○~△

ミドルウエアとして運用・監視・対障害対策等機能の充実: △

HBase をDistributed Key-Value Storeとしては?

今後もアプリケーション基盤として使いたい 活発なコミュニティと必要な機能の着実な実現

Page 21: Liberty On Hbase 20091113

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用

Page 22: Liberty On Hbase 20091113

23CONFIDENTIAL © 2009 Telanium Technology Incorporated

Thank you