大数据复习笔记——hbase

一、Hbase

1、Hbase的介绍

HBase是Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库 LSMTree。
利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务。

2、Hbase的组件及其作用

a)Client

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

b)zookeeper

保证任何时候,集群中只有一个活跃master
存贮所有Region的寻址入口。
实时监控Region server的上线和下线信息,并实时通知Master。

c)Master

为Region server分配region。
负责Region server的负载均衡。
发现失效的Region server并重新分配其上的region。

d)RegionServer

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

e)Region

HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据 (每条记录都有一个行键,按照行键字典序排列)
每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region(裂变)
当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。

3、Hbase读写流程

a)LSM树

数据首先会插入到内存中的树,为了防止数据丢失,写内存的同时需要暂时持久化到磁盘即输入数据时数据会以完全有序的形式先存储在日志文件中(对应HBase的MemStore和HLog)。当日志文件被修改时,对应的更新会被先保存在内存中来加速查询。

当内存中树的数据达到阈值时,会进行合并操作。合并操作会从左至右遍历内存中的叶子节点与磁盘中树的叶子节点进行合并,当合并的数据量达到磁盘的存储页的大小时,会将合并的数据持久化到磁盘。同时更新父亲节点对叶子节点的指针。

查询时先查找内存中的存储,然后再查找磁盘上的文件。这样在客户端看来数据存储文件的位置是透明的。

b)写流程

1.Client访问ZK,根据ROOT表获取meta表所在Region的位置信息,并将该位置信息写入Client Cache。

2.Client读取meta表,再根据meta表中查询得到的Namespace、表名和RowKey等相关信息,获取将要写入Region的位置信息,最后client端会将meta表写入Client Cache。

3.Client向上一步HRegionServer发出写请求,HRegionServer先将操作和数据写入HLog(预写日志,Write Ahead Log,WAL),再将数据写入MemStore,并保持有序。

4.当MemStore的数据量超过阈值时,将数据溢写磁盘,生成一个StoreFile文件。
当Store中StoreFile的数量超过阈值时,将若干小StoreFile合并(Compact)为一个大StoreFile。
当Region中最大Store的大小超过阈值时,Region分裂(Split),等分成两个子Region。

c)写流程

1.当用户向HRegionServer发起HTable.put(Put)请求时,其会将请求交给对应的HRegion实例来处理。

2.第一步是要决定数据是否需要写到由HLog类实现的预写日志中。WAL是标准的Hadoop SequenceFile,并且存储了HLogKey实例。这些键包括序列号和实际数据,所以在服务器崩溃时可以回滚还没有持久化的数据。

3.一旦数据被写入到WAL中,数据就会被放到MemStore中。同时还会检查MemStore是否已经满了,如果满了,就会被请求刷写到磁盘中去。刷写请求由另外一个HRegionServer的线程处理,它会把数据写成HDFS中的一个新HFile。同时也会保存最后写入的序号,系统就知道哪些数据现在被持久化了。

4、Hbase搭建模式

1.独立模式
一台节点上,不使用HDFS,使用本地文件系统,在同一个JVM中运行所有Hbase的进程和本地的zookeeper。
2.伪分布式
伪分布式模式只是在单个主机上运行的完全分布式模式。伪分布模式意味着HBase仍然在单个主机上完全运行,但每个HBase守护程序(HMaster,HRegionServer和Zookeeper)作为单独的进程运行。
3.完全分布式
在分布式配置中,群集包含多个节点,每个节点运行一个或多个HBase守护程序。其中包括主要和备用Master,多个Zookeeper节点和多个RegionServer节点。
规划如下:

NodeName Master zookeeper RegionServer
node1 yes no no
node2 backup yes yes
node3 no yes yes
node4 no yes yes

这里不再讲解搭建的具体操作,如有需求可以私信或者参考一些大牛的博客

5、

你可能感兴趣的:(大数据复习笔记——hbase)