
# 使用HBase Shell连接HBase安全集群
您可以通过创建集群开启加密通道，实现数据加密传输。此章节介绍如何开通HBase安全通道。
#### 使用限制
- 集群开启安全通道可能会导致性能下降。
- HBase安全通道只能在创建集群时开启。
- HBase集群与弹性云服务器具有相同区域、可用区、VPC。
- HBase集群与弹性云服务器具有相同安全组。
- 弹性云服务器安全组中添加本地主机IP地址。
 
#### 创建集群并打开安全通道
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 左上角选择区域。
3. 单击右上角的购买集群按钮，进入"购买集群"页面。
4. 完成其他配置后，查看安全通道加密按钮是否开启，默认开启。
5. 配置好参数，单击"立即购买"。
6. 进入"规格详情"页面，确认集群规格订单信息，单击"提交"，成功提交集群创建任务，集群创建成功后，进入详情页面查看通道开启状态。
 
 #### 连接HBase安全集群
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 左上角选择区域。
3. 单击"帮助 \> hbase2.x客户端下载"，下载客户端。
4. 使用SSH登录工具（如PuTTY）通过"弹性IP"远程登录到Linux弹性云服务器。 
   具体登录操作步骤请参见《弹性云服务器用户指南》中的"[登录Linux弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0134.html) \> SSH密码方式登录"。
   
   
5. 安装[步骤3]中下载的客户端，请参见[安装客户端并校验客户端](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0097.html#cloudtable_01_0097__li576485933910)。
6. 进入安装客户端的目录，修改hbase-env.sh文件内容。 
   - 进入hbase-client文件夹，查看conf文件夹。
     ```
     cd hbase-client
     ```
     
   
   - 进入conf文件夹编辑hbase-env.sh文件。
     - 进入conf文件夹。
       ```
       cd conf/
       ```
       
     
     - 编辑hbase-env.sh文件。
       ```
       vi hbase-env.sh
       ```
       
     
     - 在hbase-env.sh文件最后添加内容：
       ```
       CLIENT_JVMFLAGS="-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -Dzookeeper.client.secure=true"
       export HBASE_OPTS="${CLIENT_JVMFLAGS} ${HBASE_OPTS}"
       ```
       
     
     - 单击"Ecs"退出编辑界面。
     
     - 保存添加内容。
       ```
       :wq
       ```
       
      
   
   
   
   
7. 进入安装客户端目录下进行客户端配置，将如下配置添加到客户端conf目录下的hbase-site.xml文件中。 
   - 编辑hbase-site.xml文件。
     ```
     vi hbase-site.xml
     ```
     
   
   - 在hbase-site.xml文件最后添加内容：
     ```
     <property>
         <name>hbase.rpc.protection</name>
         <value>privacy</value>
     </property>
     ```
     
   
   - 单击"Ecs"退出编辑界面。
   
   - 保存添加内容。
     ```
     :wq
     ```
     
   
   
   
   
8. 连接HBase集群。 
   - 配置ZooKeeper地址到配置文件，请参见[配置zookeeper地址](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0097.html#cloudtable_01_0097__li2076465933918)。
   
   - 启动Shell访问集群。 执行"bin/hbase shell"，启动Shell访问集群。
     
   
   
   
   
 
#### HBase入门使用
本节介绍常用的HBase Shell命令。更多的HBase Shell命令，请参见<https://learnhbase.wordpress.com/2013/03/02/hbase-shell-commands/>。
1. 获取帮助。 在HBase shell执行"help"命令，将会返回所有命令信息，以及基本命令的说明和使用方法。
   ```
   hbase(main):001:0> help
   ```
   
2. 创建表。 执行"create"命令创建一张表，创建表时必须指定表的名称和ColumnFamily名称。
   ```
   hbase(main):007:0> create 'cloudtable','cf'
   0 row(s) in 1.5530 seconds
   => Hbase::Table - cloudtable
   ```
   
3. 查询表。
   ```
   hbase(main):009:0> list
   TABLE
   cloudtable
   1 row(s) in 0.0060 seconds
   => ["cloudtable"]
   ```
   
4. 插入记录。 执行"put"命令往指定表插入一条记录，需要指定表的名称，主键，自定义列，以及插入的具体值。
   ```
   hbase(main):004:0> put 'cloudtable','row1','cf:a','value1'
   0 row(s) in 0.2720 seconds
   ```
   命令中各参数分别代表如下含义：
   - cloudtable：表的名称
   
   - row1：主键
   
   - cf：a：自定义的列
   
   - value1：插入的值
    
5. 扫描记录。 执行"scan"命令扫描表，扫描时需要指定表的名称，即可以全表扫描，也可以指定范围扫描。
   ```
   hbase(main):001:0> scan 'cloudtable'
   ROW                                                                  COLUMN+CELL
   row1                                                                column=cf:a, timestamp=1504866237162, value=value1
   1 row(s) in 0.2420 seconds
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   - 如果插入数据时，设置了CELL的TTL，TTL属性不支持查看，但是可以通过验证设置的TTL是否生效来确认。
   
   - 如果插入数据时未设置CELL的TTL，此时系统会自动插入当前时间为时间戳。
     
6. 查询单条记录。 执行"get"命令查询单条记录，必须指定查询表的名称和主键。
   ```
   hbase(main):001:0> get 'cloudtable','row1'
   COLUMN                                                               CELL
   cf:a                                                                timestamp=1504866237162, value=value1
   1 row(s) in 0.2280 seconds
   ```
   
7. 禁用表。 如果需要修改表，比如删除表，修改表的设置，需要先对表进行禁用。执行"disable"命令禁用表。在禁用表时执行操作会报ERROR，并提示表被禁用。
   ```
   hbase(main):002:0> disable 'cloudtable'
   0 row(s) in 2.3550 seconds
   ```
   
8. 使能表。 与禁用表相对应的，在禁用表后，如果需要使用表，就需要执行"enable"命令使能表。
   ```
   hbase(main):004:0> enable 'cloudtable'
   0 row(s) in 1.2500 seconds
   ```
   
9. 删除表。 当不再需要表时，可以执行"drop"命令删除表。删除表之前需要禁用表，不然会报ERROR，并提示表被使能。删除表将会导致数据丢失，请谨慎操作。
   ```
   hbase(main):007:0> disable 'cloudtable'
   0 row(s) in 2.2380 seconds
   hbase(main):008:0> drop 'cloudtable'
   0 row(s) in 1.2600 seconds
   ```
   
10. 退出HBase shell。 执行"quit"命令退出HBase Shell。
    ```
    hbase(main):009:0> quit
    ```
    
 
