hbase使用记录

hbase数据存储格式

img

​ HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。

​ HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族/列簇(column family)。 如上图所示。key1, key2, key3是三条记录的唯一的row key值,column-family1, column-family2, column-family3是三个列族,每个列族下又包括几列。比如 column-family1这个列族下包括两列,名字是column1和column2。t1:abc,t2:gdxdf是由row key1和column-family1-column1唯一确定的一个单元cell。这个cell中有两个数据,abc和gdxdf。两个值的时间戳不一样,分别是t1,t2, hbase会返回最新时间的值给请求者。

hbase基本操作

hbase shell (ddl操作)

  • list:查看所有表

  • scan 查看表中所有数据

    scan "table_name" ,{LIMIT=>10} //LIMIT=>10只返回10条记录,否则全部展示

  • create 创建表

    create '表名','family1','family2','family3'

  • put 增加记录

    put 'table_name', 'rowkey', 'family:column', 'value'

  • get 查看记录

    get 'table_name', 'rowkey'

  • cout 查看表中的记录总数

    count 'table_name'

  • delete 删除记录

    delete 'table_name' ,'rowkey','family_name:column' //该方式删除一条记录单列的数据

    deleteall 'table_name','rowkey' //该方式删除整条记录

  • 删除表中所有数据

    truncate 't1'

  • 删除一张表

    disable 'table_name'

    drop 'table_name'

  • 获得表的描述

    describe 'table_name'

  • 修改一个列族

    #disable alter enable
    disable 'table1'
    alter 'table1', {NAME=>'tab1_add', METHOD=>'delete'}
    enable 'table1'
    
  • 查看表是否存在

    exists 'table2

  • 判断表是否为enabledisable

    is_enabled 'table1'

    ``is_disabled 'table1'`

权限管理

  • 分配权限

    grant 'test','RW','t1'

    <!--给用户‘test'分配对表t1有读写的权限, 权限用五个字母表示: "RWXCA",其中READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A') -->

  • 查看权限

    user_permission 't1' //查看表t1的权限

  • 收回权限

    revoke 'test','t1'

  • dml操作

Region管理

java api

踩坑记录

Caused by: org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:229)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:202)
	at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:326)
	at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:301)
	at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:166)
	at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:161)
	at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:794)
	at org.springframework.data.hadoop.hbase.HbaseTemplate$1.doInTable(HbaseTemplate.java:132)
	at org.springframework.data.hadoop.hbase.HbaseTemplate.execute(HbaseTemplate.java:61)
	... 75 more
//发现是guava版本与hbase的版本不一致导致的
测试,hbase1.2.1:guava12-16,运行无误;guava17开始,同样出现标题异常

转载于:https://my.oschina.net/112612/blog/3058122

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值