Hadoop之HBase

来源:互联网 发布:淘宝公仔12星座 编辑:程序博客网 时间:2024/06/05 20:33

什么是HBase

HBase是开源实现的一个NoSQL分布式数据库

实时的Key-Value数据库

基于HDFS存储

基于列存储,高可靠,高性能


什么时候用HBase

数据足够多

不需要依赖于RDBMS的一些特性


HBase逻辑结构


HBase中没有数据类型,全是byte[],包括KEY

RowKey:记录主键,可通过单个KEY,范围,全表扫描,HBase按表主键升序排序,所有表必须有主键

列簇:表中的每一列都必须有一个列簇,列簇是表的schema的一部分

时间戳(版本):每个CELL的同一份数据的多个版本,通过时间戳来索引。是一个长整型,默认当前时间戳

Cell:用于确定一个唯一的单元


HBase体系物理结构


Zookeeper:保证只有一个Master,存储所有Regiondizhi,RegionServer状态,以及存储HBase的字典信息

Master:分配Region,负责RegionServer的负载均衡,处理失效的RegionServer,处理Schema更新请求

Region Server:响应用户IO请求,实际的存储数据,由多个HStore组成

MemStore/StoreFile:HBase数据

HLog:Write Ahead Log


HBase表物理结构

Table由Region组成

Region是分布式存储和负责的最小单元

Region是最小分布单元但不是最小存储单元,Store,一起访问的数据放在一起,即一个ColumnFamily

Store由MemStore,StoreFile构成,StoreFile就是Hfile

Hfile包括:Date block,meta block,File info,DataBlock index,Meta  block index,Traller


HBase操作

DDL

create 建表:create ‘表名’,‘列族1’,‘列族2’……

describe 查看表结构

disable/drop 删除表

alter 更改表属性和表结构

alter ‘t1’,'f5' 直接在表上增加列族

alter 't1','delete' =>'f1' 删除列族

list 查看有那些表


DML

put 插入数据:put'表名',‘key’,‘列’,‘value’

get 查找数据:get'表名','key','列'

‘表名’,‘key’,{column=>'列',timestamp=>..}

scan 扫描全表数据:scan‘表名’

scan 't1', {COLUMNS=>['c1','c2'],LIMIT=>10,STARTROW=>'xyz'}

count 统计表行数:count'表名'

delete 删除一行: delete '表',‘KEY’,‘列’

truncate 清空一个表:truncate‘表’

0 0