hbase链接池

官网安全

hbase有两种得到connection的方法,分别是以下两种:     线程

Connection connection = ConnectionFactory.createConnection(conf);

Connection connection = HConnectionManager.createConnection(conf);

这两种方法还有重载方法,在重载方法里能够传递两个参数,第二个参数ExecutorService,这个参数能够覆盖掉默认的线程池,具体的使用方式以下:code

public class HbaseConnectionGenerator {   
  
private HbaseConnectionGenerator() {//私有化构造方法,让用户不能new这个类的对象  
  
}  
  
private static HConnection connection = null;//要建立的connection  
  
public static synchronized HConnection getConnection() { 
if (null == connection){ 
        if (null == connection) {//空的时候建立,不为空就直接返回;典型的单例模式  
            Configuration conf = HBaseConfiguration.create();  
            String zkHost = "mpc5:2181,mpc6:2181,mpc7:2181";  
            conf.set("hbase.zookeeper.quorum", zkHost);  
            ExecutorService pool = Executors.newFixedThreadPool(10);//创建一个数量为10的线程池  
            try {  
                connection = HConnectionManager.createConnection(conf, pool);//用线程池建立connection  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        
		}
		}  
        return connection;  
    }  
}

一个应用(进程)对应着一个connection,每一个应用里的线程经过调用coonection的getTable方法从connection维护的线程池里得到table实例,按官方的说法,这种方式得到的table是线程安全的。每次table读写以后应该把table close掉,整个进程结束的时候才把connection close掉。对象

相关文章
相关标签/搜索