Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Liberty On Hbase 20091113

6,390 views

Published on

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

Published in: Technology, News & Politics
  • Be the first to comment

Liberty On Hbase 20091113

  1. 1. Hadoop/HBase開発 Adaptable Indexer on Hadoop/HBase HBase上での開発事例と教訓 2009年11月13日 テラニウムテクノロジ株式会社 松岡信也・小宮山康子
  2. 2. Version 11/12 23:00 第1部:Hbaseに出会うまでの経緯。インデクサでやりたいこと テラニウムテクノロジ代表;松岡信也;企画・試験 第2部:Hbaseによる開発の実際 テラニウムテクノロジ技術部;小宮山康子;設計・開発 CONFIDENTIAL © 2009 Telanium Technology Incorporated 2
  3. 3. そもそもやりたかったこと  メール検索、および、メールボックスとアルバム・カレンダを 連携させること CONFIDENTIAL © 2009 Telanium Technology Incorporated 3
  4. 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. 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. 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. 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. 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
  9. 9. HBaseを商用システム開発するとき、解決すべき課題 HBaseは、クラウド(AWSなど)を大規模データのインフラとして有効活 用するHadoopプロジェクトと一体不可分であるが…  開発 ;適したアーキテクチャか?開発環境は?ドキュメントは?  品質 ;リリース品質は?十分に焼きこまれているのか?  構築 ;性能・耐障害は宣伝通りなのか?  運用 ;レプリケーション・バックアップなどのデータ運用性  保守 ;オープンソースでの保守主体は?  将来性;コミュニティロードマップへの機能の反映は可能? CONFIDENTIAL © 2009 Telanium Technology Incorporated 10
  10. 10. 第1部:Hbaseに出会うまでの経緯。インデクサでやりたいこと テラニウムテクノロジ代表;松岡信也;企画・試験 第2部:Hbaseによる開発の実際 テラニウムテクノロジ技術部;小宮山康子;設計・開発 CONFIDENTIAL © 2009 Telanium Technology Incorporated 11
  11. 11. 第2部 HBaseによる開発の実際  HBase  概要  機能  アーキテクチャ  Liberty システム  HBase の使用上のポイント CONFIDENTIAL © 2009 Telanium Technology Incorporated 12
  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. 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. 14. HBase - 機能  HDFS 上に存在するデータセットに対して、リアルタイムでランダ ムな読み書きが可能な仕組みを提供。  HDFS では扱いにくい大量の “小さめ” ファイルに入っているデー タも、HBaseでまとめて管理することができる。  行は行キーによって自動的に昇順ソートされる。  テーブルの大きさが閾値を超えると自動的に分割される 。 CONFIDENTIAL © 2009 Telanium Technology Incorporated 15
  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. 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. 17. Liberty の HDFS/HBase の活用  HDFS で実現  ファイルの永続性の確保  分散してのファイルの保持  冗長化  HBaseで実現  分散 Key-Value  ドキュメント(ファイル)管理  アプリケーションで実現  アプリケーションロジック  インデクスの持ち方 CONFIDENTIAL © 2009 Telanium Technology Incorporated 18
  18. 18. 開発中にはまった点  テーブルサイズの膨張  インデクステーブルのサイズが大きくなった (今回のアプリではインデクス元のデータサイズの 50倍)  カラムとカラム名が一緒に保存されている  カラム名をつけずカラムファミリ名のみ使用した。  行キーの選択  行キーとして重複が許される値を使ってしまって、新規の行が作 成されずに、既存の行のカラム値が更新された  ユニークだと仮定していたデータが実は重複があることが判明  行キー設計し直し CONFIDENTIAL © 2009 Telanium Technology Incorporated 19
  19. 19. HBase を使う際のポイント  設計時  行キーの設計は慎重に行う。行キーはユニークかつ、想定される検索パタ ーンにおいて効率的に検索できるようにしておく必要がある。  テーブルファイルのサイズを節約するためには、カラム名は短めに設定し ておく  1リージョンで管理できるテーブル数はファイルディスクリプタの上限値に依 存するので、作成するテーブル数の配慮が必要。  開発時  0.20.x で新しく導入された API を使う  運用時  Master は単一障害ポイントなので、 この停止を極力減らすべく信頼性の 高いコンピュータ上で動かすことが重要。  リージョンサーバがクラッシュした場合、コミットログに書かれなかったオペ レーションは失われる。 CONFIDENTIAL © 2009 Telanium Technology Incorporated 20
  20. 20. まとめ  HBase を使ってみて  開発作業のしやすさ: ○  ドキュメント類の充実度: ○  サンプルコードの手に入りやすさ: ○  HBase/アプリケーションのバグ切り分けの容易さ: ○  コミュニティからの情報収集量: ○  インストール/バージョンアップのしやすさ: ○~△  HBase を使ったシステム設計のしやすさ: ○~△  テーブルスキーマ設計の容易さ: ○~△  ミドルウエアとして運用・監視・対障害対策等機能 の充実: △  HBase をDistributed Key-Value Storeとしては?  今後もアプリケーション基盤として使いたい  活発なコミュニティと必要な機能の着実な実現 CONFIDENTIAL © 2009 Telanium Technology Incorporated 21
  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
  22. 22. Thank you CONFIDENTIAL © 2009 Telanium Technology Incorporated 23

×