hbase到了1.x之后放弃了这种创建工厂的方式:
@deprecated Please use ConnectionFactory instead
Connection connection =HConnectionManager.createConnection(conf);
改用ConnectionFactory 类来创建hbase客户端连接
ConnectionFactory 这个类的主要方法如下:
其中最主要的是这个createConnection(final Configuration conf, final boolean managed, final ExecutorService pool, final User user)带有四个参数的方法,其他方法最终都是调用这个方法。由于这个方法没有public,所以我们还是只能调用其重载的方法。
/* @param conf configuration 配置
*为哪个用户创建的连接,这里的用户会默认实例化hadoop的SecureHadoopUser类,个人认为:hbase通过hadoop的安全认证来管理hbase集群。
* @param user the user the connection is for
* 用于批量操作的线程池,默认为null。这里使用线程池来管理连接,一个线程对应一个连接,其实一个连接,但是我们也可以不传线程池,这种情况下,只会实例化一个不带线程池的连接
* @param pool the thread pool to use for batch operations
* 返回连接对象
* @return Connection object for <code>conf</code>
* 这里的参数managed,该参数用于connection的生命周期管理,在上述的传递过程中该参数始终为false,关于该参数的作用,在connection close的时候体现
* indicates whether this connection's life cycle is managed (by us)
* 表示这个连接的管理权是用户,还是有connection对象自己管理
* 如果管理权是属于用户的那么在调用close方法时有区别。
*/
static Connection createConnection(final Configuration c

HBase 1.x弃用了旧的HConnectionManager创建连接方式,改用ConnectionFactory。重点介绍了ConnectionFactory的createConnection方法,该方法是创建连接的核心。HConnectionImplementation的close方法负责资源管理和减少使用计数。单个连接可在多个Table和Admin实例间共享,连接是线程安全的,而Table和Admin则不是。推荐每个客户端应用仅实例化一个连接,线程各自获取Table实例,读写后关闭Table,进程结束时关闭Connection。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



