HBase勉強会復習で挙がった質問について

先日11/5に行われた勉強会GLT vol.21 & HBase勉強会お疲れさまでした - tragicomedyでのHBaseについての質問の件。
同じColumn Familyのデータは物理的に近い場所に格納されることと、HRegionではデータをソートして格納しているが、そのこととどう関連しているのか?という疑問について調べたメモ。

Amazon CAPTCHAにもあるように、

Physically, all column family members are stored together on the filesystem.

また、Hbase/HbaseArchitecture - Hadoop Wikiにも

HBase stores column families physically close on disk, so the items in a given column family should have roughly the same read/write characteristics and contain similar data.

というのと、

To an application, a table appears to be a list of tuples sorted by row key ascending, column name ascending and timestamp descending. Physically, tables are broken up into row ranges called regions (equivalent Bigtable term is tablet).
Each row range contains rows from start-key (inclusive) to end-key (exclusive).
A set of regions, sorted appropriately, forms an entire table.
Unlike Bigtable which identifies a row range by the table name and end-key, HBase identifies a row range by the table name and start-key.

Each column family in a region is managed by an HStore.
Each HStore may have one or more MapFiles (a Hadoop HDFS file type) that is very similar to a Google SSTable.
Like SSTables, MapFiles are immutable once closed. MapFiles are stored in the Hadoop HDFS.
Other details are the same, except:

* MapFiles cannot currently be mapped into memory.
* MapFiles maintain the sparse index in a separate file rather than at the end of the file as SSTable does.
* HBase extends MapFile so that a bloom filter can be employed to enhance negative lookup performance. The hash function employed is one developed by Bob Jenkins.


Lineland: HBase Architecture 101 - Storageにあるように、

When the HRegion is "opened" it sets up a Store instance for each HColumnFamily for every table as defined by the user beforehand. Each of the Store instances can in turn have one or more StoreFile instances, which are lightweight wrappers around the actual storage file called HFile.

なことが整理できていなかった。
テーブルを分割したHRegionではrowキーでソートされている、で、HRegion内でStore(HStore)にcolumn familyごとに格納されている。
HBase shellから describe 'table_name'したとき、以下のように出力されるが、

