White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

HiveでSocketが解放されずに溜まっていくバグ

っていうのに数日悩まされ続けて、ある程度軽減できる対処法が見つかったので展開しておきます。

(既にhiveのuser mlには投稿してます)

再現方法:https://gist.github.com/3234772(英語)

簡単に言ってしまうと、link.txtを置くような形式のテーブルに対してselect文を実行する度、socketがCLOSE_WAITのまま溜まっていきます。パーティション+Symboliclinkだとパーティションの文だけ一気にsocketが溜まっていく・・なんてこともあります。割とさくっと数万単位でsocketが貯まります・・他の会社でHive使ってる方は遭遇しなかったのでしょうか。実体のファイルをそのまま置いてるのかな?

対処方法としては、socketが溜まったらhdfsを再起動してsocketを全部閉じてしまうって逃げ方もありなんですが、一部問題個所があったのでそれも報告しておきました。

具体的に言うと、

これの66行目で使われてるReaderがclose呼ばれてないです。

SymbolicTextInputFormatにも同様の問題があります。

うちの環境ではこの部分直してリビルドしたら、大分CLOSE_WAITが減りました(まだ完全には無くなってないのですが)。