
# HBase客户端使用实践
#### 操作场景
在MRS集群运维和业务开发中，管理员和开发人员需要通过HBase客户端执行数据读写、表结构管理、数据查询等操作。HBase客户端提供了hbase shell交互式命令行工具，支持通过类SQL命令对HBase表进行创建、删除、数据插入、查询等操作。了解HBase客户端的使用方法，能够帮助用户快速上手HBase数据操作，满足日常运维和业务开发需求。本文介绍如何使用HBase客户端进行数据操作。
- **hbase shell**：HBase的交互式命令行工具，支持执行HBase管理命令和数据操作命令。用户可以在hbase shell中创建表、插入数据、查询数据、修改表结构等。
- **列族（Column Family）**：HBase表的列集合，表创建时需要指定列族。列族决定了数据的物理存储方式，同一列族的数据存储在同一个Store中。
- **RowKey**：HBase表中行的唯一标识，数据按RowKey字典序排列存储。RowKey的设计直接影响查询性能，是HBase表设计的核心。
 
#### 操作视频
该视频为您介绍如何在MRS集群创建成功后，通过登录HBase客户端实现创建表，往表中插入数据并修改表数据等功能。
因不同版本操作界面可能存在差异，相关视频供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object10426171213235" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/mrs-video/1677746312863470938.mp4" title="使用HBase客户端" poster="https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002316313252.jpg" height="338.0000" width="600.0000"></video>
#### 前提条件
- 已安装客户端。例如安装目录为"/opt/hadoopclient"，以下操作的客户端目录只是举例，请根据实际安装目录修改。
- 各组件业务用户由MRS集群管理员根据业务需要创建。 集群已启用Kerberos认证（安全模式）时，"机机"用户需要下载keytab文件，"人机"用户第一次登录时需修改密码。
  
- 非**root** 用户使用HBase客户端，请确保该HBase客户端目录的属主为该用户，否则请参考如下命令修改属主。
  ```
  chown user:group -R 客户端安装目录/HBase
  ```
  
 
#### 使用HBase客户端
1. 以客户端安装用户，登录安装客户端的节点。 
   下载并安装客户端具体操作请参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0090.html)章节。
   
   
2. 执行以下命令切换到客户端目录。 
   ```
   cd /opt/hadoopclient
   ```
   
   
3. 执行以下命令配置环境变量。 
   ```
   source bigdata_env
   ```
   
   
4. 如果当前集群已启用Kerberos认证（安全模式），执行以下命令认证当前用户，当前用户需要具有创建HBase表的权限，具体请参见[角色管理](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000148.html)配置拥有对应权限的角色，参考[创建用户](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000137.html)章节，为用户绑定对应角色。如果当前集群未启用Kerberos认证（普通模式），则无需执行此命令。
   
   ```
   kinit 组件业务用户
   ```
   例如：
   ```
   kinit hbaseuser
   ```
   
   
5. 执行以下命令登录HBase组件客户端： 
   ```
   hbase shell
   ```
   
   
**验证操作：**
登录hbase shell后，执行**status**命令查看集群状态。如果显示集群正常且RegionServer数量为预期值，则表示客户端连接成功。
#### HBase客户端常用命令
常用的HBase客户端命令如下表所示。更多命令可参考<https://hbase.apache.org/2.2/book.html>。
表1HBase客户端命令 
| 命令       | 说明                                                                                                                                                                      |
|:---|:---|
| create   | 创建HBase表，需要同时指定创建的表名和列簇。例如，通过以下命令可以创建名为"test"的表，表中包含三个列簇f1、f2和f3**：** ``` create 'test', 'f1', 'f2', 'f3' ```                            |
| disable  | 停止指定的HBase表，例如**：** ``` disable 'test' ```                                                                                                |
| enable   | 启动指定的表，例如： ``` enable 'test' ```                                                                                                          |
| alter    | 更改表结构。可以通过**alter**命令增加、修改、删除列族信息以及表相关的参数值，例如： ``` alter 'test', {NAME => 'f3', METHOD => 'delete'} ```                                    |
| describe | 获取表的描述信息，例如**：** ``` describe 'test' ```                                                                                                    |
| drop     | 删除指定表，删除前表必须已经是停止状态，例如**：** ``` drop 'test' ```                                                                                             |
| put      | 向HBase表中写入数据，需要同时指定表名、行、列以及写入的值。HBase的列由列簇和列名两部分组成，例如以下示例中的列**f1:c1** 由列簇**f1** 和列名**c1**两部分组成： ``` put 'test','r1','f1:c1','myvalue1' ``` |
| get      | 获取行的值或者行的指定Cell的值，例如： ``` get 'test','r1' ```                                                                                              |
| scan     | 查询表数据，参数中需指定表名和scanner，例如**：** ``` scan 'test' ```                                                                                        |
   
#### 常见问题
- **hbase shell登录失败**
  hbase shell登录失败的常见原因包括：未执行kinit认证（Kerberos集群）、ZooKeeper连接失败、客户端配置错误、用户没有HBase访问权限等。
  如启用了Kerberos认证，请先执行**kinit**命令完成认证。检查客户端配置文件hbase-site.xml中的ZooKeeper地址是否正确。确认当前用户已被授予HBase访问权限。如仍无法登录，请检查网络连通性和防火墙配置。
  
- **执行命令时报错权限不足**
  执行HBase命令时报错权限不足，通常是因为当前用户没有被授予相应的操作权限，或Ranger中未配置对应的访问策略。
  请联系管理员在Manager中为该用户配置HBase访问权限。如果启用了Ranger鉴权，需要在Ranger中为该用户配置对应的HBase访问策略。
  
- **如何退出hbase shell**
  在hbase shell中执行**exit** 或**!q**命令即可退出。也可以使用快捷键Ctrl+D退出。
  
 
#### 相关文档
- 了解HBase日志介绍，请参考[HBase日志介绍](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1056.html)。
- 了解更多HBase数据操作，请参考[HBase数据操作](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300249.html)。
 
