ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

HBase0.89.20100726の変更点

2010-08-15 21:16:32 | PG(NoSQL)

HBase0.89.20100726の変更点を調査。

プログラムを書く際に関係しそうなのは、KeyValueにメソッドが増えたのと、新しいフィルター(TimestampsFilter)が追加になったことくらいかな?
HBaseConfigurationのコンストラクターを呼び出した際の警告メッセージの訂正なんて、たぶん関係ないだろうしなw

さて次は…
Cassandra0.7.0 beta1が出たって?
Hadoopも久しぶりにバージョンアップ。0-21.0-candidate-1
Cascadingもいつの間にか1.1.2が出てる…。

…やってられるかぁ!(苦笑)
いいやベータ版は。正式版が出るまで保留しよう…。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseでWordCountの為のテーブル設計

2010-08-15 06:27:21 | PG(NoSQL)

こないだ、HBaseのテーブルを読み込んで単語数をカウントするWordCountを作ってみたが、これは出力先を(HadoopそのもののWordCountと同じく)ファイルにしていた。
何故かと言うと、HBaseのテーブルに出力しようと思ったら、どういうテーブルレイアウトにすればいいか考えないといけないから。

という訳で、WordCountの出力結果を保持するテーブルはどういうレイアウトにすればいいか、いくつか案を考えてみた
実際に分散環境で試している訳ではないので、どれがいいのかいまいち自信が持てないけれども(苦笑)

考えている中で気になったのは、HBaseのテーブルレイアウト(テーブル定義・設計書)って、どう書けばいいのか、ということ。
RDBなら論理項目名・物理項目名・データ型・制約といった辺りを表形式できれいに書くことが出来るが、HBaseではどう書けば分かりやすいだろう?
HBaseの場合、qualifier名は固定で決めておくことも出来るし、動的に入れることも出来るから難しい。
キー値だって複数の意味の値の複合になる場合が多そうだし。
データ型も、物理的にはバイナリー(バイト列)しか無いとしても、アプリケーションでどう使うのかは定義しておかないといけないし。

データのサンプルはCassandraの書き方でいいと思うんだけどな。
つまり、(テーブル名・)キー・列ファミリー名・qualifier・値を列とした表にする。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hadoop Hack Night 2の感想

2010-08-04 23:24:18 | PG(NoSQL)

Hadoop Hack Night 2に行ってきたので、その感想など。
(今どきノートに手書きでメモしてるもんだから、汚くて読めないので まとめは出来ません(なんて無意味な!(爆)))

(のっけから「Hadoop使ったことある人~?」って聞かれると、手を挙げていいのかどうか迷う…試しに擬似分散環境を動かしているだけだから…)


ヤフーの吉田さんて、「Hadoopで、かんたん分散処理」を書いた人だそうで。
Hadoopという言葉を初めて聞いてネットで調べていた頃、この記事を見てHadoopに衝撃と本格的な興味を持ったんだよな~。
(自分がなぜHadoopに興味を持ったのかについては、いずれ書きたいネタのひとつ。まぁ誰の役に立つわけでもないだろうけど(苦笑))

ABYSSでは、開発環境としてEclipseでMockitoとJUnit・MRUnitを使っているらしい。でもDistributed Cacheはテストできないから、Eclipse Pluginを使っているんだとか。
実際にJavaで作ろうとしたら避けて通れないところだから、今後の参考になりそうだ。

Hadoop with Securityでは、Kerberos認証が槍玉に上がっていた。自分はその辺り全然知らないんだが、古いものらしい。
そもそも企業内部で使うならこういったセキュリティーはそんなに重要かなぁと思っていたら、同様の質問があった。
クラスターは大規模なほど効率がいい→複数企業で共同で使えばいい→セキュリティーが必要
これは納得。
あと、ユーザー認証できればユーザー毎の課金が出来るというのも、副次的な効果として確かに有用かも。

それから、セキュリティーにどう関連しているのか分からないが、Oozieの名前が出てきた。(ウージーと呼ばれていた)
一回、どうやって使うのかデモを見てみたいなー。GUIでフローが描けるわけじゃないよね?


リッテルの清田さんからは、HadoopとRDBMSの比較など。
RDBMSと比較するならKVSじゃないの?と思ったけど、そういう話が出るということは、最近じゃそういう比較をされだしている?

Hadoopの使い方の例として、ストレージ代わりにHDFSを使用しているとか。ノードを追加すれば容量が増やせる。
自分は主にバッチフレームワークとして考えていたので、単純にそういう使い方も出来るんだなーと、ちょっと目からウロコ。
でもそういえば、ストレージとして使う場合の転送速度とかについては話題が出なかったなぁ…。HDFSって分散させるし複製作るし、ちょっと遅そうな気もするけど。

これは話題に挙がっていたけれども、個人で複数のPCを用意するとか難しいので、(特に速度面を)自分で試せないところが難点。なので実際に使ってみてどうかという話はとても貴重。

