1.X Hbase的ConnectionFactory源码解析

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值