HBase徹底入門

@さんからHBase徹底入門を献本いただきました。ありがとうございます。

まだちゃんと読んでない状態ですが(汗、あんまり時間あけるのも良くないので紹介エントリを書きます。

HBase徹底入門 Hadoopクラスタによる高速データベースの実現

HBase徹底入門 Hadoopクラスタによる高速データベースの実現

目次はこんな感じになっております。

PART 1:HBaseとは
CHAPTER 1:HBaseと分散データベース
CHAPTER 2:HBaseの基礎知識
CHAPTER 3:導入とアプリケーション作成の基本
PART 2:アプリケーション開発
CHAPTER 4:Java APIの基礎
CHAPTER 5:HBaseの一歩踏み込んだ使い方
CHAPTER 6:スキーマ設計
CHAPTER 7:HBaseを用いたアプリケーション例
PART 3:クラスタの構築と運用
CHAPTER 8:クラスタの設計
CHAPTER 9:クラスタの構築
CHAPTER 10:管理オペレーションの基礎
CHAPTER 11:発展的な管理オペレーション
CHAPTER 12:クラスタのモニタリング
付録

今まではHBaseの書籍といったら事実上馬本一択だったと思うので、選択肢が増えたのは良いことです。それに対象のバージョンも0.98と新しいですしね。

PART 1はイントロ的なもので、PART 2でHBaseを用いたアプリケーション開発について述べられています。
特にCHAPTER 6のスキーマ設計なんかはこの本の特長的な部分だと思います。6.3.1の「クエリを中心にデータを設計する」はRDBと違う大事なポイントを解説していてとても良いと思います。

PART 3はCloudera Managerを用いたクラスタの構築、運用手法が述べられているので、これから or すでにCloudera Managerを使ってHBaseを構築、運用する人にとって大きな助けになると思います。

付録はコプロセッサやバルクロードといった僕が使ったことがあるものも書いてありますね。


以上、で終わりにすると薄い気がするので、僕のHBase体験とHBaseに対する考えを書いておきます。

コンテキストを明らかにすると僕は現在HBaseを使っていません。使っていたのは約1年前まででバージョンは0.94系なので本書のバージョン0.98と比べると古いですね。namespaceとかスナップショットとか0.94には無かったです。用途としてはサービス用ではなく分析用に使ってました。

リージョンが不整合になったり、GCがらみでregionserverがダウンしたりとHBaseの運用は結構大変だったです。大変だったのはデータ量が多かったせいもあると思います。

そういう経験があるのでHBaseに対して僕は割とネガティブですが、それでもそれが必要とされるケースがあることは理解しています。

例えばGoogle検索のように大量のデータを瞬時に検索するにはフィットすると思います。TBクラスのデータに対して1秒以内に検索したいとかそういうケースですね。HBaseは圧倒的な性能を持っていると思いますが、そのリターンを得るために多くのコストを払っているというのが僕の見解です。

コストという言い方が悪ければ、特化した作りになっているので汎用的に使うには向いてないと思います。

本書ではキー設計について詳しく説明されていますが、どういうクエリを投げるかを事前に検討してそれにフィットするようにキーを設計する必要があります。例えばユーザIDで検索することを前提にrow keyを作っていれば、ルームIDで検索することは出来ません。ルームIDで検索するためにはそれを前提としてrow keyを作る必要があります。テーブルを中心に設計するRDBであればそのような必要はありません。

またデータもバイナリ形式で格納されhbase shellからgetとかscanとかlowレベルのコマンドでしか参照することができません。

RDBならSQLをちょろっと書けば簡単に参照できるし、MySQL Workbenchのような周辺ツールも充実しています。

実はHBaseにはPhoenixというSQLでデータを検索できるツールがあるのですが、これはHBaseのコプロセッサを前提に実装されています。ですが、コプロセッサの安定性には不安があるというのが僕の1年以上前の経験からくる結論です。またPhoenixはまだ安定していないという話も聞いているのでまだ使うには微妙なんじゃないかと思ってます。

なのでユーザ情報のようなマスターデータをHBaseに格納するのは向いてないんじゃないかなと思ってます。

あとHBaseとHiveの連携も1年前はあんまりスムーズにいかなかったんですよね。

と、HBaseに対してネガティブなことを書きましたが、必要性は理解出来るので、本当に必要な時に最終兵器として使うのが良いと思います。そのような時に本書が助けになるでしょう。