HBase客戶端的群集連接

2018-05-10 14:16 更新

HBase客戶端群集連接

API在HBase 1.0中進(jìn)行了更改。有關(guān)連接配置信息,請參閱連接到HBase群集的客戶端配置和依賴關(guān)系。

HBase 1.0.0的API

它已被清理并且用戶被返回接口來處理而不是特定的類型。在HBase的1.0,從ConnectionFactory獲得Connection對象,在需要的基礎(chǔ)上從Table,Admin以及RegionLocator獲取它的實(shí)例。完成后關(guān)閉獲取的實(shí)例。最后,確保在退出之前清理您的Connection實(shí)例。 Connections是重量級的對象,但線程安全,所以你可以為你的應(yīng)用程序創(chuàng)建一個(gè)并保持實(shí)例。 Table,Admin和RegionLocator實(shí)例是輕量級的。隨時(shí)創(chuàng)建,然后在關(guān)閉它們后立即放手。

HBase 1.0.0之前的API

實(shí)例HTable是與1.0.0之前的HBase集群版本進(jìn)行交互的方式。表實(shí)例不是線程安全的。在任何給定的時(shí)間,只有一個(gè)線程可以使用Table的一個(gè)實(shí)例。在創(chuàng)建Table實(shí)例時(shí),建議使用相同的HBaseConfiguration實(shí)例。這將確保將ZooKeeper和套接字實(shí)例共享到RegionServers,而這通常是您想要的。例如,這是首選:

HBaseConfiguration conf = HBaseConfiguration.create();
HTable table1 = new HTable(conf, "myTable");
HTable table2 = new HTable(conf, "myTable");

與此相反:

HBaseConfiguration conf1 = HBaseConfiguration.create();
HTable table1 = new HTable(conf1, "myTable");
HBaseConfiguration conf2 = HBaseConfiguration.create();
HTable table2 = new HTable(conf2, "myTable");

有關(guān)如何在HBase客戶端中處理連接的更多信息,請參閱ConnectionFactory。

連接池

對于需要高端多線程訪問的應(yīng)用程序(例如,可在單個(gè)JVM中為多個(gè)應(yīng)用程序線程提供服務(wù)的Web服務(wù)器或應(yīng)用程序服務(wù)器),可以預(yù)先創(chuàng)建一個(gè)Connection,如以下示例所示:

例子:預(yù)先創(chuàng)建一個(gè)Connection

// Create a connection to the cluster.
Configuration conf = HBaseConfiguration.create();
try (Connection connection = ConnectionFactory.createConnection(conf);
     Table table = connection.getTable(TableName.valueOf(tablename))) {
  // use table as needed, the table returned is lightweight
}

HTablePool已棄用

本指南的以前版本討論了HTablePool,它在HBase 0.94、0.95和0.96中被否決, 并在0.98.1、HBASE-6580 或 HConnection 中刪除, 這在 HBase 1.0 中被棄用連接。請改用連接,請改用Connection。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號