HtablePool在Hbase中共享表的替代方案是什么

HtablePool在Hbase中共享表的替代方案是什么,hbase,cloudera,Hbase,Cloudera,我正在浏览许多有关hbase连接池的示例和博客 我尝试使用编译器显示其折旧的Htablepool(使用cloudera cdh 5.4.0,Hbase版本-1.0.0-cdh5.4.0) 而且Htable类不是线程安全的,所以我没有直接实例化Htable,而是试图通过从HConnectionManager获取连接来使用HtableInterface,但这也被低估了 它说使用连接工厂 请允许我获得一个完整的优化和最好的连接池方法,将表池替换为HTablePool即使Hconnectionmanag

我正在浏览许多有关hbase连接池的示例和博客

我尝试使用编译器显示其折旧的Htablepool(使用cloudera cdh 5.4.0,Hbase版本-1.0.0-cdh5.4.0)

而且Htable类不是线程安全的,所以我没有直接实例化Htable,而是试图通过从HConnectionManager获取连接来使用HtableInterface,但这也被低估了

它说使用连接工厂


请允许我获得一个完整的优化和最好的连接池方法,将表池替换为HTablePool

即使Hconnectionmanager现在也不推荐使用。新方法是使用ConnectionFactory

与旧API中的HTablePool相比,新客户端中没有连接池,这也让我感到困惑。但新方法是在第二个参数中将executor服务传递给ConnectionFactory.createConnection。查看此代码以获取更多参考

如果不传递executor服务,它将创建一个默认池,最终将创建与区域服务器数量相同的线程数

我做了一个性能测试,看看传递不同大小的执行器服务与不显式传递任何执行器服务有什么不同,相信我,在我的情况下,默认方法(不传递执行器服务)与传递线程池超过20的服务一样好(我有10个区域服务器)。
因此,在我看来,您可以使用它,而无需明确通过executor service。

虽然这可以从理论上回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。