
# 快速使用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的主管理节点后才能使用客户端。
#### 操作步骤
**MRS 3.x以前版本集群执行以下操作：**
1. 下载客户端配置文件。
   
   1. 登录MRS Manager页面，具体请参见[访问集群Manager](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2123.html)，然后选择"服务管理"。
   
   2. 单击"下载客户端"。 "客户端类型"选择"仅配置文件"，"下载路径"选择"服务器端"，单击"确定"开始生成客户端配置文件，文件生成后默认保存在主管理节点"/tmp/MRS-client"。文件保存路径支持自定义。
      图1下载客户端的配置文件   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264265658.png) 
   
   
   
   
2. 登录MRS Manager的主管理节点。 
   1. 在集群详情的"节点信息"页签中查看节点名称，名称中包含"master1"的节点为Master1节点，名称中包含"master2"的节点为Master2节点。 MRS Manager的主备管理节点默认安装在集群Master节点上。在主备模式下，由于Master1和Master2之间会切换，Master1节点不一定是MRS Manager的主管理节点，需要在Master1节点中执行命令，确认MRS Manager的主管理节点。命令请参考[2.d]。
      
   
   2. 以**root** 用户使用密码方式登录Master1节点。操作方法，请参见[登录集群节点](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0083.html)章节。
   
   3. 切换至**omm** 用户。
      **sudo su - root**
      **su - omm**
      
   
   4. 执行以下命令确认MRS Manager的主管理节点。
      sh ${BIGDATA_HOME}/om-0.0.1/sbin/status-oms.sh
      回显信息中"HAActive"参数值为"active"的节点为主管理节点（如下例中"mgtomsdat-sh-3-01-1"为主管理节点），参数值为"standby"的节点为备管理节点（如下例中"mgtomsdat-sh-3-01-2"为备管理节点）。
      ```
      Ha mode
      double
      NodeName              HostName                      HAVersion          StartTime                HAActive             HAAllResOK           HARunPhase 
      192-168-0-30          mgtomsdat-sh-3-01-1           V100R001C01        2019-11-18 23:43:02      active               normal               Actived    
      192-168-0-24          mgtomsdat-sh-3-01-2           V100R001C01        2019-11-21 07:14:02      standby              normal               Deactived
      ```
      
   
   5. 使用**root** 用户登录MRS Manager的主管理节点，例如"192-168-0-30"节点，并执行以下命令切换到**omm** 用户。
      **sudo su - omm**
      
   
   
   
   
3. 执行以下命令切换到客户端安装目录，例如"/opt/client"。 
   **cd** **/opt/client**
   
   
4. 执行以下命令，更新主管理节点的客户端配置。
   
   **sh refreshConfig.sh /opt/client** *客户端配置文件压缩包完整路径*
   例如，执行命令：
   **sh refreshConfig.sh /opt/client /tmp/MRS-** **c** **lient/MRS_Services_Client.tar**
   界面显示以下信息表示配置刷新更新成功：
   ```
   ReFresh components client config is complete.
   Succeed to refresh components client config.
   ```
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   步骤[1]\~[4]的操作也可以参考[更新客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0089.html)页面的方法二操作。
   
   
5. 在Master节点使用客户端。 
   1. 在已更新客户端的主管理节点，例如"192-168-0-30"节点，执行以下命令切换到客户端目录。 **cd /opt/client**
      
   
   2. 执行以下命令配置环境变量。 **source bigdata_env**
      
   
   3. 如果当前集群已启用Kerberos认证，执行以下命令认证当前用户，当前用户需要具有创建HBase表的权限，具体请参见[创建角色](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0343.html)配置拥有对应权限的角色，参考[创建用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)为用户绑定对应角色。如果当前集群未启用Kerberos认证，则无需执行此命令。
      **kinit** *MRS* *集群用户*
      例如，**kinit hbaseuser**。
      
   
   4. 直接执行HBase组件的客户端命令。 **hbase shell**
      
   
   
   
   
6. 运行HBase客户端命令，实现A业务。 
   1. 根据[表1]创建用户信息表user_info并添加相关数据。
      **create** '*user_info* ',{NAME =\> 'i'}
      以增加编号12005000201的用户信息为例，其他用户信息参照如下命令依次添加：
      put '*user_info* ','*12005000201* ','***i:name*** ','*A*'
      put '*user_info* ','*12005000201* ','***i:gender*** ','*Male*'
      put '*user_info* ','*12005000201* ','***i:age*** ','*19*'
      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的用户数据为例，其他用户类似。
      delete'*user_info* ','*12005000201*','i'
      
   
   6. 删除用户信息表。 disable'*user_info*'
      drop '*user_info*'
      
   
   
   
   
**MRS 3.x及之后版本集群执行以下操作：**
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-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的用户信息为例，其他用户信息参照如下命令依次添加：
      put '*user_info* ','*12005000201* ','***i:name*** ','*A*'
      put '*user_info* ','*12005000201* ','***i:gender*** ','*Male*'
      put '*user_info* ','*12005000201* ','***i:age*** ','*19*'
      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*'
      
   
   
   
   
 
