在我们的环境中我们使用多线程通过hbase Java Client调用hbase,并且在每个线程中我们在完成操作后调用Connection.close(),但是我们发现Connection.close()花费了大约10毫秒,所以可能我知道是否可以在不关闭连接的情况下重用线程之间的连接?
来自 HBase 1.2 的 API 文档,org.apache.hadoop.hbase.client.Connection:https : //hbase.apache.org/1.2/apidocs/org/apache/hadoop/hbase/client/Connection.html
连接创建是一个重量级的操作。连接实现是线程安全的,因此客户端可以创建一次连接,并与不同的线程共享。另一方面,表和管理实例是轻量级的并且不是线程安全的。通常,每个客户端应用程序都会实例化一个连接,并且每个线程都将获得自己的 Table 实例。不建议缓存或池化 Table 和 Admin。
此类取代了现已弃用的 HConnection。
所以,是的,创建 HBase 连接很慢。但是获得的连接是线程安全的,您的应用程序中应该只有一个 HBase 连接(您应该只在应用程序结束/关闭时关闭)。
但是,请注意关闭您从 Connection 获得的对象:Table、Admin、ResultScanner,...它们确实打开了在您完成处理后必须关闭的资源。
| 归档时间: |
|
| 查看次数: |
3085 次 |
| 最近记录: |