1.?掌握?Hbase?创建数据库表及删除数据库表?
2.?掌握?Hbase?对数据库表数据的增、删、改、查。
二、实验内容:
1、题目?0:进入?hbase?shell?
2、题目?1:Hbase?创建数据库表?创建数据库表的命令:create?'表名',?'列族名?1','列族名?2','列族名?N'
3、题目二:HBase?数据库表数据的增、删、改、查?Hbase?增加数据的语法格式如下:?通过命令?put‘表名’,?‘rowKey’,?‘列族?:?列’?,?'值'?例:
put?'user',?'0001',?'info1:name','jack'?put?'user',?'0001',?'info2:age','18'?put?'user',?'0002',?'info1:name','tom'?Hbase?查询数据的语法格式如下:?通过命令:scan‘表名’来查看表的所有记录
4、题目三:Hbase?删除数据库表?Hbase?删除数据库的语法格式如下(drop?'表名'):?在删除表时,先要屏蔽该表,才能对该表进行删除?第一步:?disable?‘表名’,第二步?:drop?'表名'?Disable?表后可以通过命令:is_enabled?'表名',查看当前表是否可用?通过?drop?命令对表进行删除?最后用?list?命令查看?user?是否已被成功删除。?
5、题目四?HBase?python?基本编程?查看?StudentInfo?表中行键为“001”、列族为“StuInfo”、时间戳为?1?和?2?的版本数据。?
6、题目五?HBase?python?基本编程?(1)?查询?HBase?中所有数据库表
题目?0:进入?hbase?shell
题目一:Hbase?创建数据库表?
创建数据库表的命令:create?'表名',?'列族名?1','列族名?2','列族名?N'?
例如:?
以下示例创建了数据库表?user:?
如果想查看所有数据库表,可以使用?list?命令。?
可以看到,刚创建的数据库表?user?已经在数据库表的列表中,如果要看?user?表的结构,?
可以用命令:describe‘user’,如下截图所示?
通过命令:count?'表名'?来查看表中的所有记录的数量(根据?rowKey?来计算)?
题目二:HBase?数据库表数据的增、删、改、查?
Hbase?增加数据的语法格式如下:
通过命令?put‘表名’,?‘rowKey’,?‘列族?:?列’?,?'值
通过命令:scan‘表名’来查看表的所有记录
通过命令:get?'表名'?,?'rowKey'?来查看某个?rowKey?下的所有记录。
通过命令:count?'表名'?来查看表中的所有记录的数量(根据?rowKey?来计算)
通过命令:get?'表名','rowkey','列族'?来查看某个?rowKey?列族的记录
通过命令:get?'表名','rowkey','列族:列’来查看?rowKey?列族的某个列记
Hbase?删除数据的语法格式如下:
通过命令:delete‘表名’,‘行名’,‘列族:列'?来删除某个记录
通过命令:get?来查询删除的记录是否删除成功:
例:get?'user','0001','info1:name'
通过命令:deleteall?'表名','rowkey'?来删除整行记录
通过命令:scan?来查看整个表的记录来看是否删除成功:
通过命令:truncate?'表名'?来清空表所有的记录。
Hbase?更新数据的语法格式如下:
通过命令:put?就是重写一遍,进行覆盖,hbase?没有修改,都是追加
即对相同?rowKey、列族和时间戳的数据再次添加即为数据的更新
比如:put?'user',?'0001',?'info1:name','zhangsan'
再次追加:put?'user',?'0001',?'info1:name','zhangsan2'
通过?scan?命令可以查看到?rowKey=0001?的列族?info?的栏位?name?的值被成功改为
zhangsan2
题目三:Hbase?删除数据库表
Hbase?删除数据库的语法格式如下(drop?'表名'):
在删除表时,先要屏蔽该表,才能对该表进行删除
第一步:?disable?‘表名’,第二步?:drop?'表名'
Disable?表后可以通过命令:is_enabled?'表名',查看当前表是否可用
通过?drop?命令对表进行删除
?最后用?list?命令查看?user?是否已被成功删除。
题目四?HBase?python?基本编程
查看?StudentInfo?表中行键为“001”、列族为“StuInfo”、时间戳为?1?和?2?的版本数据。。
题目五?HBase?python?基本编程
(1)?查询?HBase?中所有数据库表
步骤一:master?主节点打开?HBase?集群上的?thrift?服务。打开新终端输入命令;
hbase?thrift?start
步骤二:打开新终端输入命令:spyder,打开?python?编程环境
程序运行结果:
(2)?user?表插入行键“0003“、姓名?name?为“lisi”的一行数据,user?表列族为?info1。
程序运行结果:
HBase?shell?输入命令:scan?‘user’
思考题:HBase?的分布式架构中有哪些组件?分别完成什么功能??
答:
HBase是基于Hadoop的一个分布式列存储系统,其分布式架构主要包括以下组件:
1.?RegionServer:RegionServer是HBase的关键组件之一,它运行在集群中的每个节点上,并负责管理和存储一个或多个表中的数据。RegionServer通过维护HBase表的多个Region来实现水平扩展,每个Region都是表的一个子集。RegionServer还负责处理客户端请求并执行基本的IO操作,例如读取、写入和删除数据。
2.?HMaster:HMaster是HBase的另一个关键组件,它负责管理整个HBase集群的元数据信息,如表的结构、Region的分配和负载均衡等。HMaster还处理客户端请求,例如创建或删除表、修改表结构等。
3.?ZooKeeper:ZooKeeper是一个开源的分布式协调服务,用于管理HBase集群中的配置和状态信息。在HBase集群中,ZooKeeper用于协调所有RegionServer和HMaster之间的通信。
4.?HDFS:HDFS是Hadoop分布式文件系统,HBase使用HDFS来存储数据。HBase将数据分成多个HFile,然后将这些文件存储在HDFS上。HDFS提供了高可靠性和高可扩展性,使HBase能够轻松地进行水平扩展。
5.?MemStore:MemStore是HBase内存中的数据缓存区,它存储了当前正在写入的数据。当达到一定大小时,MemStore将数据写入磁盘上的HFile中。MemStore在RegionServer级别上工作,即每个RegionServer都有自己的MemStore。
6.?HFile:HFile是HBase中的底层存储格式,用于持久化存储HBase表的数据。HFile是一种高效的二进制文件格式,支持快速随机访问和值范围查找。每个Region都被划分为多个HFile,这些文件会被存储在HDFS上。
7.?WAL:WAL(Write-Ahead?Log)是HBase中的一种日志,用于记录对HBase表的所有写操作,包括插入、更新和删除。WAL可以防止数据丢失和损坏,当RegionServer或HBase集群出现故障时,WAL可以帮助恢复丢失的数据。
这些组件共同构成了HBase的分布式架构,实现了高可靠性、高可用性和高可扩展性。
小结
本实验介绍了?Hbase?的使用环境,要求掌握?Hbase?创建数据库表及删除数据库表,掌
握?Hbase?对数据库表数据的增、删、改、查。注意区分?hbase?shell?命令和?linux?命令。