欢迎投稿

今日深度:

HBase原理,

HBase原理,


Point 1:什么是HBase?
HBase是一个分布式的、面向列的开源数据库,HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

Point 2:HBase的底层存储
Hbase需要借助HDFS来作为底层存储

Point 3:
HDFS存取压缩文件,为了存取的文件更多

Point 4:大数据框架
Flume、HDFS——HBASE——Sqoop、MapReduce——Mhout、Pig、Hive

Point 5:HBase的特点
实时读写、高可靠性、高性能、面向列、可伸缩的分布式数据库,主要存储一些非结构化和半结构化的松散数据(列存NoSQL数据库),HBase的一行数据可以很大很大,Row Key 要特短,列族要特长(最多分成两个列族),具有HBase:HMaster、HRegionServer、ZooKeeper(没有的话,HBase跑不起来,缺一不可)三个节点

Point 6:HBase的术语以及组成部分

Row Key 代表行数:有几个Row Key 代表有几行,Row Key 按照字典顺序排序(ASCII),同时只能最多存64KB的字节数据

列族:一个列族可以有百万个、千万个列,列族:列——列是不能单独存在的,前面必须要要有列族,列是可以任意的动态加入的—可以是不同的列,权限控制、存储、调优都是在列族层面进行的,HBase把同一列族里面的数据存储在同一目录下,由几个文件保存

Time Stamp(默认,但并不是绝对):记录单元格,时间戳:用来区分版本,类型是64KB
单元格:坐标定位——Row Key 、列、时间戳,数据存在单元格上,由Row Key、column(列族:列)、version的多维数组组成

HLog:普通的Sequence File ,可以做到一定的数据恢复,但是是短时间的,会定期的清空,一个regionServer存放一个

HRegionServer(HLog——HRegion(以行为单位进行切割的一个连续的数据片段)(Store(真正保存数据的东西,可以有N个Store,由设计表的时候设计的列族的数量决定的)-MemStore——写缓存(内存中的一块存储区域,只能有一个)、StoreFile(存在磁盘的一个文件,可以有N个,但是不能过多,每一次的溢写产生一个StoreFile,写完之后内存清空,一般溢写的系数是0.4——产生一个问题是小文件的存取,占用NameNode内存,把所有的小文件合并(合并的不好的话占用大量的IO,如果全被占用了,就不能向HDFS存取文件了,合并的好的话,插入、查询速度更快)——删除旧版本)——存放到HDFS(HFile,存放在HDFS的位置记录在StoreFile,HFIle的元数据——StoreFile,以多个Block存放)

ZooKeeper:保证任何时候都有一个master,存储所有Region的寻址入口,实时监控HRegionServer的上线和下线信息,实时通知Maseter,存储Hbase的schema和table的元数据

HMaster:为RegionServer分配region,实现RegionServer的负载均衡,发现失效的RegionServer并重新分配HRegion,管理用户对table的增删改

HRegionServer:负责数据的读写,处理对HRegion的io请求,并负责切分运行过程中变的过大的HRegion

HRegion:每个表一开始只有一个Region,随着数据的不断插入,HRegion达到阈值时,产生裂变,table的行不断增多,会有越来越多的HRegion,这样一张完整的表被存在多个HRegionSever上,必须具有起始Row Key和截止Row Key,但是后期在裂变的过程中发生变化,Region的元信息存在ZooKeeper

MemStore:内存中存储文件

StoreFIle:当MemStroe满了之后,会进行溢写,在磁盘上存储

HFile:从StoreFile传输到HDFS中,变成HFile

Point 7:
HBase不支持修改,使用的一种特定的压缩格式,存放在HDFS,HDFS只支持追加,不支持修改

HBase会隔一段时间进行删除(没有固定的时间——合并的时间),实际上只是打标记,用户看不到而已

Point 8:
增加HBase的存储量:增加DataNode。增加Hbase的吞吐量:增加HRegionServer

Point 9:
系统本身占用IO最大的是:裂变(防止裂变,先进行预分区)和合并

www.htsjk.Com true http://www.htsjk.com/hbase/39570.html NewsArticle HBase原理, Point 1:什么是HBase? HBase是一个分布式的、面向列的开源数据库,HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库...
相关文章
    暂无相关文章
评论暂时关闭