hbase使用记录

    xiaoxiao2021-04-15  269

    hbase数据存储格式

    ​ 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

    判断表是否为enable 和 disable

    is_enabled 'table1'

    ``is_disabled ‘table1’`

    权限管理

    分配权限

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

    查看权限

    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开始,同样出现标题异常

    最新回复(0)