Hadoop関連(全部俺) Advent Calendar 2014:17日目の記事です
下記のツイートを見て知ったのですが、
“HBase Developer – Thinking of cutting 1.0.0RC on 17th of Dec” http://t.co/ejfBGcQTGx
— Daisuke Kobayashi (@d1ce_) December 16, 2014
ということで、ついに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 で指定することができます。時間があれば別の機会に。


コメント
数時間前に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