实验步骤
#### 启动Hadoop、Hbase、Zookeeper服务
  启动hadoop,执行命令:
```shell
start-all.sh
```
  查看进程,是否启动成功
```
root@localhost:~
# jps
2626 DataNode
2998 ResourceManager
3110 NodeManager
2488 NameNode
2812 SecondaryNameNode
4623 Jps
```
  启动zookeeper和Hbase,执行命令:
```shell
cd /opt/zookeeper/bin
./zkServer.sh start
start-hbase.sh
```
  可以看到新启动进程,确保QuorumPeerMain、HMaster、HRegionServer均已启动。如下图所示:
```
root@localhost:~
# jps
5521 QuorumPeerMain
2626 DataNode
2998 ResourceManager
3110 NodeManager
5878 Jps
2488 NameNode
5592 HMaster
5737 HRegionServer
2812 SecondaryNameNode
```
#### 表操作练习
  1、启动HBase Shell
  通过命令行启动HBase Shell
```
hbase shell
```
   创建表
  创建一个名为orders的表,用于存储订单信息。表中包含两个列族:order_details和customer_info。order_details列族将存储订单的具体信息,如订单ID、订单状态和支付金额等;customer_info列族将存储客户的基本信息,如客户ID和姓名等。
```
create 'orders', 'order_details', 'customer_info'
```
  插入数据
  使用put命令向orders表中插入一些数据。
```
# 插入订单信息
put 'orders', 'order1', 'order_details:order_id', '1001'
put 'orders', 'order1', 'order_details:status', 'shipped'
put 'orders', 'order1', 'order_details:payment_amount', '199.99'
# 插入客户信息
put 'orders', 'order1', 'customer_info:customer_id', 'C001'
put 'orders', 'order1', 'customer_info:name', 'John Doe'
# 插入另一个订单的信息
put 'orders', 'order2', 'order_details:order_id', '1002'
put 'orders', 'order2', 'order_details:status', 'pending'
put 'orders', 'order2', 'order_details:payment_amount', '299.99'
put 'orders', 'order2', 'customer_info:customer_id', 'C002'
put 'orders', 'order2', 'customer_info:name', 'Jane Smith'
```
  查询数据
  使用get命令来查询特定行键的数据,或者使用scan命令来扫描整个表或表的一部分。
```
# 查询订单1的所有信息
get 'orders', 'order1'
# 查询订单1的订单状态
get 'orders', 'order1', 'order_details:status'
# 扫描整个表
scan 'orders'
# 扫描表并只显示两行数据
scan 'orders', {LIMIT=>2}
# 扫描表并只显示特定列族的数据
scan 'orders', {COLUMNS=>'order_details'}
```
  更新数据
  使用put命令来更新现有数据。如果指定的行键和列已经存在,那么新的值将覆盖旧的值。
```
# 更新订单1的状态为delivered
put 'orders', 'order1', 'order_details:status', 'delivered'
```
  删除数据
  使用delete命令来删除特定单元格的数据,或者使用deleteall命令来删除特定行键的所有数据。
```
# 删除订单1的支付金额
delete 'orders', 'order1', 'order_details:payment_amount'
# 删除订单2的所有数据
deleteall 'orders', 'order2'
```