「Hadoop Hacks」を著者陣のご高配を得てオライリー・ジャパンから献本いただきました。ありがとうございます。
で、ざっと読んだ(自分でやってないところは眺めた程度)ので感想をざらっと。
なんというか、さすがにちょっと扱う内容が広過ぎる&プログラミングを避けられない箇所が多過ぎる感はあって、苦労したんだろうなー、という気がする。読んで「ああこれは役に立つよね」というのがだいぶ少なくてちょっと残念。100行単位でコードを書かないといけない内容をこういう本で「hack」といって紹介するのはやっぱりちょっときびしいなー。
とはいえ、第1章「システム構築/運用Hacks」はHadoopを使っているすべての人にお勧めできる、と思う。実際にHadoopクラスタを構築・設定する上でとりあえず最初にやっとけ的なことがちゃんと順番に書いてあるので、まずここを読んどけばいい。自分も次に(CDH4で?)クラスタ構築しなおすときに舐め回すように読んで設定するつもり。こういうのが書かれているのを本という形で手元に置いておけるのは大きい。
2章「アプリケーション開発Hacks」および4章「Hive Hacks」はひととおり読んでみたところ「これは知らなかったな」的なものもいくつか。とはいえHadoopクラスタ/ジョブの運用方法が違いすぎて残念ながら(知ると面白い知識だけど)直接の参考にできるものがほとんどなかった。同じHadoop/Hiveを使っていながらここまで違うか、という感想自体の方が参考になるというか、ちょっと面白い。
他の章も含めて全体的に「役立つものがある可能性がある、ので手元に置いとくとよい。Hadoop関連で新しいことをやるときはこの本の目次をぱらぱらめくってみるべし」みたいな感じ。Hacks系はだいたいそんなだけど、Hadoopまわりは作業粒度が大きい分、そのへんの扱いが微妙な気はする*1。
とはいえ「Hive Hacks」の「クエリの高速化」なんかはHiveを巨大RDBMS的に使いたい人には良さそうなことがいろいろ書いてあったので、著者陣と各コンポーネントの使いかたががっちりハマったときにはすごく有用なんだろうな、という気がする。
雑感
Hadoop Hacksというか、Hadoop全体的に思うことなんだけど、設定(プロパティ)をこう変えてチューニングしろとか、これをこう変えてクラスタを再起動しろとか、Hive CLIでこれこれこのように打っておけとか、そういうのが多いのがたいへん気になる。
普通にオンラインでデータ処理をやろうとすると当然CLIでクエリを打つなんてメンテナンスとかでしかやらないようになり、基本的にはサーバを介してアプリケーションがクエリなりジョブなりを発行する*2ことになると思う。んだけど、Hadoopまわりを見ているとそういう構造をとっていることが前提な話がぜんぜんなくて、やれプロパティを変えて再起動しろ、環境変数を変えて再起動しろという話が多いのでだいぶ面喰らってしまう。
できるか!
たとえば、いま手元で困ってるのはHiveクエリを実行したとき、そのクエリに関連するMapReduceジョブの状況がどうなったのかを知りたい(killったりもしたい)、んだけどそういう方法がないなー、とかそういう話。そりゃJobTrackerのWebコンソール見ればわかるんだけど、そういうことじゃなくてさあ、みたいな。
そろそろ、どのくらい「再起動せずに調整するか」「再起動せずに移行するか*3」「外部システムとどう連携するか」みたいなことに注目して本を書く人が出てきてもいいんじゃないかなーと思います。というか、そういう情報が欲しいなあ。