D16 HBase数据模型/命令行/存储机制

一、Hbase的数据模型

       分析Hbase的数据格式:之前讲过小米的云盘就是基于Hbase,与hive和mysql不同就是在于可以增删改查,更加方便,因此更适用于小米云盘的用户数据的增删改查。下面是Hbase的数据格式,只有明确了数据格式才会对其数据进行操作。
 
  

在Hbase中真实存储物理逻辑表格如下:

row keytime stampinfo列族1:nameinfo列族2 : passwordinfo列族3info列族4info列族5……info列族n
123411500455547900
password:\x00\x00\x00\x0D





1500455547899name:wangwu1





123421500455547899name:wangwu2password:\x00\x00\x00\x0E





1500455547898

a



……







1234n








实质上,可以看作是三维的数据表格
①row key:行键值。很显然这里完全就是一个用户的唯一ID;当新创建用户时,就会在此Hbase中创建一个row key,其子表格也就是该用户下的所有数据内容!
②time stamp:时间戳。记录每次修改的时间点,精确到毫秒ms。
③Columns Family:列族。info.即该用户的所有数据分类,可想而知列族对于一个用户来说是很多的。手机号,密码,身份证号,文件的索引信息。
④cell:即那个数据点。由 {row key, columnFamily, version} 三维 唯一确定的单元。 cell 中的数据是没有类型的,全部是字节码形式存贮。


备注:
row key所代表的子表格叫做一行数据,访问行只能从rowkey出发,要想知道该用户的性别,先查到该用户。所谓的可以增删改查,并且带有时效性,就是有了时间戳,每次数据操作都有记录。

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

为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段 时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。例如:设置新密码的时候显示,不能使用您最近使用的密码。

for循环添加数据,认定是一同添加,时间戳一样!
列族中的参数可以不同,但是相同的话,数据更具有结构化!

通过zookeeper来查找数据,访问速度快。java客户端只配置了zookeeper的地址server02;server03!!!

二、Hbase shell常用命令

①创建新表,添加文件:
create table 'Test' , 'c1_info' , 'c2_info' , 'c3_info'
put  'testAjl' 'row_1' 'c1_info:a' 'value1'
put同一个cell的数据会覆盖掉之前的数据。

创建表

create '表名', '列族名1','列族名2','列族名N'

查看所有表

list

描述表

describe  ‘表名’

判断表存在

exists  '表名'

判断是否禁用启用表

is_enabled '表名'

is_disabled ‘表名’

添加记录      

put  ‘表名’rowKey‘列族 列‘  ,  ''

查看记录rowkey下的所有数据

get  '表名' , 'rowKey'

查看表中的记录总数

count  '表名'

获取某个列族

get '表名','rowkey','列族'

获取某个列族的某个列

get '表名','rowkey','列族:列’

删除记录

delete  ‘表名’ ,‘行名’ ‘列族:列'

删除整行

deleteall '表名','rowkey'

删除一张表

先要屏蔽该表,才能对该表进行删除

第一步 disable ‘表名’ ,第二步  drop '表名'

清空表

truncate '表名'

查看所有记录

scan "表名"  

查看某个表某个列中所有数据

scan "表名" , {COLUMNS=>'列族名:列名'}

更新记录

就是重写一遍,进行覆盖,hbase没有修改,都是追加


三、Hbase的体系架构


Client:包含访问HBase的接口并维护cache来加快对HBase的访问

Zookeeper:保证只有一个master;存贮所有Region的寻址入口;实时监控Region server的上线和下线信息;存储HBase的schema和table元数据

Master:为Region server分配region ;负责Region server的负载均衡;发现失效的Region server并重新分配其上的region ;管理用户对table的增删改操作。

RegionServe: Region server维护region,处理对这些region的IO请求; Region server负责切分在运行过程中变得过大的region


HLog(WAL log): HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是 HLogKey对象。

HLogKey中记录了写入数据的归属信息,除了table和 region名字外,同时还包括sequence number和timestamp,timestamp是” 写入时间”,sequence number的起始值为0,或者是最近一次存入文件系 统中sequence number。

HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的 KeyValue


Memstore 与 storefile:一个region由多个store组成,一个store对应一个CF(列族)store包括位于内存中的memstore和位于磁盘的storefile。

写操作先写入 memstore,当memstore中的数据达到某个阈值,hregionserver会启动 flashcache进程写入storefile,每次写入形成单独的一个storefile;当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、 major compaction),在合并过程中会进行版本合并和删除工作 (majar),形成更大的storefile。

当一个region所有storefile的大小和超过一定阈值后,会把当前的region 分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡。

客户端检索数据,先在memstore找,找不到再找storefile

HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的HRegion server上。

HRegion由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。

Region :HBase自动把表水平划分成多个区域(region),每个region会保存一个表 里面某段连续的数据;每个表一开始只有一个region,随着数据不断插 入表,region不断增大,当增大到一个阀值的时候,region就会等分会 两个新的region(裂变)。regionserver来负责切分;

当table中的行不断增多,就会有越来越多的region。这样一张完整的表 被保存在多个Regionserver上。

如图:StoreFile 以HFile格式保存在HDFS上。

             

关于写!!

A:写操作流程

   1、 clienthregionserver发送写请求。

   2、 hregionserver将数据写到hlogwrite ahead log)。为了数据的持久化和恢复。

   3、 hregionserver将数据写到内存(memstore

    4、 反馈client写成功。


B数据flush过程

   1、 memstore数据达到阈值(默认是64M,将数据刷到硬盘,将内存中的数据删除,同时删除Hlog中的历史数据。

   2、 并将数据存储到storeFile文件中,放到hdfs上

    3、 hlog中做标记点。


C:数据合并过程

    1、 当数据块达到4块,增长到阈值,hmaster将数据块加载到本地,进行合并

    2、 当合并的storeFile文件数据超过256M,进行拆分,将拆分后的region分配给不同的hregionserver管理

          3、 hregionser宕机后,将hregionserver上的hlog拆分,然后分配给不同的hregionserver加载,修改.META.

          4、 注意:hlog会同步到hdfs上。


备注:一句话总结:写过程,先写memstore,64M后写到storeFile里存在hdfs上,再64M,64M,64M,……256M后合并。超过256M后拆分成两个region,原regio下线。


关于读!!!

 D:hbase的读流程

    1、 通过zookeeper-ROOT- .META.表定位hregionserver

    2、 数据从内存和硬盘合并后返回给client

    3、 数据块会缓存。

① 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使用HBASE的RPC机制与HMaster和RegionServer进行通信

管理类操作:Client与HMaster进行RPC;

数据读写类操作:Client与HRegionServer进行RPC。



四:MapReduce操作Hbase



打开hbase,eclipse中运行即可,程序里规定了zookeeper寻找两个子节点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值