复习总结04:HBase(含重要原理图!吐血整理HBase存储机制!)

一、HBase概述:
HBase 实质是一个分布式存储系统,搭建大规模结构化存储集群。
实现的目标是:存储并且处理大型的数据,规模可达到成千上万的行和列所组成的大型数据。
①使用hdfs作文件存储系统
运用Hadoo pMapReduce运算框架
③采用zookeeper作 协同服务

优势:
①线性扩展:数据数量增多时,通过节点扩展支撑。
②存储机制:数据存储在hdfs上,完备的数据备份机制。
③查找机制:通过zookeeper协调查找数据,访问速度快。

集群角色:
一个或者多个主节点: Hmaster
多个从节点:HregionServer

备注:启动必须提前启动了Hadoop和zookeeper
HBase依赖zookeeper来

① 保存Hmaster的地址和backup-master地址

hmaster

a) 管理HregionServer

b) 做增删改查表的节点

c) 管理HregionServer中的表分配

② 保存表-ROOT-的地址

hbase默认的根表,检索表。

③ HRegionServer列表

表的增删改查数据。

hdfs交互,存取数据。


补充:关于nosql,not only sql 非关系型数据库,类似的还有(CouchDB, Redis,MongoDB,Riak,Membase,Neo4j,Cassandra)

二、HBase的数据模型
 
Row Key 行键    作为 检索数据信息的主键
Row Key 可以是任意字符串,保存为字节数组。
HBase内部数据存储时,数据表以Row Key 为单位,按照 Row Key 的字典序(byte order)排序存储
访问HBase table的行时,通过三个方式: 通过单个Row Key访问;通过Row Key的range;全表扫描

Columns Family 列族
列族:HBase表中的每个列,都归属某个列族。列族是表的schema的一部分,列不是,必须在使用表之前定义。列名都已列族作为前缀。
举例:courses:history ,courses:math 都属于这个列组。

Cell 数据单元   字节码形式存贮

{row key, columnFamily, version} 唯一确定的单元。

三维确定一个点的数据

数据类型单一:Hbase中的数据都是字符串,没有类型。

Time Stamp  时间戳   64位整型

rowkey columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。

cell不同版本的数据按照时间倒序排序,即最新的数据排在最前面。


时间戳的设置:HBASE(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间;时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

cell过多版本的解决方法:

一是保存数据的最后n个版本;二是保存最近一段时间内的版本(比如最近七天)。可以针对每个列族进行设置。

 

二、HBase常用命令操作:
启动Hadoop---->----启动zookeeper---->---- 启动start-hbase.sh
进入命令行:hbase shell 退出:exit

创建表      create  'test_1',   'row key_1',   'person',    'grade'
查看所有表    list
描述表      describe  'test_1’
添加记录     put   'test_1',   'row key_11', ‘grade : sicence,   '90'

查看表中的记录总数    count  'test_1'
查看所有记录    scan "test_1"  

按照行获取:   get  'test_1' , 'row key_9'       # 查看记录rowkey下的所有数据
获取某个列族:    get   'test_1,   'row key_3',   'grade'        
获取某个cell元素数据:   get   'test_1',   'row key_4',    'grade:math’
按照列族的列查寻:  scan   'test_1' ,  {COLUMNS=> 'grade : math'}      

备注: 扫描获取的所有版本cell,get只获得最新时间戳的cell 
          修改数据,就是再次put一次该cell的值,更新。只是保留了之前的数据而已。

删除记录    delete  'test_1,    'row key_2',   'grade : math'
删除整行    deleteall 'test_1',   'row key_2'
删除一张表    先要屏蔽该表,才能对该表进行删除第一步 disable 'test_1' ,第二步  drop 'test_1'
清空表    truncate 'test_1'

判断表存在    exists  'test_1'
判断是否禁用启用表    is_enabled 'test_1'   /    is_disabled ‘test_1’


三、HBase 的JavaAPI实际项目中利用,平时用命令行查询即可。大型项目上才会用API建立云盘
备注:见项目HBaseTest   或者hbase的API整理。

四、HBase原理

 

hmaster的职责

1、管理用户对Table的增、删、改、查操作;

2、记录region在哪台Hregion server

3、在Region Split后,负责新Region的分配;

4、新机器加入时,管理HRegion Server的负载均衡,调整Region分布

5、在HRegion Server宕机后,负责失效HRegion Server 上的Regions迁移。

hregionserver的职责

HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBASE中最核心的模块。

HRegion Server管理了很多table的分区,也就是region

client职责

HBASE Client使用HBASERPC机制与HMasterRegionServer进行通信

管理类操作:ClientHMaster进行RPC

数据读写类操作:ClientHRegionServer进行RPC



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值