
# HBase客户端使用实践
#### 操作场景
该任务指导用户在运维场景或业务场景中使用HBase客户端。
#### 前提条件
- 已安装客户端。例如安装目录为"/opt/hadoopclient"，以下操作的客户端目录只是举例，请根据实际安装目录修改。
- 各组件业务用户由MRS集群管理员根据业务需要创建。 "机机"用户需要下载keytab文件，"人机"用户第一次登录时需修改密码。
  
- 非**root** 用户使用HBase客户端，请确保该HBase客户端目录的属主为该用户，否则请参考如下命令修改属主。
  **chown user:group -R** *客户端安装目录* **/HBase**
  
 
#### 使用HBase客户端（MRS 3.x之前版本）
1. 安装客户端，具体请参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0091.html)章节。
2. 以客户端安装用户，登录安装客户端的节点。
3. 执行以下命令切换到客户端目录。 
   **cd** **/opt/hadoopclient**
   
   
4. 执行以下命令配置环境变量。 
   **source bigdata_env**
   
   
5. 如果当前集群已启用Kerberos认证，执行以下命令认证当前用户，当前用户需要具有创建HBase表的权限，具体请参见[创建角色](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0343.html)配置拥有对应权限的角色，参考[创建用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)章节，为用户绑定对应角色。如果当前集群未启用Kerberos认证，则无需执行此命令。
   
   **kinit** *组件业务用户*
   例如，**kinit** **hbaseuser**。
   
   
6. 直接执行HBase组件的客户端命令。 
   **hbase shell**
   
   
 
#### 使用HBase客户端（MRS 3.x及之后版本）
1. 安装客户端，具体请参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0090.html)章节。
2. 以客户端安装用户，登录安装客户端的节点。
3. 执行以下命令切换到客户端目录。 
   **cd** **/opt/hadoopclient**
   
   
4. 执行以下命令配置环境变量。 
   **source bigdata_env**
   
   
5. 如果当前集群已启用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**。
   
   
6. 直接执行HBase组件的客户端命令。 
   **hbase shell**
   
   
 
#### HBase客户端常用命令
常用的HBase客户端命令如下表所示。更多命令可参考<https://hbase.apache.org/2.2/book.html>。
表1HBase客户端命令 
| 命令       | 说明                                                                                               |
|:---|:---|
| create   | 创建一张表，例如**create 'test', 'f1', 'f2', 'f3'**。                                                     |
| disable  | 停止指定的表，例如**disable 'test'**。                                                                     |
| enable   | 启动指定的表，例如**enable 'test'**。                                                                      |
| alter    | 更改表结构。可以通过alter命令增加、修改、删除列族信息以及表相关的参数值，例如**alter 'test', {NAME =\> 'f3', METHOD =\> 'delete'}**。 |
| describe | 获取表的描述信息，例如**describe 'test'**。                                                                  |
| drop     | 删除指定表。删除前表必须已经是停止状态，例如**drop 'test'**。                                                           |
| put      | 写入指定cell的value。Cell的定位由表、rowk、列组合起来唯一决定，例如**put 'test','r1','f1:c1','myvalue1'**。                |
| get      | 获取行的值或者行的指定cell的值。例如**get 'test','r1'**。                                                         |
| scan     | 查询表数据，参数中需指定表名和scanner，例如**scan 'test'**。                                                        |
   
