连接GeminiDB HBase兼容版实例
本章节主要介绍通过内网IP和Java语言连接GeminiDB HBase实例的基本操作。
前提条件
- 已成功创建GeminiDB HBase实例,且实例状态正常。创建GeminiDB HBase实例的方法请参见购买GeminiDB HBase兼容版实例。
查看实例IP地址
- 登录管理控制台。
- 在“实例管理”页面,单击目标实例名称,进入基本信息页面。
方法一:
在“基本信息”页面下方节点信息列表中,即可查看到GeminiDB HBase实例下各个节点的内网IP地址。
GeminiDB HBase实例目前不支持绑定公网IP。
图1 查看IP地址
在网络信息区域可以查看到GeminiDB HBase实例的端口,界面显示默认为8635,实际使用的默认端口为2181。
图2 查看端口
方法二:
您也可以单击实例“基本信息”左侧导航中的“连接管理”,即可查看到实例的内网IP地址和端口。
图3 查看IP和端口
通过内网连接实例
- 登录弹性云服务器。
详情请参见《弹性云服务器快速入门》中登录弹性云服务器的内容。
- 将HBase客户端安装包上传到弹性云服务器。
- 使用如下命令,解压客户端压缩包。
tar -xvf hbase-2.5.8-client-bin.tar.gz
- 修改客户端目录下conf/hbase-site.xml文件内容为下述配置样例,并且替换其中value字段的IP地址为您实例节点的IP,多个IP间以英文逗号分隔。实例节点的内网IP可通过查看实例IP地址获取。
<configuration> <property> <name>hbase.zookeeper.quorum</name> <value>127.0.0.1,127.0.0.2,127.0.0.3</value> </property> </configuration>
- 进入到解压后客户端的bin目录,执行以下命令连接实例。注意替换其中的YOUR_USERNAME与YOUR_PASSWORD为创建实例时设置的用户密码,用户名目前固定为rwuser。
export HADOOP_PROXY_USER="YOUR_USERNAME" export HADOOP_USER_NAME="YOUR_PASSWORD" ./hbase shell
- 出现如下信息,说明连接成功。
hbase:001:0>
通过Java连接实例
- 获取GeminiDB HBase实例的开放的内网IP地址、端口。
内网IP地址和端口的获取方法请参见查看实例IP地址。
- 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
- 请添加以下Maven依赖到您的项目中。
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.5.3</version> </dependency>
- 编辑连接GeminiDB HBase实例的代码。
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; public class HBaseExample { public static void main(String[] args) throws IOException { // 创建配置对象并设置Hbase连接参数 Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "your_hbase_instance_quorum"); config.set("hbase.zookeeper.property.clientPort", "your_hbase_instance_port"); // 填写用户名和密码 UserGroupInformation ugi = UserGroupInformation.createProxyUser("your_user_name", UserGroupInformation.createRemoteUser("your_password")); // 建立与Hbase实例的连接 Connection connection = ConnectionFactory.createConnection(config, User.create(ugi)); try { // 获取表对象 TableName tableName = TableName.valueOf("your_table_name"); Table table = connection.getTable(tableName); // 插入数据 Put put = new Put(Bytes.toBytes("row_key")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("col"), Bytes.toBytes("value")); table.put(put); // 获取单行数据 Get get = new Get(Bytes.toBytes("row_key")); Result result = table.get(get); byte[] value = result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("col")); System.out.println("Value: " + Bytes.toString(value)); } finally { // 关闭连接 connection.close(); } } }
- 运行示例代码,确认结果是否正常。