在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法。那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进行对话了。所幸的是,HBase 本身就是用 Java 编写的,天生自带了 Java 原生API。我们可以通过 hbase-client 来实现 HBase 数据库的操作。所以,这次主要介绍该组件的基本用法。
在使用 hbase-client 之前,有几个要点需要注意:
客户端需要能访问 Zoopkeeper,再获得 HMaster、RegionServer 实例进行操作
客户端需运行在HBase/Hadoop 集群内,HBase会使用 hostname 来定位节点,因此要求客户端能访问到对应的主机名(或子域名) 如果是远程客户端则需要配置本地的hosts文件。
下面这个图,有助于理解 Client 与 HBase 集群的交互架构:
下面开始介绍 client 的使用。
在 Maven 的 pom.xml 中添加依赖:
这里需要注意的是,客户端版本和 HBase 版本需要保持一致,否则可能会遇到不兼容的问题。
示例代码:
增删改查方法封装如下:
最后,我们仍然以上一篇文章中的设备数据作为例子:
建立 DeviceState 表;
定义 name/state 两个列簇;
写入列数据;
读取列、行,范围读取;
删除操作
最终实现的代码如下:
执行代码,控制台输出如下:
此时Java Client已经完成制作。
A. 提示报错 找不到 winutils 程序
Failed to locate the winutils binary in the hadoop binary path
在Windows下依赖一个 winutils.exe 程序,该程序通过${HADOOP HOME}/bin 来查找。该报错不影响程序执行。
需要下载hadoop-commons-master,再配置变量 HADOOP HOME
B. 提示报错,UnknownHostException,无法找到节点..
原因
客户端无法解析HMaster实例节点的主机名
解决办法
需要编辑 C:/Windows/System32/drivers/etc/hosts 文件,添加对应的映射,如下:
官方文档 https://hbase.apache.org/book.html#quickstart Java HBase客户端API https://www.baeldung.com/hbase
欢迎关注"美码师"公众号,笔者是十年老兵一枚,欢迎留言打扰,话题不限于技术、职场或生活..
"写一首代码,做一手好菜",当技术与美走到一起时,生活也可以是诗和远方