Hadoop を使うべき場合・使うべきでない場合 - 武蔵野日記
あら、どうもどうも。こういう引用はうれしいよね =)
#ちなみに、私はHadoopについてただの1滴も勉強したことはないので間違ってたら突っ込んでください。知っているのは、それが「MapReduceのオープンソースJava実装」といったところ。
Hadoopを使ってる人達の熱狂に「えー」って思うのには完全に同意する。こまっちの人の説明には何一つ修正したいポイントはない。追加したいポイントはある。ここからは、私らの領域なので書いとくといいかな。
昨日飲み会で「Hadoopってなんでやねん」って話が実は出て、その人は「Javaで書いてるとか相性悪いにもほどがある」って主張をしてた。これにも完全に同意だ。
あれがOcamlとかHaskellで書かれていてみんなが使ってるんだったら、私は「やばい!いまの世の中は私が思ったより進歩してる!」と思ってたと思う。
元々Hadoopの背後にあるMapReduceってのは、Map過程でもReduce過程でもその下にあるシステムに対する副作用は基本的に認めず、与えられたデータを加工して超重要なデータを抽出するというのが基礎的なパラダイムだから、その二つの過程で副作用に対してフレンドリーな言語を使う意義というのはない。
でもC系の言語を使うのは筋にかなっている。速いのは正義だからだ。
異常に強い型付け(なぜかへんかんできない)と型推論などでマゾヒズムをくすぐる言語を使うのも実は筋にかなっている。(それらを走らせるプラットフォームまでそれで書けって話じゃなくて、あくまでスクリプティング的な意味でなんだけど。)単に最適化フレンドリーだから。現実の世界のカオスに対処する便利ライブラリなんてのは必要ないし、そういう面での言語サポートも雑でいい。そもそも、MapReduceってのはジョエルも言ってる用に関数型コミュニティの概念なんだZE
JavaでMapReduce的コンセプトを実装に移すデメリットは、Javaが副作用系の処理に対してフレンドリーに設計されすぎているのが大きい。例えば、MapReduceにsynchronizedは必要ない。実際は多分使わないんだけど、コンパイラが扱うバイトコードレベルではそういうのを意識しなくてはならず、Hadoopが最終的に行き着くのは simplified Java とかそういう新しい言語の構築になり、そうなったら学習曲線が跳ね上がるようになり、最後はコミュニティ分裂を起こすだろう。
Hadoopコミュニティにいても頭がいいだろうって奴はたぶんいる。Javaというアホを上にのっけてなおMapReduceの本来のメリットを得るために頭を悩ませる下回りを実装する人々は、それに当てはまるだろう。Hadoop走らせて「わはー」って人は、ちょっと頭冷やそうか (CV: 田村ゆかり)
-
-
- -
-
でもさー。一方でこういう風に考えざるを得ない部分もあるんだと思う。
あれがOcamlとかHaskellで書かれてても、コミュニティ盛り上がらないじゃん。んで、コミュニティが盛り上がって初めて「これさ、使ってて気づくかも知んないけど、筋悪いよね」って、人々の知的水準をうまく引き上げるっていうプランを立ち上げられるわけじゃない。
揺籃期にHadoopな状況があるのは仕方ないし、オープンソースのコミュニティの力学ってのは、必須、多少は「アホ」じゃないとやってられない。これはそこに参加してる人、そのコミュニティを作った人が悪いんじゃないし、そもそも「アホ」が悪い意味ですらない。
あまり最初から良く考えられすぎている設計は、単に育たないんだ。
人が集まってなんぼで、そういう段階で(こまっちの人が書いてるような)本末転倒な状況(大規模データを大規模環境で動かすためのものなのになんでPC一台1GBのデータでやってんのさ!)が起きたって、仕方ないんだよ。だってほとんどの人は、大規模データと大規模環境の世界の本当の地獄を見てない。んで、そいつらに最初に地獄を見せたら、ほとんどの人は死んじゃうよ。私も死にかけたから分かるんだ。
ここでPFIのおかのはらの人の話を引き合いに出させてもらう。彼はこういう話をしたことがある。「オーダー云々じゃなくて、何十TBという世界で実装書いてると、命令一つ削ると何十T命令分速くなるんですよ。だから設計の綺麗さとかを優先してる場合じゃない」なんて地獄だべいべー。
Hadoopに興味を持ってる人がいてはてブで持ち上がるのもある意味どうしようもない。というかですね、はてブカウントがプログラミング系ネタで増える場合ってのはですね、そいつら別に勉強したいからはてブしてるわけじゃないと思うんですよ。あれははてなスターがなかった時代に生まれた「いいね!」なんです。雑貨ーバーグ(Facebookの創始者)よりも先にはてなはGoodボタンを実装していたんだよ!(なんだってー
ここでですね「MPIの実装についての考察」ってエントリがあってですね、興味があろうがなかろうが、はてブつけられる人がどんだけいるかって話で。
-
-
- -
-
ま、話をもどそう。いま本当に話したいのは、コミュニティ力学のことじゃないよね。それは私がやりたいことだけど、多分この議論の中心はそこじゃない。
Hadoopが盛り上がってるのは業務系コンサルの陰謀である説を提唱する(なんだってー
……半分は冗談だよ。半分はね。
-
-
- -
-
Hadoopに関心が行く最大の理由は「怖いから」だろう。
最近のネットの大企業は、何故かあまりにも巨大な力を手にしていて、でもなんでそれがうまく動いているかについてはあんまり細かく市井の人に説明してない。それは仕方ないさ。MBAの教科書にも「コア・コンピタンスに関わる部分だけは相手に奪われないようにしろ」ってのが、書いてあるはずだ。
でもそうすると、普通の人は「ビッグブラザー!」って叫ぶんだ。で、なんとかして、これを知りたくなる。
ビッグブラザーはいるのか?
それが、Hadoopの本質だと思う。
#注意。大規模な企業がビッグブラザーであるとは言ってない。MBAの教科書通りにお仕事をすると、そう見えるのが避けられないってことだよ。この話に関して言えば、誰も悪いことをしたいんじゃないんだ。そう、それは悲しいすれ違い (CV: だれでもいいよ。若本とかね)
-
-
- -
-
あー、まずい。これ、結論が分からない(ぉぃ
んーと、でもちょっとは結論めいたことは書いといた方がいいかな。
まず、こまっちの人の気持はすっごくわかる。でも「由々しき自体」というのはちょっと言い過ぎだと思う。そして、何か困ったちゃんになりそうなケースをサルベージするのが、こまっちの人の役目だとも思う。ええとあと、細かいんですけど「id:mowamowa」「@amedama」は正しいんですけど「@mowamowa」は文法エラーです(笑
Hadoopユーザは、人気があるという理由でHadoopを遊ぶのはやめた方がよい。少なくとも、上に書いた話にうなずけも反論も出来ず「???」ってなってる人は、とりあえず深呼吸を3回。ラジオ体操第四!
アマゾンに一言。興味はあるんだけどHadoopの本をおすすめ1位にするのはやめてくれ。「その本は脇に置いておきたい」ってチェックが欲しい!
-
-
- -
-
そういえば昨日の飲み会で「PFIの太田の人がHadoop大好き」って話があって、個人的には彼にこの話題について語ってもらいたい。ちなみに彼は一応同じ研究室の後輩。一緒にいた時期はないんだけど、彼の頭の良さで、大規模計算系を売り込むだけのスケール感を売りにしているわけではないPFIのCTOがHadoopを推す理由が分からない。
多分「単におもしろいからですよー」って話なんだと思うけどね。PFIは研究機関的な色彩もあるから。そこがなかったら、あそこの株は仮に上場したら空売りする。