快速使用HBase进行离线数据分析
操作场景
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。本章节提供从零开始使用HBase的操作指导,通过客户端实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。
背景信息
假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用HBase客户端实现A业务操作流程如下:
- 创建用户信息表user_info。
- 在用户信息中新增用户的学历、职称信息。
- 根据用户编号查询用户姓名和地址。
- 根据用户姓名进行查询。
- 用户销户,删除用户信息表中该用户的数据。
- A业务结束后,删除用户信息表。
|
编号 |
姓名 |
性别 |
年龄 |
地址 |
|---|---|---|---|---|
|
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的主管理节点后才能使用客户端。
操作步骤
- 在主管理节点使用客户端。
- 安装客户端,具体请参考安装客户端章节。
- 以客户端安装用户登录客户端安装节点,执行以下命令切换到客户端目录。
cd /opt/client - 执行以下命令配置环境变量。
source bigdata_env
- 如果当前集群已启用Kerberos认证(安全模式),执行以下命令认证当前用户,当前用户需要具有创建HBase表的权限,具体请参见创建HBase用户并绑定角色配置拥有对应权限的角色,参考创建用户为用户绑定对应角色。如果当前集群未启用Kerberos认证(普通模式),则无需执行此命令。
kinit MRS集群用户
例如:
kinit hbaseuser
- 执行以下命令登录HBase组件客户端:
hbase shell
- 运行HBase客户端命令,实现A业务。
- 根据表1创建用户信息表user_info并添加相关数据。
create 'user_info',{NAME => 'i'}以增加编号12005000201的用户信息为例,其他用户信息参照如下命令依次添加:
添加编号12005000201用户的“name”信息:
put 'user_info','12005000201','i:name','A'
添加编号12005000201用户的“gender”信息:
put 'user_info','12005000201','i:gender','Male'
添加编号12005000201用户的“age”信息:
put 'user_info','12005000201','i:age','19'
添加编号12005000201用户的“address”信息:
put 'user_info','12005000201','i:address','City A'
- 在用户信息表user_info中新增用户的学历、职称信息。以增加编号为12005000201的用户的学历、职称信息为例,其他用户类似。
增加学历信息:
put 'user_info','12005000201','i:degree','master'
增加职称信息:
put 'user_info','12005000201','i:pose','manager'
- 根据用户编号查询用户姓名和地址。以查询编号为12005000201的用户姓名和地址为例,其他用户类似。
scan 'user_info',{STARTROW=>'12005000201',STOPROW=>'12005000201',COLUMNS=>['i:name','i:address']}
- 根据用户姓名进行查询。以查询A用户信息为例,其他用户类似。
scan 'user_info',{FILTER=>"SingleColumnValueFilter('i','name',=,'binary:A')"} - 删除用户信息表中该用户的数据。
所有用户的数据都需要删除,以删除编号为12005000201的用户数据为例,其他用户类似。
- 依次删除编号为12005000201的用户的所有数据字段,以删除“age”字段为例:
delete 'user_info','12005000201','i:age'
- 删除编号为12005000201的用户的所有数据:
deleteall 'user_info','12005000201'
- 依次删除编号为12005000201的用户的所有数据字段,以删除“age”字段为例:
- 删除用户信息表。
disable 'user_info'删除用户信息表:
drop 'user_info'
- 根据表1创建用户信息表user_info并添加相关数据。