更新时间:2024-04-29 GMT+08:00

HBase快速入门

HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。本章节提供从零开始使用HBase的操作指导:通过HBase Shell命令实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。

背景信息

假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用HBase客户端实现A业务操作流程如下:

  • 创建用户信息表user_info。
  • 在用户信息中新增用户的学历、职称信息。
  • 根据用户编号查询用户姓名和地址。
  • 根据用户姓名进行查询。
  • 用户销户,删除用户信息表中该用户的数据。
  • A业务结束后,删除用户信息表。
表1 用户信息

编号

姓名

性别

年龄

地址

12005000201

A

Male

19

Shenzhen, Guangdong

12005000202

B

Female

23

Shijiazhuang, Hebei

12005000203

C

Male

26

Ningbo, Zhejiang

12005000204

D

Male

18

Xiangyang, Hubei

12005000205

E

Female

21

Shangrao, Jiangxi

12005000206

F

Male

32

Zhuzhou, Hunan

12005000207

G

Female

29

Nanyang, Henan

12005000208

H

Female

30

Kaixian, Chongqing

12005000209

I

Male

26

Weinan, Shaanxi

12005000210

J

Male

25

Dalian, Liaoning

步骤一:购买HBase集群

  1. 登录表格存储服务控制台。
  2. 在控制台左上角选择区域。
  3. 单击“集群管理”进入集群管理界面。
  4. 单击集群管理界面右上角的“购买集群”,进入购买集群页面配置相关参数(安全组规则配置端口请参见表2)。
  5. 单击“立即购买”,进入确认规格页面,确认无误,单击“完成”。
  6. 返回集群列表查看创建集群进度,当集群状态为“服务中”时,集群创建成功,详细参见创建HBase集群
    表2 自定义安全规则组

    方向

    协议

    端口/范围

    源地址/安全组

    用途

    出方向

    全部

    全部

    0.0.0.0/0

    出方向放行

    入方向

    TCP

    16000

    CloudTable HBase集群所在的安全组

    HMaster RPC端口

    TCP

    16020

    RegionServer RPC端口

    TCP

    2181

    监听ZooKeeper客户端连接监听端口

    TCP

    2888

    Follower连接监听端口

    TCP

    3888

    ZooKeeper选举端口

    TCP

    2000

    Hagent访问端口

步骤二:下载HBase客户端

  1. 登录表格存储服务控制台。
  2. 在控制台左上角选择区域。
  3. 单击“帮助”,进入帮助页面。
  4. 单击帮助页面右侧“常用链接 > hbase客户端下载”(根据版本下载客户端),下载客户端安装包。

步骤三:准备弹性云服务

  1. 购买弹性云服务器。
    1. 登录ECS控制台。
    2. 单击管理控制台左上角的,选择区域。
    3. 单击左侧的服务列表图标,选择“计算 > 弹性云服务器 ECS”。
    4. 单击“购买弹性云服务器”。
    5. 配置弹性云服务器参数。
      1. 选择CPU架构和规格。
        图1 规格图
      2. 选择镜像和磁盘规格。
        图2 选择镜像和磁盘规格
  2. 单击下一步:网络配置。
    1. 选择VPC和安全组。
      图3 VPC图
    2. 选择购买弹性公网IP,公网带宽选择“按流量计费”。
      图4 公网IP图
  3. 单击下一步“高级配置”。

    配置云服务器名称和密码。

    图5 高级配置
  4. 单击下一步“确认配置”,确认配置参数。
    图6 确认配置参数页面
  5. 选择“企业项目”,勾选“协议”,确认配置信息后,单击“立即购买”。
  6. 返回弹性云服务器列表页面,查看弹性云服务器的创建进度。

    当弹性云服务器的状态为“运行中”时,表示创建完成。

步骤四:安装客户端

安装客户端有一键部署客户端、手动安装部署两种方法,此处使用手动安装部署。

  1. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器。

    具体登录操作步骤请参见《弹性云服务器用户指南》中的“登录Linux弹性云服务器 > SSH密码方式登录”。

  2. 步骤二中下载的客户端传输到Linux弹性云服务器。
  3. 登录后执行如下命令解压安装包:
    cd <客户端安装包存放路径>
    tar xzvf hbase-1.3.1-bin.tar.gz
    cd <客户端安装包存放路径>
    tar xzvf hbase-2.4.14-bin.tar.gz

    其中,<客户端安装包存放路径>请替换为实际的客户端存放路径。

  4. 配置zookeeper地址到配置文件。

    在客户端解压目录下,打开“hbase/conf/hbase-site.xml”文件,配置如下参数:

    1. “hbase.zookeeper.quorum”:该参数值为在集群管理列表中查找的对应集群的“ZK链接地址”。

      登录表格存储服务管理控制台,在左侧导航树单击“集群管理”,然后在集群列表中找到所需要的集群,并获取相应的“ZK链接地址”,配置在“hbase/conf/hbase-site.xml”文件,请参见图8

      图7 查看zk链接地址
      图8 配置ZK地址
    2. 检查是否存在该配置项“mapreduce.cluster.local.dir”,如果不存在,请添加该配置项。
      配置示例如下:
      <configuration>
      <property>
      <name>hbase.zookeeper.quorum</name>
      <value>xxx-zk1.cloudtable.com,xxx-zk2.cloudtable.com,xxx-zk3.cloudtable.com</value>
      </property>
      
      <property>
      <name>mapreduce.cluster.local.dir</name>
      <value>${hadoop.tmp.dir}/mapred/local</value>
      </property>
      </configuration>
  5. 启动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','Shenzhen, Guangdong'
  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'