Hbase实践操作

Posted 大数据的那些事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase实践操作相关的知识,希望对你有一定的参考价值。

1、  创建表

hbase通过create命令创建一个表,如create 'music_table', 'meta_data', 'action',这条语句创建一个名为music_table的表,这个表有两个列族,

meta_dataaction。列族不要太多,因为每个列族对应一个文件,列族太多检索效率会很低。

配合着看一下hadoophbase的目录

Hbase实践操作

Hdfs中有个hbase的目录。

Hbase实践操作

    我们的数据存储在/hbase/ data中,打开这个目录,里面有个子目录default,我们的数据就存储在这个文件中。

Hbase实践操作

    打开default这个目录,发现有个子目录与我们的表名对应。

Hbase实践操作

2、  查看表结构信息

describe查看表的描述信息

Hbase实践操作

可以查看到这个表的版本号

Hbase实践操作

3、修改表

1)添加一个新的列族:

alter 'badou_music_table',{NAME=>'flags',VERSIONS=>3,IN_MEMORY=>true}

VERSIONS=>3表示可以保留3个版本,IN_MEMORY=>true表示这个数据存在内存中。这时添加列族的方法。

2)修改数据:

put 'badou_music_table', '1001', 'meta_data:name', 'elangchuanshuo'

重新查看数据

Hbase实践操作

3)删除列族

alter 'music_table',{NAME=>'action',METHOD=>'delete'}

注意:删除列族并不需要disable。删除表需要。

4、删除一个表:

1)  disable  'badou_music_table'

2)  drop  'badou_music_table'

注意:一定要打单引号

5、添加数据:

put 'badou_music_table', '1001', 'meta_data:name', 'wangqingshui'

通过get一个rowkey的方式去查看添加进去的数据是否存在:

Hbase实践操作

    添加数据的时候列名可以随便写,如果指定的列名不存在则会动态的添加一个列名。

7、删除数据:

         删除指定rowkey的所有列族用deleteall命令,删除指定rowkey的指定列用delete命令。例如命令deleteall  'music_table','m_2',表示删除music_table表的m_2这个rowkey所有数据;命令delete  'music_table','m_1',' meta_data:desc',表示删除music_table表的m_1这个rowkeydesc'这一列的数据。

8、修改列族的版本数

Hbase中的列族默认1个版本,可以用describe进行查看,如下:

Hbase实践操作

这个默认的版本数可以修改,alter  'music_table',{NAME=>'meta_data', VERSIONS =>3}

修改之后再往music_table表中插入数据:

put  'music_table','m_1','meta_data:name','zhangxueyou'

put 'music_table','m_1', 'meta_data:name','chenyixun'

然后通过get命令获取数据,不仅可以获取当前的数据,历史数据也可获得:

get 'music_table','m_1'

get 'music_table','m_1',{COLUMN=>'meta_data:name'}

get 'music_table','m_1',{COLUMN=>'meta_data:name',VERSIONS=>3}

9、采用truncate命令清空表数据:

truncate 'tablename'

10、查看表数据

查看表数据可以用get,也可以用scanget是对于某个rowkeyscan是用于多个rowkeyscan相当于把全表扫描,生产环境scan命令一定不要执行,除非你想被fire。要用scan可以加条件。

Hbase实践操作

11、对region进行分裂

         下图为在一个浏览器上对一个表进行访问,查看这个表的region信息,这个regionid'24b8d58c0814fdcbd6526343f3c28ef3'

Hbase实践操作

         Region会随着数据量的增大而逐渐分裂为多个,也可以通过命令手动分裂。split 'music_table ','24b8d58c0814fdcbd6526343f3c28ef3'。这条命令将这个region分裂为两个,如图所示:

Hbase实践操作

这个分裂是按数据大小平均分隔。一行不可再分,不可能在两个region中。我们也可以在建表时就给这个表分好region,如命令create 'badou_table', 'f1' ,SPLITS=>['100','1000','2000']。在建表时就分好了4region,小于100的为一个region100-1000的为一个region1000-2000的为一个region,大于2000的为一个region

Hbase实践操作

12、合并region

通过merge命令可以对region合并操作。

merge_region '538a9c2822038e511fc085663ee9b32d','2ba9235ee32a3b2f34e2ac7b24fafaf6'

13、查找历史数据:

把之前被覆盖的数据找出来:(只需要找到wangqingshui的时间戳就行了)

get 'badou_music_table', '1001',{COLUMN=>'meta_data:name',TIMESTAMP=>1513695086641}

Hbase实践操作

14、以脚本的形式去执行hbase操作

        hbase的命令行界面不好操作,所以在实际工作中,我们很少这样去执行,通常都是以脚本的方式去执行,如下是一个hbase的执行脚本:

        在命令行上执行hbase shell 文件名,即可。在脚本中如果不加上exit,则执行完这个脚本,终端仍停留在hbase-shell阶段。


以上是关于Hbase实践操作的主要内容,如果未能解决你的问题,请参考以下文章

Hbase实践操作

Hbase实践操作

HBase最佳实践-管好你的操作系统

HBase最佳实践-管好你的操作系统

小白视角大数据基础实践 分布式数据库HBase的常用操作

Hbase/HDFS存储扩容实践