HBase基础以及shell命令实践

    HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。

一.HBase基础

1.数据模型相关概念

1.表:由行和列组成,列划分为若干个列族。

2.行:每个HBase表由若干行组成,每个行由行键来标识。

3.列族:基本的访问控制单元,在创建时就定义好,数量不宜太多。

4.列限定符:列族离的数据通过列限定符来定位。

5.单元格:在HBase表中,通过行、列族和列限定符确定一个单元格。每个单元格可以保存一个数据的多个版本,每个版本对应一个不同的时间戳。

6.时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。

2.数据坐标

        在图4-2中,由行键"201505003"、列族"info"、列限定符"email"和时间戳"1174184620720"这四个坐标值确定的单元格["201505003","info","email",1174184620720],里面存储的值是"you@163.com"。前者相当于一个键,后者相当于一个值。

 

3. HBase的实现原理

3.1HBase的功能组件

HBase的实现包括3个主要的功能组件:库函数,链接到每个客户端;一个Master主服务器,许多个Region服务器。Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。主服务器Master负责管理和维护HBase表的分区信息。

客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。特别地,HBase客户端并不直接依赖于Master、而是借助于ZooKeeper来获得Region的位置信息的。

 

3.2 表和Region

        当表中的行的数量非常大时,无法存储在一台机器上,需要分布存储到多台机器上。需要根据行键的值对表中的行进行分区,每个行区间构成一个分区,被称为"Region",包含了位于某个值域区间内的所有数据,它是负载均衡和数据分发的基本单位。

        Master主服务器会把不同的Region分配到不同的Region服务器上。每个Region服务器负责管理一个Region集合,通常在每个Region服务器上,会放置10~1000个Region。

3.3Region的定位

        每个Region标识符,就可以唯一标识每个Region,一个Region标识符就可以表示成"表名+开始主键+RegionId"。

 

 

客户端访问用户数据之前,需要首先访问ZooKeeper,获取-ROOT-表的位置信息,然后访问-ROOT-表,获得.META表的信息,接着访问.META.表,找到所需的Region具体位于哪个Region服务器。最后才会到该Region服务器读取数据。

4.HBase运行机制

4.1HBase系统架构

        ZooKeeper服务器:每个Region服务器都需要到ZooKeeper中进行注册,ZooKeeper会实时监控每个Region服务器的状态并通知给Master,这样,Master就可以通过ZooKeeper随时感知到各个Region服务器的工作状态。ZooKeeper还会选举一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,避免单点问题。

Master:主服务器主要进行维护表和Region的元数据信息,负载很低。

 

4.2 Region服务器的工作原理

        Region服务器内部管理了一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对应了表中的一个列族的存储。每个Store又包含了一个MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存,保存最近更新的数据,StoreFile在底层的实现方式就是HDFS文件系统的HFile,HFile的数据块通常采用压缩方式存储,压缩之后可以大大减少网络I/O和磁盘I/O。

 

4.3 Store工作原理

        每个Store对应表中的一个列族的存储。每个Store包含一个MemStore缓存和若干个StoreFile文件。MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中。当StoreFile数量达到设定数量就会合并成一个StoreFile文件,当文件大小到达一定阈值就会触发文件分裂。

 

4.4 HLog的工作原理

        如果一个Region服务器发生故障,ZooKeeper会通知Master。Master首先会处理该故障Region服务器上面的遗留的HLog文件,由于一个Region服务器上面可能会维护着多个Region对象。系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别方法哦相应Region对象的目录下,然后再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog的HLog日志记录也发送给相应的Region服务器(重新拆分HLog并发送到新的Region服务器)

二.HBase常见的shell指令

1.create:创建表

1.创建表school,创建多个列族

2.创建表class,列族为classinfo,版本为5.

 

3.创建表 t2,将表依据分割算法HexStringSplit分布在15个Region里。

4. 创建表t1,指定切分点。

 2.list:列出HBase中所有表的信息

3.put:向表、行、列指定的单元格添加数据

向表class中添加行u20160101,列classinfo:classname,添加数据class 1,时间戳为1421822284898.

4.get:通过指定表名、行、列、时间戳、时间范围和版本号来获得相应单元格的值

 获取表class,行u20160101,列classinfo:classname的值

 获取表class,行u20160102,列为classinfo:classname,时间范围在[1544876029000,1544876029900]的数据

 

 5.scan:浏览表的相关信息

         可以通过TIMERANGE、FILTER、LIMIT、STARTROW、STOPROW、TIMESTAMP、MAXLENGTH、COLUMNS、CACHE来限定所需要浏览的数据。

6.alter:修改列族模式

向表class添加列族classmanager。并对列族classmanager添加数据

删除表class中的列族classmanager,并用scan命令检查,下图所示,删除命令与添加列族命令相似,只是多了一个METHOD属性,删除之后,通过scan命令可知classmanager列族不存在。

7.count:统计表中的行数 

 命令:count 表名

8.describe:显示表的信息

 describe 表名

9. disable:使表失效 ,失效之后表存在,但是无法对表进行查询     exists:判断表是否存在   enable:使表有效

 

 

 10.delete:删除单元格数据

11.drop:删除表

注意:删除表之前需要将表失效,否则无法删除

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值