HBase学习笔记

Posted

tags:

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

关键类:

HBaseAdmin 管理Hbase的,主要负责DDL操作

HTable 管理表中数据,主要负责DML操作

 

1、为了避免热点,更多的建表方法

在Shell中:

 create tb_splits,{NAME=>cf,VERSION=>3},{SPLITS=>[‘a‘,‘b‘,‘c‘]}
--直接创建多个region的table,每个region的startkey和endkey由参数依次指定,第一个region没有开始startkey,最后一个没有endkey
--rowkey参数的选择必须有意义,才能实现均匀分布,否则分多个region无意义
--多个region可以分布在多个regionserver上,添加数据的时候数据可以均匀分布在region中,实现负载均衡

 

在Java中

hBaseAdmin.createTable(tableDescriptor,Bytes.toBytes(0L),Bytes.toBytes(100L),10);
hBaseAdmin.createTableAsync(tableDescriptor,keyValueArray);

2、原子操作

原子插入(compare-and-set)

hTable.checkAndPut(row,family,qualifier,value,put)

原子删除(compare-and-delete)

hTable.checkAndDelete(row,family,qualifier,value,delete)

3、计数器:

用于实时收集信息,原子操作

在Shell下操作

incr t1,20150226,daily:hits,1
-- t1 表名
--20150226 行健
-- daily是列族
--hits 是列,最后是值
get_counter t1,row_key,daily:hits 

在java中操作

hTable.incrementColumnValue(...)
hTable.increment(increment)

  

HBase的数据格式:

1、Region 存储数据有三部分组成,包括HLog、MemStore、HStore

2、WAL(write-ahead-log),RegionServer共享一个HLog实例。

往region写数据之前,先往HLog里面写数据,同时往MemStore里面写

HLog是为了保证事务,MemStore保证客户端访问速度

*当MemStore文件快满的时候,会合并并写StoreFile写入HDFS;当StoreFile很多的时候,会合并合并为一个大文件

*HBase还有个存储结构,LMS树的文件会不断合并;和一般的索引文件不同,索引一般用B+树结构:宽度非常宽,深度很浅

HFile 是存储数据最根本的,storefile是对hfile的简单封装

以上是关于HBase学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

HBase ProcedureV2 分析

大数据之Hbase:Hbase中的rowkey以及热点问题

Hbase 技术细节笔记(上)

sql sever怎么查看之前的建表语句

HBaseHBase的RK设计避免热点

MySQL查看建表语句