RDBMSとKVS・Hadoopの使い分けの図も分かりやすかった。自分も使うならそういうイメージかなーと思う。
(インフラのブラックボックス・複雑さの説明として、水道インフラの例も分かりやすかった)

ところで、CAP定理を「証明された」と言い切っていたな(笑)
これは「証明されていないからCAP原理だ」と言っている人もいて、常々ちょっと疑問だったんだが、どちらが正しいのやら^^;
まぁ、「証明された」と言っている側が、その根拠となる論文でも示せばケリが着くけどw

それと、ハードウェア構成について一例。QuadCore CPUのDataNode 3台で、数十GBを20分で処理。
…ハードウェアにも詳しくないのでよく分からないけど、3台でも意外といけるということかな?
別の質問には、20万円くらいのPCでも…という回答。値段よりはスペックを質問した方がいいのかも。

Hadoopの使途としては、やはりログとか検索インデックス作成や分析の用途が多いようだ。まぁYahooとか図書館ではね(笑)
自分はいわゆる基幹業務に使えないかと考えているんだけど、どうなんだろうなぁ。

あと、「コモディティとは言っても」(コモディティ神話の打破)がいい質問だった。
自分も他人に説明するときは「安いPCサーバーをたくさん並べて…」とか説明しそうだし(汗)
コモディティの意味は象本にも書いてあるそうだが…p.44のことかな。
「システムが安く作れる」ということよりも、少ない台数で始めて後から追加できる、という説明の方が重要そうだね。同感。


最後に、Hadoopとは関係ないんだけど。Yahooの建物なんて初めて入ったよ!
入館証の二次元バーコードを読ませないとゲートを出入りできないのな。各階全てにゲートがあるようだった。
1階から出ようとして出られず2階から出たんだけど、エスカレーターを降りてる途中で1階の出ようとした場所が見えて、なんだかレベルの低いカードしか持ってなくて遠回りせざるをえない序盤のメタルギアみたいな気分だったw

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBase Filter

2010-08-01 03:41:32 | PG(NoSQL)

(途中でCassandraの調査が入っちゃったけど、)予定通りにHBaseFilter系クラスについてメモ。

Filterは種類がけっこうあるので、分かりやすいものから何に使うんだか分からないものまで様々^^;
でもまぁ、一通り把握できたような気はする。

ColumnCountGetFilterとか、ハマったなぁ。カラム数を指定できる割には、Scanされるキーの範囲によって、取れる個数がまちまち…。
そもそも名前も「Getが付いてるなんて変」だと思っていたら、どうやらScanクラスでなくGetクラスで使うフィルターだから「Get」が付いているような気がする。つまり「カラムの個数を指定する、Getで使うフィルター」という名前なわけだ。(だからScanで使っちゃダメ)

あと、Filterの各メソッドがどういう順序で呼ばれているかも調べてみた。
検索を終了する条件・方法については色々と考慮されているが、それまでの間はノード内の全データ(KeyValue)を全てチェックしていくことになると思われるので、あまり効率がいいとは言えないかも。
ScanクラスのstartRowでなるべく検索範囲を絞った方がいいということか。
あぁ、そういえばScanでFilterを指定するコンストラクターは一緒にstartRowを指定するようになっている(Filterのみを指定するコンストラクターは無い)のは、startRowを必ず入れさせようという魂胆なのかも?
それじゃ、startRowにHConstants.EMPTY_START_ROWを指定するのは、(本当に全体を探索したいのでない限り、)良くないなぁ。

自作のフィルターも作ろうと思えば作れそうだが、自作クラスをHBaseのHMasterが稼動している全ノードに置かないといけないので、頻繁に作成・修正するのは大変だ…。
だからFilterListとかの、他のフィルターをラップするクラスが用意されているんだろう。
この手のクラスは、組み合わせると実行効率が悪くなりそうなのであまり好きじゃないんだけど(苦笑)

自作する際に頭が混乱するのは、filterメソッドがtrueを返すと「フィルターされる」、つまり返されるデータから除外されること。
検索条件を指定する際の考え方は、抽出したい条件(返して欲しいデータ)を指定することだから、全く逆だ^^;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Cassandra0.6.4

2010-07-31 16:42:00 | PG(NoSQL)

Apache Cassandraの0.6.4が出たので、またちょっとだけ確認

一番大きいのは、やはりHadoop(Map/Reduce)で二重カウントされてしまうバグの修正(CASSANDRA-1024)だろう!
ようやく修正された~^^(と言っても特に使う予定があるわけでもないのだが(爆))

cassandra-cli.batも変更があるからCASSANDRA_HOMEの部分が修正されたのかなーと思ったら、こちらは環境変数を使う際のダブルクォーテーションで囲むのが無くなったりしただけで、思ってるのと違った(苦笑)

それから、libからavroのjarファイルが無くなっているのは、まだ対応していないのにjarだけあってもしょうがないから削除したということだろうか。

あとはCHANGE.txtを見ると、UTF8を扱うロジックが変わったとかmultigetとかいう単語に興味をひかれるが、英語がよく分からない(snitchって何だ?スナッチャーか?)ので、とりあえず無視(爆)

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする