HTablePool
Map / Reduceジョブのコンテキストでは、使用しても大幅な改善は得られないと思います。
何HTablePool
があなたをもたらすのか:
- スレッドセーフ:テーブルにを
HTablePool
使用するSynchronizedMap
ため、マルチスレッドアプリケーションのコンテキストではこれが便利です。ただし、Map / Reduceジョブのコンテキストでは、複数のノードがあり、タスクは独立しているため、これは実際には役に立ちません。
- プールされたオブジェクト
HTable
:プールであるため、毎回をインスタンス化する必要がなくなります。これは、たとえばHBaseに継続的にアクセスする同時リクエストがある場合に有効なステートメントですが、タスクごとに1回テーブルをインスタンス化するため、Map/Reduceジョブにはそれほど多くありません。
ですから、それは実際にはユースケースに依存すると思います。あなたが言ったようにMap / Reduceジョブを使用している場合は、すべてのタスクのメソッドHTablePool
をインスタンス化してsetup
閉じる必要があるため、おそらくそれは価値がありません。 cleanup
。
私が使用を検討する唯一のユースケースはHTablePool
、多数の同時リクエストを伴う高頻度のマルチスレッドアプリケーションです。この場合、プールの使用は間違いなく適切なユースケースです。