HBase 1.0.0 に向けてのまとめ

Hadoop関連(全部俺) Advent Calendar 2014:17日目の記事です
下記のツイートを見て知ったのですが、


ということで、ついにHBaseも1.0.0が秒読み(マダ)。本日17日に1.0.0RCブランチが登場するかもしれません。(日本時間の現時点ではまだです)
O’ReillyのHBase(馬本)は0.91ベースで書かれています。現在HBase 2nd editionが執筆中のようですが、大きく変わってくるでしょうね。せっかくの機会なので、復習をかねて、0.92以降の変更点をまとめておきます。

HBase 0.92での変更点抜粋

参考元情報 http://blog.cloudera.com/blog/2012/01/apache-hbase-0-92-0-has-been-released/
公開: 2012/1

  • HFile v2フォーマット
    • 注: 現在はv3フォーマットになっています
    • インデックスの実装が変わってパフォーマンスが向上
  • 分散ログ分割 (Distributed log splitting)
    • リカバリ時のHLog(WAL)の処理を単一マシンから複数のリージョンサーバーで並列で行えるように
  • マルチスレッドと非同期の実装
    • コンパクション、テーブルの作成、バルクロードなどが低遅延に
  • web UIの改善
  • hbckの強化とOfflineMetaRepairツールの搭載
  • コプロセッサーの対応

HBase 0.94での変更点抜粋

参考元情報 http://blog.cloudera.com/blog/2012/05/apache-hbase-0-94-is-now-released/
公開: 2012/5

  • 読み込みキャッシュの改善
  • シークの最適化
    • Lazy Seek optimization of StoreFile Scanners
  • WAL(HLog)書き込みの最適化
    • HLogの圧縮に対応し、HDFSのレプリケーションの時間を短縮
  • hbckの強化
  • Heuristic for Region size HBASE-4635

HBase 0.96での変更点抜粋

参考元情報 http://blog.cloudera.com/blog/2013/10/hbase-0-96-0-released/
公開: 2013/10

  • Mean Time To Recovery (MTTR) (参考情報 HBaseのMTTRの改善
  • バージョン間のコンパチビリティとアップグレードの改善 (HBASE-5305)
  • ネームスペースの採用
  • HFile v1の削除
  • Avro Gatewayの削除(馬本には出てますが、もう使えません。RESTかThirftを使う必要があります)
  • HBASE-7315, HBASE-7263 クライアント側のRowLockの削除
  • など

個人的にインパクトがあったのは、ROOTカタログテーブルの廃止。(HBASE-3171)

  • 従来
    • Zookeeper -> -ROOT- -> .META. -> ユーザーテーブル
  • 現在
    • Zookeeper -> hbase:meta -> ユーザーテーブル

確かにROOT->METAの2段階の表引きにするほど大規模になることはないんでしょうね(扱うテーブル数が桁違いになったらわかりませんが)

HBase 0.98での変更点抜粋

参考元情報 http://www.slideshare.net/AndrewPurtell/apache-hbase-098
公開: 2013/10

  • リバーススキャン
  • エンドポイント(コプロセッサー)でのEXECアクセスチェック (ACL)
    • RWXCA (Read, Write, Execute, Create, Admin)
  • セル単位でのアクセス制御リスト
  • Visibilityラベル
  • HFile v3
    • セル単位のACLと暗号化、Visibilityラベルのために必要
  • ストライプコンパクション
  • Transparent Encryption
  • MapReduce over snapshot
  • パフォーマンスの改善

Visibility labelは hbase shell から add label で指定することができます。時間があれば別の機会に。
 
 

コメント

  1. kernel023 kawasaki より:

    数時間前にHBase 1.0.0RC0用のbranch-1.0 がリリースされました。
    https://github.com/apache/hbase/tree/branch-1.0
    メール抜粋
    > As mentioned in the previous thread [1], for 1.0.0RC0, I’ve created branch-1.0 by forking branch-1. Now we have:
    > master
    > branch-1
    > branch-1.0
    > 0.98
    > 0.94
    > The reasoning and some guidelines are in [2].
    [2] https://docs.google.com/a/cloudera.com/document/d/1cVLxtc9icbtina2hrJCSaHLaZVeg_XfYKXMBaYvI3aA/edit#heading=h.pwj5kzppqac2