HBase知识总结

本文总结了HBase的基本概念,包括Row key、Column Family、Column、Timestamp和Value。介绍了HBase的存储结构,并概述了Java连接HBase的基础知识和基本操作,如使用HBaseAdmin和HTable进行表的管理与数据的增删查改,强调了使用连接池的重要性。
摘要由CSDN通过智能技术生成

HBase知识总结

学习了新的东西总要记点什么,以前看过很多文章也总结了一些笔记,由于知识比较零散所有没有分享出来。现在开始梳理一下以前的笔记和大家分享,如发现有什么不对请大家多多指正,相互学习。

基本概念

1.Row key

行主键,在对HBase进行查询时候只能依靠Row key,HBase不支持条件查询等类似于一些主流数据库的查询方式,读取记录只能依赖行主键以及进行全局扫面,可以将行主键想象成主流数据库查询过程中用到的主键(例如,id)。

2.Column Family

列族,可以将列族想象成日常主流数据库中的表结构的所有列的一个大管家,列族中存储了所有列的名称,整个表包括多少列,列族就包括多少(除去Row key和Timestamp列)。

3.Column

列,HBase的每个列都隶属于一个列族,以列族名称作为前缀,同一列族中的所有列会聚集在一个存储单元上,同时按照Column key进行排序。

4.Timestamp

在HBase中,通过row key 和 Colum Family确定一份数据,同一个row key和Colum Family可能有多份不同的数据,HBase通过时间戳来区分这些数据,同时按照时间戳对左右的数据进行排序,最新的数据排在最前面,时间戳默认为系统当前时间(精确到毫秒),同时也可以人为设置该值。

5.Value

我们在HBase表中精确查询数据时,通过TableName找到表,接着通过Row key找到对应的行,然后通过ColumnKey找到相应的列,最后根据时间戳找到最新的需要查询的值,这个值就是value。

6.存储类型

在HBase中,表名称是字符串,行键和列名称是二进制值(即就是Java中的Byte[]),时间戳是一个64为的整数(Java中的long类型),最后的查询结果Value是字节数组(Java中的byte[]类型)。

7.存储结构

在HBase中,整个数据表是按照行键进行排序,每行包括任意数量的列,列和列之间通过列键进行排序,每列包括若干的数据,整个HBase的存储结构可以理解如下:

Table (

Row key,List(

SortedMap(

Column,list(

Value,Timestamp

)

)

)

)

基础知识

  1. Java友好提供了全面的java客户端库
  2. HBase中所有数据都是作为原始数据,使用数组的形式存储
  3. 行健是唯一标识符,类似数据库的主键
  4. 表中确定一个单元的坐标是[rowkey,cloumn fanmily,column qualifier]
  5. 5个基本命令来访问HBase;Get(读)、Put(写)、Delete(删除)、Scan(扫描)、Increment(递增)
  6. HFile是存储文件,对应列族,一个列族可以有多少HFile文件,但是一个HFile不能存多个列族的数据
  7. 写的操作会写入预写式日志(WAL)和称为MemStore的内存写入缓冲区,当两者都确认写入后才认为写的动作成功完成
  8. 不建议禁用WAL,禁用后RegionServer故障时会导致数据丢失

基本操作

Java连接HBase

HBaseAdmin这个类负责什么,创建表、删除表等,HTable类负责相关的增删改查
1. 加载配置

    	Configuration conf = new Configuration();
    	// conf.addResource("hbase-site-cluster.xml");//指定文件加载
    	conf = HBaseConfiguration.create(conf);
    	HBaseAdmin admin = new HBaseAdmin(conf);//HBaseAdmin负责跟表相关的操作如create,drop等
    	HTable table = new HTable(conf, Bytes.toBytes("blog"));//HTabel负责跟记录相关的操作如增删改查等

2. 创建表

        if (admin.tableExists("blog")) {
   // 如果存在要创建的表,先删除,再创建  
            admin.disableTable("blog");
            admin.deleteTable("blog");
            System.out.println("blog" + " is exist,detele....");
        }
        HTableDescriptor desc = new HTableDescriptor("blog");
        desc
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值