gpt4 book ai didi

apache - 获得 HBase 的 HTable 句柄的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-05 00:22:44 24 4
gpt4 key购买 nike

一种方法是直接调用 HTable 构造函数,另一种方法是从 HConnection 调用 getTable 方法。第二个选项要求 HConnection 为“非托管”,这对我来说不是很好,因为我的进程将有许多线程访问 HBase。我不想自己重新发明轮子来管理 HConnection。

谢谢你的帮助。

[更新]:
我们坚持使用 0.98.6,因此 ConnectionFactory 不可用。

我发现波纹管 jira 建议创建一个“非托管”连接并使用单个 ExecuteService 来创建 HTable。为什么不能简单的使用非托管连接的getTable方法来获取HTable呢?那是因为HTable不是线程安全的吗?
https://issues.apache.org/jira/browse/HBASE-7463

最佳答案

我坚持使用旧版本(<0.94.11),您仍然可以使用 HTablePool但由于它已被 HBASE-6580 弃用我认为现在通过提供 ExecutorService 自动汇集从 HTables 到 RS 的请求。 :

ExecutorService executor = Executors.newFixedThreadPool(10);
Connection connection = ConnectionFactory.createConnection(conf, executor);
Table table = connection.getTable(TableName.valueOf("mytable"));
try {
table.get(...);
...
} finally {
table.close();
connection.close();
}

I've been unable to find any good examples/docs about it, so please notice this is untested code which may not work as expected.



有关更多信息,您可以查看 ConnectionFactory 文档和 JIRA 问题:
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/ConnectionFactory.html
https://issues.apache.org/jira/browse/HBASE-6580

更新 ,由于您使用的是 0.98.6 并且 ConnectionFactory 不可用,您可以改用 HConnectionManager :
HConnection connection = HConnectionManager.createConnection(config); // You can also provide an ExecutorService if you want to override the default one. HConnection is thread safe.
HTableInterface table = connection.getTable("table1");
try {
// Use the table as needed, for a single operation and a single thread
} finally {
table.close();
connection.close();
}

HTable 不是线程安全的,因此您必须确保始终使用 HTableInterface table = connection.getTable("table1") 获得一个新实例(这是一个轻量级进程)。然后用 table.close() 关闭它.

流程是:
  • 开始您的流程
  • 初始化您的 HConnection
  • 每个线程:
  • 3.1 从你的 HConnection 获取一个表
  • 3.2 从表中写入/读取
  • 3.3 关闭表
  • 当您的进程结束时关闭您的 HConnection

  • HConnectionManager: http://archive.cloudera.com/cdh5/cdh/5/hbase/apidocs/org/apache/hadoop/hbase/client/HConnectionManager.html#createConnection(org.apache.hadoop.conf.Configuration)

    H表: http://archive.cloudera.com/cdh5/cdh/5/hbase/apidocs/org/apache/hadoop/hbase/client/HTable.html

    关于apache - 获得 HBase 的 HTable 句柄的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29482803/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com