{NAME => 'docs', FAMILIES => [{NAME => 'cache', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'contents', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, ...

この BLOCKSIZE は HStore をさらに分割した HFile のサイズの模様。もうちょっと調べてみる。つづく

GLT vol.21 & HBase勉強会お疲れさまでした

11/5(木)はAIP cafeにて、19:00よりhttp://wiki.somethingnew2.com/lt/index.php?Events%2F2009%2F11
21:00よりHBase勉強会(JRuby on Rails with HBase)をやりました。参加していただいた皆様、AIP cafe関係者の皆様ありがとうございました。
さて、GLTでは東京側から「中学の同級生がいるみたいですよー」との声がかかる。ustream.tvごしに再会。次回はテーマにもよるが、福岡会場からも発表できるよう、してみようか。
HBase勉強会はRubyBusinessCommons(http://rubybizcommons.blogspot.com/)で10/31(土)にやった内容を再びやりました。
AIP cafeのほどよい広さと、少数(5名)での勉強会ということで、解説->質問->議論->発見のプロセスがスムーズにいった。参加者全員の満足度が高かったのではないかと思う。こういうプロセスを経ることが、新しいものが生まれる契機になるのではないか、と感じました。

11/5 21:00からHBase勉強会ふたたび

10/30にRubyBusinessCommonsのHBase勉強会を行いました。急ですが、もう一回やります。土曜日参加できなかった方、復習したい方、AIP cafeを覗いてみたい方、どなたでも参加できますので、以下からお申し込みください。
HBase勉強会(RubyBusinessCommons) : ATND

日時:11月5日(木) 21:00-23:00
場所:AIP cafe

GenesisLightningTalks後に行います。併せてご参加いただけるとうれしいです。
http://wiki.somethingnew2.com/lt/index.php?Events%2F2009%2F11

11/5 19:00からGLTvol.21です

今月のお題は「IT禁止」です。今回も東京とustream.tvで中継しながらLTを行います。
http://wiki.somethingnew2.com/lt/index.php?Events%2F2009%2F11
日時:11月5日(木) 19:00-21:00
開場は例のごとく、AIP cafeです。
http://maps.google.co.jp/maps/ms?f=q&hl=ja&geocode=&ie=UTF8&msa=0&msid=111585370844191046293.00044f389f25175eb1bf6&ll=33.587851,130.395505&spn=0.001267,0.002301&z=19
Google Mapでは1Fがローソンになってますが、今はなきローソンです。居酒屋に変わってます。なのでおまちがいなく。

イケテルクラウド勉強会、HBase編お疲れさまでした

昨日、10/31はRuby Business CommonsのHBase勉強会、40名以上の方に参加いただきありがとうございました。勉強会を通して、参加者の方々にも実際にプログラミングしていただいたことで、Column Orientedなイメージを掴んでいただけたのではと思う。僕が担当した「JRuby on Rails with HBase」ですが、予めRailsのアプリ+HBaseにアクセスするためのライブラリを用意し、HBaseにもテーブル作成済みの状態から、参加者の方にRailsのmodelクラスの実装を行ってもらった。時間の都合で、急ぎ足になり申し訳なかったです。色々反省点ありで、11/5のGLT後に補習をやろうかとも考えている。あとは今回、HBase編ということで、今後はROMAやTokyoCabinetへと続くだろうとのことも予告されたので、お楽しみに!

追記

Railsアプリのデザインに今回は「Web app theme」を使いました。いつも勉強会コンテンツのデザインが疎かになりがちでしたが、おかげでそれなりのものに見えたのではないでしょうか。
http://pilu.github.com/web-app-theme/index.html

10/31(土)は大規模分散データベース「HBase」イケテル・クラウド勉強会です

柿のおいしい季節になりました。実家の裏庭にはたくさん実がなっていたので、先週末収穫しました。緑茶とともに頂きましたが、色合い的にも緑と柿色はいい組み合わせだったと思います。ちなみに、裏庭には唐辛子もなっていたのですが、緑から赤に変わるぐらいのものが見た目にはとてもきれいです。
さて、本題です。既にナカオさんによる告知はありますが(大規模分散データベース「hBase」イケテル・クラウド勉強会 - ナカオ日記−フリーランスの轍)、久々にぼくもブログ書いてみようということで、ご案内です。直前ではありますが。詳しくは、ナカオさんのブログをご参照ください。
今回はHBase(http://hadoop.apache.org/hbase/)をやってみます。いわゆるKVS(Key-Value Store)とよばれるデータベース、Not-Relationalなデータベースです。column-oriented(列指向)データベースとも言われているものです。大規模分散環境で使われたりしているものです。いろいろ用語はありますが、まずはみんなで触ってみよう、体感することで、イメージを掴んでもらえたらと思います。
また、HBaseはHadoopと同様にJavaAPIを使うことができます。そこで、RBCではJRubyをつかってHBaseの操作をしてみよう!ということで、簡易なライブラリを書いてみてます。RailsアプリのDBをHBaseにして、CRUD操作してみる、とかいうこともやります。
先にも書きましたが、まずはイメージを掴んでもらう、そしてKVSをどのように使うのが素敵なのかをみんなで考える、議論する場作りができれば、と思っております。ご都合つく方は是非、お越し下さい。福岡はももちでの開催になります。

1.日時

 2009年10月31日(土)13時〜18時

(「Rubyプログラミング基礎」は、10時〜12時です。)

2.場所

 株式会社イーシー・ワン 九州事業部

 福岡市早良区百道浜2−1−22 SRP8階

 tel. 092-985-0093

8/9(sun)はGenesis Lightning Talks vol.18ですよ

7月はRuby会議やら、RBCの2周年記念イベントでSkipさせていただいたのですが、今月はやりますよ。
http://wiki.somethingnew2.com/lt/index.php?Events%2F2009%2F08
いつもは平日開催ですが、今回は日曜に開催ですよ。
Genesis Lightning Talks vol.18@Fukuoka - ナカオ日記−フリーランスの轍
いつもアナウンスありがとうございます。
# 日時

* 2009年8月9日(日) 18:30-21:30

# 参加費

* 無料(各自テキトーに持込み)

# 場所

* AIPカフェ
* 福岡市 中央区 大名 1丁目14-28 第一松村ビル[紺屋2023project] 3階 302

どなたでも、参加お待ちしております。