PUT/DELETEをいっぱいするときの注意

昨日もいったようにHTableは、マルチスレッド非対応です。じゃあ、とスレッドごとにHTableインスタンスを生成すると、それごとにHBaseのコネクションが作成さられてしまうので、そりゃもう遅くなるわ、メモリも不足するわ、たいへんな騒ぎになります。

そういうときは、Configurationを共有しましょう。Configurationを1個にすれば、コネクションはひとつを使い回すようになります。と、Javadocに書いてありました。実際、ログをみるかぎり、ZooKeeperへの接続が使い回されるようになりました。

また、put/deleteをいっぱいする場合は、put(Put)を複数回実行するより、put(List)でやる方が、断然速いです。ソースみると、flushCommitsという大事だが重そうな処理がputメソッドを1回実行ごとにやっているから、そのせいでしょう。