hadoop一人読書会ログ①

だいぶまえだけど、hadoop本を読んだときのつぶやきを書いときます。自分が忘れてることに愕然としつつ、ログのこしといてよかった感があるので。

Pro Hadoop

http://is.gd/3yjGo を読み始める。初っ端、ドキュメントなくてたいへんでした、みたいな話題 xxv
hdfsについてのjira 4686をあとで見る5:02 PM Sep 22nd SimplyTweetで
hdfsのname nodeは単一故障点らしいというのは聞いてたけど、本にビシッと書いてあるとは。使うやつがどうにかしとけってことですかね。 6p5:10 PM Sep 22nd SimplyTweetで
つるしの環境テストツールがある。ベンチマークもとれる 23p5:17 PM Sep 22nd SimplyTweetで
実行時のvmオプションはHADOOP_OPTに渡す 誤植っぽいけど24p5:21 PM Sep 22nd SimplyTweetで
複数のエンティティをinputにするmapreduceってできるのかな?input formatをどうにかすればいいだけって感じでもなさそうだし。。。5:45 PM Sep 22nd SimplyTweetで
reduceしないこともできるっぽい 51p5:51 PM Sep 22nd SimplyTweetで
map reduce baseを継承するサンプルって古くなかったっけ、とおもいつつ、map reduce baseがやってくれることは66p6:00 PM Sep 22nd SimplyTweetで
outputは別ファイルとかにパーティショニングできる 67p6:04 PM Sep 22nd SimplyTweetで
balancerを動かすとdatanodeのデータ容量をrebalanceしてくれる 73p6:12 PM Sep 22nd SimplyTweetで
dfs.data.dirはhadoop.tmp.dirのしたにあるのがデフォルトなので、テンポラリを消すとデータも消えてinteresting chaosなことになるようです 78p6:27 PM Sep 22nd SimplyTweetで
mapフェーズをノード内で並行処理させることもできる。multi threaded map runnnerにスレッド数を設定する 79p6:34 PM Sep 22nd SimplyTweetで
hadoop dfsadmin -reportすると他のノードがちゃんとみえてるかわかる 89p6:48 PM Sep 22nd SimplyTweetで
大規模なクラスタくみたいなら、64bit jvmとかでnamenodeにメモリをそれなりに割り当てないとだめ 123p7:18 PM Sep 22nd SimplyTweetで
namenodeは冗長化されてるけど、全滅したら、secondaryからデータを持ってきて手動復旧する 正確には124p7:22 PM Sep 22nd SimplyTweetで
jobshellがhadoopでmapredを動かすときのエントリポイント7:39 PM Sep 22nd SimplyTweetで
jarとかを各ノードに配置するための仕組みでdistributed cacheという仕組みがある。path通したりファイルをとったりできる 131p7:49 PM Sep 22nd SimplyTweetで
ここでなぜかspring登場 143p8:00 PM Sep 22nd SimplyTweetで
reduceフェーズで処理するデータを減らすためにcombinerというのが使える。シャッフルするまえのプチreduce的なもの 163p8:12 PM Sep 22nd SimplyTweetで
hadoopのチューニングパラメーターがやたら多い。oracle masterの勉強を思い出す。8:22 PM Sep 22nd SimplyTweetで
hadoopクラスタjmxで監視できる。gangliaって初めて聞いたけどみためも良さげ 193p8:24 PM Sep 22nd SimplyTweetで
mapreduceするvalueを別のmapreduceの結果とすることも出来る。chaining 257p8:36 PM Sep 22nd SimplyTweetで
データがソート済みとかいろんな前提付きでmapフェーズにreduceするとパフォーマンスが向上する。map side join 265p8:48 PM Sep 22nd SimplyTweetで

Hadoop: The Definitive Guide

http://bit.ly/ZIL0p を読み始める。2:01 AM Sep 23rd webで
やっぱりMapReduceBaseではなくmapper/reducerがAPIとしては新しい。パッケージ名もmapredがふるくてmapreduceが新しい。結果もcontextに書く。 25p2:05 AM Sep 23rd webで
統計量をconbinerで求めると結果が適切でなくなることがある。平均値の平均値に意味がないのと同じようなこと 31p2:14 AM Sep 23rd webで
new MiniDfsClusterとかで単体テスト用のクラスタが準備できるのは賢い気がする 58p2:37 AM Sep 23rd webで
hdfsはwriteのときにcrc32で整合性をチェックする。容量的には1%くらいなので特に問題ないらしい 75p2:50 AM Sep 23rd webで
haddop上のファイルを圧縮/解凍するときに、CodecPoolを使うとコスト安らしいんだけど、codecの生成ってそんなにコストかかるのかな。しかも専用クラスだし。 82p2:56 AM Sep 23rd webで
ConfigurationPrinterを使うとhadoopに突っ込んだ設定がもろもろみれる 122p3:22 AM Sep 23rd webで
酒のんで寝ようと思ったけど志半ばだったhadoop本を読み始める。mapreduceはsortが命。hadoop the difinitve guide 218p
ソート順を変更するには、RawComparatorをどうにかする。jobconf.setOutPutKeyComparatorClassが優先順位高。なければ、WriteableComparableを継承するクラスを見に行く。なければシリアライズしたのでソート。220p11:37 PM Oct 1st API
第二keyを設定してsortすることもできるし、key breake的なこともできる。conf.setPartitionerClass/conf.setOutputValueGroupingComparatorをそれぞれ使う。230p11:48 PM Oct 1st API
map-side join。名前かっこいい。joinはdbのjoinと同じような意味。mapの関数に届く前に異なる入力を結合することができる。CompositeImputFormatを使うと自然結合できる。233p11:59 PM Oct 1st API
hbaseはreal-timeらしいけど、ここでいう意味は何だろうか。rdbms代替可能なのか?そんなことはないんじゃないかと思うのだけれども。。12:57 AM Oct 2nd API
hbaseだとbigtableじゃなくてwebtableというらしい。ふと思ってしまうのが、かっこいい名前をつけるためにコード書いてるんじゃないかと。僕もそのきらいはある。1:12 AM Oct 2nd API
hbaseだと、普通のdbのクエリに加えて、カラム単位のkey valueも取得可能。web query 358p gaeのlow level apiでも似たようなことはできるのだろうか。1:30 AM Oct 2nd API
hbaseは、insertのコストはテーブルのサイズと関係なし、パーティショニングは自動、nodeを追加すれば自動でデータをリバランスする。bigtableみたいなものっていうかそういうコンセプトなんでしょうけど。2:30 AM Oct 2nd API
ZooKeeperはChubbyと似たようなものだけどPaxosではない。Zabというアルゴリズムで、リーダーを決めてほかのマシンがリーダーと同期、リーダーがほかのマシンにアトミックに更新させる。2phasecommitみたいなもの。 385p2:43 AM Oct 2nd API