新建项目后在 pom.xml 中添加依赖:
注意:会报错 javax.el 包不存在,是一个测试用的依赖,不影响使用
<dependencies>
<dependency>
<groupId>org.apache.hbasegroupId>
<artifactId>hbase-clientartifactId>
<version>2.4.11version>
dependency>
<dependency>
<groupId>org.apache.hbasegroupId>
<artifactId>hbase-serverartifactId>
<version>2.4.11version>
<exclusions>
<exclusion>
<groupId>org.glassfishgroupId>
<artifactId>javax.elartifactId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.glassfishgroupId>
<artifactId>javax.elartifactId>
<version>3.0.1-b06version>
dependency>
dependencies>
根据官方 API 介绍,HBase 的客户端连接由 ConnectionFactory 类来创建,用户使用完成之后需要手动关闭连接。同时连接是一个重量级的,推荐一个进程使用一个连接,对 HBase的命令通过连接中的两个属性 Admin 和 Table 来实现。
鉴于代码比较少,不上传gitee了,直接搬套即可
public class HBaseConnection {
public static void main(String[] args) throws IOException {
//1.创建连接配置对象
Configuration conf = new Configuration();
//2.添加配置参数
conf.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104");
//3.创建连接
//默认使用同步连接
Connection connection = ConnectionFactory.createConnection(conf);
//可以使用异步连接
CompletableFuture<AsyncConnection> asyncConnection = ConnectionFactory.createAsyncConnection(conf);
//4.使用连接
System.out.println(connection);
//5,关闭连接
connection.close();
}
}
使用类单例模式,确保使用一个连接,可以同时用于多个线程。
public class HBaseConnection {
//声明一个静态属性
public static Connection connection = null;
static {
//1.创建链接
//默认使用同步连接
try {
//使用读取本地文件的形式添加参数
connection = ConnectionFactory.createConnection();
} catch (Exception e) {
e.printStackTrace();
System.out.println("连接失败");
}
}
/**
* 连接关闭方法,用于进程关闭时调用
*
* @throws IOException
*/
public static void closeConnection() throws IOException {
//判断线程是否为 null
if (connection != null) {
connection.close();
}
}
public static void main(String[] args) throws IOException {
//异步连接测试
System.out.println(HBaseConnection.connection);
//关闭连接
HBaseConnection.closeConnection();
}
}
在 resources 文件夹中创建配置文件 hbase-site.xml,添加以下内容
<configuration>
<property>
<name>hbase.zookeeper.quorumname>
<value>hadoop102,hadoop103,hadoop104value>
<description>The directory shared by RegionServers.
description>
property>
<property>
<name>hbase.rootdirname>
<value>hdfs://hadoop102:8020/hbasevalue>
<description>The directory shared by RegionServers.
description>
property>
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
configuration>
打印后结果如下:

此时连接成功!