クラウドコンピューティングにまつわる話をつれづれなるままに。。。

2009年5月26日火曜日

Javaのネットワーク性能ベンチマーク

Javaのネットワーク性能を測るベンチマークが欲しかったのだが、探してもすぐに見つからなかったので、簡単なのを書いてみた。というのもHadoopはJavaで実装されているが、通信性能がJavaが原因で律速されないか確認したかったから。

実験環境はXeon/3.0GHz dual搭載のPC 2台をGbEで接続したものである。OSはCentOS 5.3で、JDKは1.6.0_13。Iperfでは944 Mbps出ている。結論から言うと、Javaでも941 MbpsとCと遜色ない性能が得られた。

実験結果を下に示す。横軸はメッセージサイズ(writeサイズ)で、縦軸はグッドプット。きわめてリーズナブルな結果。



#ソースコードのコピペ方法がよくわからんな。(後で直す)

githubにソースコードを置いたので、こちらを参照してほしい。

2009年5月22日金曜日

羊の皮を被った狼

hyoshiokさんがクラウドについて書いていた。
クラウド時代の計算パラダイムがRDBMSが30年間研究開発していたACIDパラダイムからCAPパラダイムへ大きく舵を切ったという意味で面白い。ちょうどコンピュータアーキテクチャにおける、CISCパラダイムからRISCパラダイムへ変遷していったようなイメージと重なる。


CAP定理/BASEに関してはあちこちで書かれているのでここでは繰り返さないが、yohei-yさんのまとめが目に止まった。Eric Brewer教授は検索エンジン会社inktomiの創設者でもあるのだが、CAP定理/BASEの登場にはこのような背景があったのね。
AltaVista が DEC の Alpha サーバの性能を売りにした scale-up 的アプローチだったのに対し、inktomi は Scale-out 的アプローチを取ったのが(AltaVistaに対する)技術的な成功要因だったようだ。Brewer のスライドの写真を見ると、時期的にはどうやら Sun の UltraSparc II のクラスタを構築していたようだ。これはまさに僕がNAISTの自席で使っていたワークステーションだけれど、CPUが250MHzで640MBメモリを搭載していたと記憶している。
inktomiが取ったこのscale-out戦略ベースのアーキテクチャは今のWebの大規模分散システムの根源となるアーキテクチャとなっている。

クラウドは技術的に考えれば、並列分散コンピューティング技術である。その前に流行ったグリッドも同様で、技術的に両者を比較するのはあまり意味がないことのようにも思える。個人的には、クラウドの要素技術がデータセンタ(クラスタ)内の分散並列であるのに対して、グリッドは広域分散に寄っていというイメージを抱いているが、クラウドも広域分散にシフトするのは時間の問題だろう。

さて、並列分散というと、いわゆるHPC(ハイパフォーマンスコンピューティング)分野を思い浮かべる人がいるかもしれない。MPIとかOpenMPとかの世界で、(適切な喩えかわからないが)CAP定理/BASEではなくACID寄りの世界観を持つ。現時点でHPCユーザはクラウドなんて性能がでないから使えないと思っているだろうが、そんな前提はいつまで有効なのか実はわからない。HPCユーザは性能がでるのであれば、ベクトルマシンからPCクラスタ向けにコードを移植したように、クラウド向けに再チューニングしてくるだろう。余談だけど、MPIなんてそんなにスケールアウトしないでしょうと思ったら、RoadrunnerとかRangerといった何万コアの計算機で動いているという現実に驚く。

もちろんすべての問題がバカ並列(Embarrassingly Parallel)で解けるわけじゃない。一方、旧来のHPCは昔も今も(おそらく)将来もニッチな分野でなくならないだろう。興味があるのは、クラウドとHPCでおそらく独立に発展してきた技術が融合することで、何か新しい技術的発展や応用が生まれてくるんじゃないかということ。

バズワードだけど技術的に新しいことは何もないでしょうと思考停止してしまうのは危険で、たゆまぬ勉強が必要だよなと改めて思った。

P.S. しかしBloggerのエディタは性に合わない。やっぱりはてな日記のようなWiki記法がよいな。

2009年5月15日金曜日

RDBとキー・バリューストア

今までWebアプリのバックエンドには(特に疑問もなく、というかちょうどよい代替物がなかったからか)MySQLなどのリレーショナルデータベース(RDB)が使われてきた。クラウドの技術的なポイントは、いかにスケールアウト(サーバ台数を増やして性能を上げること)するシステムを構築するかにあると思うが、RDBを何千、何万台にスケールアウトするのは難しい。

そこで、Googleにしろ、Amazon、Microsoftにしろ、RDBのデータモデルを捨てて、よりスケールアウト性の高いキー・バリュー型のデータモデルを採用している。これらのシステムでは、SQLに近いが、joinができないなど機能が制限された問合せ言語を提供している。たいていの処理はこれらで困ることはなさそうだ(本当か?)。むしろ表構造よりも柔軟な分、使い勝手がよいかもしれない。

関連して、最近SIGMOD09で発表された、RDBとMapReduceの性能比較論文が、各所で話題になっていたらしい。原典を読んでないので、憶測で書くけど、クラウド(MapReduce)の利点はスループットよりもスケーラビリティにあるので、100台ぐらいの規模で速度比較をしてRDBに軍配が上がるのは全然不思議じゃないと思う。もっと台数規模の大きなベンチマーク比較を見てみたい。あと、Hadoopにもまだまだチューニングする余地が残っているはずだ。
メモ:分散高速データI/O(「クラウド大全」P.265)
  • memcached
  • GFS
  • BigTable
  • HDFS
  • HBase
  • Dynamo
  • Velocity
  • Coherence
  • ObjectGrid
  • JBoss Cache
  • repcached
  • Tokyo Tyrant/Tokyo Cabinet
  • Flare
  • ROMA

2009年5月12日火曜日

ユニマガとクラウド大全

昨日、クラウド関連の本を2冊買った。まずは今月号の(というか季刊だから今春と言えばよい?)ユニマガで、特集は「雲の向こうの未来 クラウドをつかむ」。クラウドの技術面を中心に80ページ強を割いている。キーバリューストア型の分散キャッシュとDHTあたりが面白そう。2冊目は「クラウド大全」。構成的にはユニマガとほぼ同じに見えるが、楽天など国内の大規模分散処理基盤の取り組みが紹介されている点に興味を引かれた。

読む順番はクラウド大全が先かな。ユニマガ特集の方は、導入が丸山先生の(わかったようなわからないような)ハイブローな技術的話題だし、全体的にページ数がある分、クラウド大全の方が丁寧に書かれている。一方でユニマガには、アカデミックな方が著者に名を連ねていることもあってか、技術的な深みでは勝っているかな。基本的にはどちらも各章が独立しているので、興味のあるところから読めばよいのだけど。

読んだ感想もぼちぼち書いていきたい。

2009年5月10日日曜日

はじめに

「Cloudy Days」とはあまり景気の良いタイトルじゃないけど、当面はクラウドコンピューティングにまつわる技術的な話題を中心にメモ程度の雑文を書いていく予定。

まずは、Hadoopからかな。