
# 快速使用HBase进行离线数据分析
#### 操作场景
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。本章节提供从零开始使用HBase的操作指导，通过客户端实现创建表、往表中插入数据、修改表、读取表数据、删除表中数据以及删除表的功能。
#### 背景信息
假定用户开发一个应用程序，用于管理企业中的使用A业务的用户信息，使用HBase客户端实现A业务操作流程如下：
- 创建用户信息表**user_info**。
- 在用户信息中新增用户的学历、职称信息。
- 根据用户编号查询用户姓名和地址。
- 根据用户姓名进行查询。
- 用户销户，删除用户信息表中该用户的数据。
- A业务结束后，删除用户信息表。
 
 表1用户信息 
| **编号**      | **姓名** | **性别** | **年龄** | **地址** |
|:---|:---|:---|:---|:---|
| 12005000201 | A      | 男      | 19     | A城市    |
| 12005000202 | B      | 女      | 23     | B城市    |
| 12005000203 | C      | 男      | 26     | C城市    |
| 12005000204 | D      | 男      | 18     | D城市    |
| 12005000205 | E      | 女      | 21     | E城市    |
| 12005000206 | F      | 男      | 32     | F城市    |
| 12005000207 | G      | 女      | 29     | G城市    |
| 12005000208 | H      | 女      | 30     | H城市    |
| 12005000209 | I      | 男      | 26     | I城市    |
| 12005000210 | J      | 男      | 25     | J城市    |
   
#### 前提条件
已安装客户端，例如安装目录为"/opt/client"。以下操作的客户端目录只是举例，请根据实际安装目录修改。在使用客户端前，需要先下载并更新客户端配置文件，确认Manager的主管理节点后才能使用客户端。
#### 操作步骤
1. 在主管理节点使用客户端。 
   1. 安装客户端，具体请参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0090.html)章节。
   
   2. 以客户端安装用户登录客户端安装节点，执行以下命令切换到客户端目录。
      ```
      cd /opt/client
      ```
      
   
   3. 执行以下命令配置环境变量。
      ```
      source bigdata_env
      ```
      
   
   4. 如果当前集群已启用Kerberos认证（安全模式），执行以下命令认证当前用户，当前用户需要具有创建HBase表的权限，具体请参见[创建HBase用户并绑定角色](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1608.html)配置拥有对应权限的角色，参考[创建用户](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000137.html)为用户绑定对应角色。如果当前集群未启用Kerberos认证（普通模式），则无需执行此命令。
      ```
      kinit MRS集群用户
      ```
      例如：
      ```
      kinit hbaseuser
      ```
      
   
   5. 执行以下命令登录HBase组件客户端：
      ```
      hbase shell
      ```
      
   
   
   
   
2. 运行HBase客户端命令，实现A业务。 
   1. 根据[表1]创建用户信息表**user_info** 并添加相关数据。
      ```
      create 'user_info',{NAME => 'i'}
      ```
      以增加编号12005000201的用户信息为例，其他用户信息参照如下命令依次添加：
      添加编号12005000201用户的"name"信息：
      ```
      put 'user_info','12005000201','i:name','A'
      ```
      添加编号12005000201用户的"gender"信息：
      ```
      put 'user_info','12005000201','i:gender','Male'
      ```
      添加编号12005000201用户的"age"信息：
      ```
      put 'user_info','12005000201','i:age','19'
      ```
      添加编号12005000201用户的"address"信息：
      ```
      put 'user_info','12005000201','i:address','City A'
      ```
      
   
   2. 在用户信息表**user_info** 中新增用户的学历、职称信息。以增加编号为12005000201的用户的学历、职称信息为例，其他用户类似。
      增加学历信息：
      ```
      put 'user_info','12005000201','i:degree','master'
      ```
      增加职称信息：
      ```
      put 'user_info','12005000201','i:pose','manager'
      ```
      
   
   3. 根据用户编号查询用户姓名和地址。以查询编号为12005000201的用户姓名和地址为例，其他用户类似。
      ```
      scan 'user_info',{STARTROW=>'12005000201',STOPROW=>'12005000201',COLUMNS=>['i:name','i:address']}
      ```
      
   
   4. 根据用户姓名进行查询。以查询A用户信息为例，其他用户类似。
      ```
      scan 'user_info',{FILTER=>"SingleColumnValueFilter('i','name',=,'binary:A')"}
      ```
      
   
   5. 删除用户信息表中该用户的数据。 所有用户的数据都需要删除，以删除编号为12005000201的用户数据为例，其他用户类似。
      - 依次删除编号为12005000201的用户的所有数据字段，以删除"age"字段为例：
        ```
        delete 'user_info','12005000201','i:age'
        ```
        
      
      - 删除编号为12005000201的用户的所有数据：
        ```
        deleteall 'user_info','12005000201'
        ```
        
       
   
   6. 删除用户信息表。 停止用户信息表：
      ```
      disable 'user_info'
      ```
      删除用户信息表：
      ```
      drop 'user_info'
      ```
      
   
   
   
   
 
