Hbase 第二节课 hbase的javaAPI使用

目录

Hbase->BigTable

一个列族对应一个Store

HBase三维有序

javaAPI操作

1、数据库(DataBase)

2、表Table

3、列族(Column Family)

4、列修饰符(Column Qualifier)

1、创建一个配置文件

2、创建连接

3、如果需要对表结构操作 则getAdmin,对数据进行操作,则getTable

4、创建 testAPI表

HBase的特点

RowKey:

列簇:

时间戳:

Cell:

Compaction操作:

minor compaction:

major compaction:



Hbase->BigTable

Hbase系统架构

一个列族对应一个Store

Store分为,n个StoreFile,1个MemStore(内存)

HLog日志:负责容错,写memstore前先写HLog,属于HRegionServer

Master修改表,不影响读写

Memstore与storefile

store分为,ms和sf

ms到达128m时,会写成一个sf

当一个region所有storefile大小数量超过一定阈值以后,会把当前的region分割为两个

由master分配到相应的regionserver服务器,实现负载均衡

客户端查找数据,现在memstore,找不到再找storefile

HBase三维有序

按照KV存储

Row Key和列簇时间戳确定一个cell

Row key唯一标识 一行数据

按照字典顺序排序

Row key只能存储64k的字节数据

创建表的时候必须至少有一个列族

Column Family(列族)

qualifier(列)

{row key,colunm(=+),version}确定一个单元cell中的数据没有类型,全是字节码形式存储

HLog:Hadoop Sequence File

javaAPI操作

1、数据库(DataBase)

HBaseAdmin

HBaseConfiguration

2、表Table

HTable

3、列族(Column Family)

HTableDescriptor

4、列修饰符(Column Qualifier)

Put

Get

Scanner

类:org.apache.hadoop.hbase.client.HBaseAdmin

作用:提供了一个接口来管理HBase数据库的表信息。它提供的方法包括:

创建表,删除表,列出表,使表有效或无效,以及添加或删除表列族成员

1、创建一个配置文件

Configuration conf = HBaseConfiguration.create();

配置ZK地址,通过ZK可以找到HBase

conf.set("hbase.zookeeper.quorum", "master:2181,node1:2181,node2:2181");

2、创建连接

Connection conn = ConnectionFactory.createConnection(conf);

3、如果需要对表结构操作 则getAdmin,对数据进行操作,则getTable

Admin admin = conn.getAdmin();

4、创建 testAPI表

HTableDescriptor testAPI = new HTableDescriptor(TableName.valueOf("testAPI"));

并指定一个列簇cf1

HColumnDescriptor cf1 = new HColumnDescriptor("cf1");

给testAPI表增加一个列簇

testAPI.addFamily(cf1);

创建testAPI表

admin.createTable(testAPI);

关闭连接

admin.close(); conn.close();

HBase的特点

1、大,一个表可以有上亿行,上百万列

2、面向列,面向列族的存储和权限控制,列独立检索

3、稀疏,对于为空NULL的列,并不占存储空间,因此,表可以设计的非常稀疏

4、无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列

5、数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳

6、数据类型单一:HBase中的数据都是字节数组,没有类型。

RowKey:

主键,访问HBase table只有三种方式:

直接通过单个RowKey

指定RowKey的范围

还可以指定跟RowKey有关的正则表达式等方式去访问

最大64kb,按照字典顺序

列簇:

建表时至少指定一个,列归属某一个列簇

HBase再存储、权限控制、版本控制都是在列簇层面上进行

一个列簇对应一个store

时间戳:

版本的概念,插入数据都会记录时间,64位整型

按时间戳倒序

Cell:

Cell是由{row key,column(=+),version}唯一确定的单元

Cell中的数据是没有类型的,全部是字节码形式存储

Region的分裂策略:

region中存储的是一张表的数据,当region中的数据条数过多的时候,会直接影响查询效率。当region过大的时候,region会被拆分为两个region,HMster会将分裂的region分配到不同的regionserver上达到负载均衡。

Compaction操作:

minor compaction:

指选取一些小的,相邻的storefile将他们合并成一个更大的storefile,在这个过程中不会处理已经Deleted或Expired的cell,一次Minor Compaction的结果是更少并且更大的StoreFile。

major compaction:

指将所有的StoreFile合并成一个storefile,这个过程会清理三类没有意义的数据:被删除的数据、TTL过期数据、版本号超过设定版本号的数据,另外,一般情况下,major compaction时间会持续比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响,因此线上业务都会将关闭自动触发major compaction功能,改为手动在业务低峰期触发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值