tagomorisのメモ置き場 RSSフィード

2012-04-26

「Hadoop Hacks」読んだ

Hadoop Hacks」を著者陣のご高配を得てオライリー・ジャパンから献本いただきました。ありがとうございます。

Hadoop Hacks ―プロフェッショナルが使う実践テクニック
中野 猛 山下 真一 猿田 浩輔 上新 卓也 小林 隆
オライリージャパン
売り上げランキング: 2139

で、ざっと読んだ(自分でやってないところは眺めた程度)ので感想をざらっと。

なんというか、さすがにちょっと扱う内容が広過ぎる&プログラミングを避けられない箇所が多過ぎる感はあって、苦労したんだろうなー、という気がする。読んで「ああこれは役に立つよね」というのがだいぶ少なくてちょっと残念。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」「外部システムとどう連携するか」みたいなことに注目して本を書く人が出てきてもいいんじゃないかなーと思います。というか、そういう情報が欲しいなあ。

*1:そういう意味では Hacks シリーズじゃなくて、なんかもうちょっと違う本にできたんじゃないの、という気もするけど……どういう本がいいのかはどうにもこうにも

*2:HiveであればHiveServerを介したクエリの実行

*3:データの置き場とか、Hadoopのバージョンとか

shiumachishiumachi 2012/04/26 17:09 > 普通にオンラインでデータ処理をやろうとすると当然CLIでクエリを打つなんてメンテナンスとかでしかやらないようになり、基本的にはサーバを介してアプリケーションがクエリなりジョブなりを発行する*2ことになると思う。んだけど、Hadoopまわりを見ているとそういう構造をとっていることが前提な話がぜんぜんなくて、やれプロパティを変えて再起動しろ、環境変数を変えて再起動しろという話が多いのでだいぶ面喰らってしまう。
そこまで高度なことするなら現時点では全部 Java でアプリケーション書くしかないと思います。
私はあんましどういうことしたいのか理解していないので、どういう点が問題なのかもう少し詳しく書いてもらえるとうれしいです。
可能なものはフィードバックかけます。
ちなみに HiveServer はあくまで FB が自社のプロキシ用途に開発したものなので、一般の人がイメージするサーバとは全く異なります。多分そのうち作り直されるか別のものが開発されると思います

tamtam180tamtam180 2012/04/26 20:37 HiveServer2というものがこの前Issueとしてあがりました。
https://issues.apache.org/jira/browse/HIVE-2935
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Thrift+API

shiumachishiumachi 2012/04/26 21:07 あー、それですそれです>HIVE-2935
お客様からの要望が最も多いとこの一つなんですよね hiveserver。
ラベルついてることから、そのうちどばっとJIRAがオープンすると思います

tagomoristagomoris 2012/04/26 21:30 自分の感覚だと、HiveServer自体がどうこういうより、JobTrackerに直接アクセスできるWeb API(ちょうどwebhdfsに対応するようなもの)があればいいのになー、という感じですね。
「全部Javaで書くしかない」にすぐ落ちてしまうのが嫌なので、Hadoopの各コンポーネントがAPIをオープンにした上で、疎結合な形で外部からアクセスできるようになれば、やれることが色々広がるのになあ、という話でした。

まあそれはともかく「たとえば、いま手元で〜」のくだりで言いたかったのは、Hadoopクラスタをプログラマブルに外部からコントロールするうまい仕組みとかの話がどっかに無いもんかな、「Javaで全部書け」って普通ちょっと無いよね、みたいな感覚の話でした。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tagomoris/20120426/1335425667
リンク元