
# 快速创建HBase集群并进行离线数据查询
HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。本章节提供从零开始使用HBase的操作指导：通过HBase Shell命令实现创建表，往表中插入数据，修改表，读取表数据，删除表中数据以及删除表的功能。
#### 背景信息
假定用户开发一个应用程序，用于管理企业中的使用A业务的用户信息，使用HBase客户端实现A业务操作流程如下：
- 创建用户信息表user_info。
- 在用户信息中新增用户的学历、职称信息。
- 根据用户编号查询用户姓名和地址。
- 根据用户姓名进行查询。
- 用户销户，删除用户信息表中该用户的数据。
- A业务结束后，删除用户信息表。
 
 表1用户信息 
| **编号**      | **姓名** | **性别** | **年龄** | **地址**   |
|:---|:---|:---|:---|:---|
| 12005000201 | A      | Male   | 19     | IPA, IPB |
| 12005000202 | B      | Female | 23     | IPC, IPD |
| 12005000203 | C      | Male   | 26     | IPE, IPF |
| 12005000204 | D      | Male   | 18     | IPG, IPH |
| 12005000205 | E      | Female | 21     | IPI, IPJ |
| 12005000206 | F      | Male   | 32     | IPK, IPL |
| 12005000207 | G      | Female | 29     | IPM, IPN |
| 12005000208 | H      | Female | 30     | IPO, IPP |
| 12005000209 | I      | Male   | 26     | IPQ, IPR |
| 12005000210 | J      | Male   | 25     | IPS, IPT |
   
#### 准备工作
- 已注册华为账号并开通华为云，具体请参见[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)，且在使用CloudTable前检查账号状态，账号不能处于欠费或冻结状态。
- 已创建虚拟私有云和子网，参见创建[虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
 
#### 步骤一：购买HBase集群
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 控制台左上角选择区域。
3. 单击集群管理界面右上角的"购买集群"，进入购买集群页面配置相关参数（安全组规则配置端口请参见[表2]）。
4. 单击"立即购买"，进入确认规格页面，确认无误，单击"完成"。
5. 返回集群列表查看创建集群进度，当集群状态为"服务中"时，集群创建成功，详细参见[创建HBase集群](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0020.html)。
    表2HBase安全组规则 
   | 方向  | 协议  | 端口/范围 | 源地址/安全组                  | 用途                   |
   |:---|:---|:---|:---|:---|
   | 出方向 | 全部  | 全部    | 0.0.0.0/0                | 出方向放行                |
   | 入方向 | TCP | 16000 | CloudTable HBase集群所在的安全组 | HMaster RPC端口        |
   | 入方向 | TCP | 16020 | CloudTable HBase集群所在的安全组 | RegionServer RPC端口   |
   | 入方向 | TCP | 2181  | CloudTable HBase集群所在的安全组 | 监听ZooKeeper客户端连接监听端口 |
   | 入方向 | TCP | 2888  | CloudTable HBase集群所在的安全组 | Follower连接监听端口       |
   | 入方向 | TCP | 3888  | CloudTable HBase集群所在的安全组 | ZooKeeper选举端口        |
   | 入方向 | TCP | 2000  | CloudTable HBase集群所在的安全组 | Hagent访问端口           |
      
   
 
#### 步骤二：准备弹性云服务器
1. 购买弹性云服务器，登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)。
2. 控制台左上角选择区域。
3. 单击页面右上角"购买弹性云服务器"，进入配置界面。
4. 配置弹性云服务器参数：基础配置、实例、操作系统、存储备份、网络、安全组、公网访问、云服务器管理、高级配置、购买量。 VPC、子网、安全组与集群保持一致。
   
5. 参数配置后，勾选"协议"并单击"立即购买"。ECS创建成功后会默认开机。 具体请参见弹性云服务"[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html#section5)"章节。
   
 
#### 步骤三：添加安全组
在ECS安全组中添加本地主机的IP地址。
1. 获取本地主机IP，按键盘中"win+R"，弹出运行界面。
2. 在输入框中输入"cmd"，单击"确定"，进入cmd运行窗口，
3. 在命令窗口输入"ipconfig"，单击"回车"，查询本机IP。
4. 购买弹性云服务器，登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)。
5. 进入"弹性云服务器 "列表页面，单击"弹性云服务名称 \> 基本信息 \> 安全组名称 \> 入方向规则"，进入入方向规则页面。
6. 单击页面右上角的"添加规则"，弹出"添加入方向规则"页面。
7. 源地址中填写步骤[3]中获取的本地IP地址。单击"确定"安全组添加完成。
 
#### 步骤四：安装客户端并校验客户端
安装客户端有一键部署客户端、[手动安装](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0097.html#section1)部署两种方法，此处以一键部署为例。
1. 下载客户端一键部署工具。使用SSH登录工具（如PuTTY）通过"弹性IP"远程登录到Linux弹性云服务器。 具体登录操作步骤请参见《弹性云服务器用户指南》中的"[登录Linux弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0134.html) \> SSH密码方式登录"。
   然后执行如下命令，获取客户端一键部署工具：
   ```
   curl -O -k "https://cloudtable-publish.obs.myhuaweicloud.com/quick_start_hbase_shell.sh"
   ```
   ![](https://support.huaweicloud.com/qs-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   此命令适用于HBase 1.x版本。
   ```
   curl -O -k "https://cloudtable-publish.obs.myhuaweicloud.com/cloudtable-client/quick_start_hbase_shell.sh"
   ```
   ![](https://support.huaweicloud.com/qs-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   - 此命令适用于HBase 2.x版本。
   
   - 一键部署包内置校验文件。
     
2. 获取访问集群地址。
   1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
   
   2. 单击目标集群"集群名称 \> 详情"，进入集群信息页面。
   
   3. 获取相应的"ZK链接地址（内网）"，该参数值就是集群访问地址。
    
3. 使用工具部署客户端。请将以下命令中的"$zookeeper_address"参数替换为[2]获取的ZK链接地址，然后在弹性云服务器命令行窗口，执行该命令一键部署客户端。
   - 普通集群一键部署命令。
     ```
     source quick_start_hbase_shell.sh $zookeeper_address
     ```
     
   
   - 安全集群一键部署命令。
     ```
     source quick_start_hbase_shell $zookeeper_address enable
     ```
     
    
4. 启动Shell访问集群。 在上一步执行source命令自动部署客户端后，就已自动启动了HBase Shell。在后续使用过程中，您也可以执行"bin/hbase shell"命令启动Shell访问集群。
   
 
#### 步骤五：运行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','IPA, IPB'
   ```
   
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'
   ```
   
 
