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掉。對象

相關文章
相關標籤/搜索