Hbase1.0 客户端api

最近在试用Hbase1.0的客户端API,发觉变化还是挺大(以前版本也不熟)。到处都是deprecated。

现在应该是这样子:

Configuration  conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "quorum1,quorum2,quorum3");
conf.set("hbase.zookeeper.property.clientPort", "2181");

connection = ConnectionFactory.createConnection(conf);// HBase 0.99+

//connection = HConnectionManager.createConnection(conf); // HBase <0.99

Table table = connection.getTable(TableName.valueOf("TestTable"));

新的客户端API中,Connection处于关键位置,以下api说明翻译下:

关于 Connection接口的说明:

A cluster connection
encapsulating lower level individual connections to actual servers and a
connection to zookeeper. Connections are instantiated through the ConnectionFactory class.
The lifecycle of the connection is managed by the caller, who has to close() the
connection to release the resources.

The connection object contains logic to find the master, locate
regions out on the cluster, keeps a cache of locations and then knows
how to re-calibrate after they move. The individual connections to
servers, meta cache, zookeeper connection, etc are all
shared by the Table and Admin instances
obtained from this connection.

Connection creation is a heavy-weight operation. Connection
implementations are thread-safe, so that the client can create a
connection once, and share it with different threads. Table and Admin instances,

on the other hand, are light-weight and are not thread-safe. Typically,
a single connection per client application is instantiated and every
thread will obtain its own Table instance. Caching or pooling of Table and Admin is
not recommended.

This class replaces HConnection,
which is now deprecated.

Connection封装了底层与各实际服务器的连接以及与zookeeper的连接。Connection通过 ConnectionFactory类实例化。Connection的生命周期由调用者维护,调用者通过调用close(),释放资源。

连接对象包含发现master,定位region,缓存region位置一边当region移动后,重新矫正位置。通往各服务器的连接,meta数据缓存,zookeeper连接等,与通过Connection获取的Table,Admin实例都是共享的。

创建Connection是重量级
操作。
Connection是线程安全的,因此,多个客户端线程可以共享一个Connection。Table和Admin实例,相反地,是轻量级的并且非线程
安全。典型的用法,一个客户端程序共享一个单独的Connection,每一个线程获取自己的Table实例。不建议缓存或者池化
(pooling)Table、Admin。

关于 ConnectionFactory.createConnection函数的说明:

public static Connection createConnection(org.apache.hadoop.conf.Configuration conf)

Create a new Connection instance using the passed conf instance. Connection encapsulates all housekeeping for a connection to the cluster. All tables and interfaces created from returned connection share zookeeper connection, meta cache, and connections to region servers and masters. 
The caller is responsible for calling Connection.close() on
the returned connection instance.

Connection封装了连接到集群的所有维护工作。通过返回的connection生成的table、接口等共享zookeeper连接,meta缓存,到region server以及master的连接。

调用者负责释放connection实例。

Similarly, Connection also
returns Admin and RegionLocator implementations

类似返回table接口,Connection还可以返回Admin,RegionLoacator实例。

时间: 2024-10-05 01:42:53

Hbase1.0 客户端api的相关文章

HBase1.0以上版本号的API改变

HBase1.0以上版本号已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用.新增了一些API来实现之前的功能: Connectioninterface: Connection connection = ConnectionFactory.createConnection(config); // ... connection.close(); TableName class: String tableName = "Table"; TableN

HBase1.0以上版本的API改变

HBase1.0以上版本已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用,新增了一些API来实现之前的功能: Connectioninterface: Connection connection = ConnectionFactory.createConnection(config); // ... connection.close(); TableName class: String tableName = "Table"; TableNa

HBase-1.0.1学习笔记汇总

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. HBase-1.0.1学习笔记(一)集群搭建 http://luchunli.blog.51cto.com/2368057/1682049HBase-1.0.1学习笔记(二)客户端访问 http://luchunli.blog.51cto.com/2368057/1687458 HBase-1.0.1学习笔记(三)启动脚本解析 http://luchunli.blog.51cto.com/2368057/1690619 HBas

OAuth2.0学习(5-4)新浪开放平台-微博API-使用OAuth2.0调用API

使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/statuses/public_timeline.json?access_token=abcd 2.在header里传递,形式为在header里添加 Authorization:OAuth2空格abcd,这里的abcd假定为Access Token的值,其它接口参数正常传递即可. 注:所有的微博开放

HBase1.0.0源码分析之请求处理流程分析以Put操作为例(二)

HBase1.0.0源码分析之请求处理流程分析以Put操作为例(二) 1.通过mutate(put)操作,将单个put操作添加到缓冲操作中,这些缓冲操作其实就是Put的父类的一个List的集合.如下: private List<Row> writeAsyncBuffer = new LinkedList<>(); writeAsyncBuffer.add(m); 当writeAsyncBuffer满了之后或者是人为的调用backgroundFlushCommits操作促使缓冲池中的

hadoop2.6.0 + hbase-1.0.0 伪分布配置

1 基本配置 主机名: 192.168.145.154 hadoop2 ======= 2 etc/hadoop下文件配置 1)core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop2:8020</value> </property> <property> <name>io.fil

Zookeeper客户端API之创建会话(六)

Zookeeper对外提供了一套Java的客户端API.本篇博客主要讲一下创建会话. 创建项目 首选,创建一个基于maven管理的简单java工程.在pom文件中引入zookeeper. <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </d

RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介

今天这篇博文是我翻译的RabbitMQ的最后一篇文章了,介绍一下RabbitMQ的C#开发的接口.好了,言归正传吧. Net/C# 客户端 API简介 1.主要的命名空间,接口和类 定义核心的API的接口和类被定义在RabbitMQ.Client这个命名空间下面: 所以要想使用RabbitMQ的功能,需要以下代码     using RabbitMQ.Client; [1].核心API的接口和类如下: IModel:表示一个符合AMQP 0-9-1 协议的通道,并且提供了很多的操作方法 ICon

SignalR的Javascript客户端API使用方式整理

SignalR的服务端提供了两种实现方式,分别是PersistentConnection和Hub,这两种方式的侧重点不同: PersistentConnection更接近于底层,编程接口比较简单,传输的数据格式为纯文本,客户端只需要调用发送和定义接收方法就可以实现跟服务端的交互. Hub则位于更高的层次,更加的面向对象,定义了服务端方法和客户端方法,客户端通过代理对象调用服务端方法,通过客户端方法获取服务返回结果. 下图是这两个服务端API在整个SignalR中的所处位置(引用自SignalR