1.基础入门
1.基础概念与理解
1.Hbase的介绍
HBase是一个类似Bigtable的分布式数据库,它是一个稀疏的长期存储的(存储在硬盘上)、多维度的、排序的映射表,这张表的索引是行关键字、列关键字和时间戳,HBase中的数据都是字符串,没有类型。
概括的讲,Hbase可以看做是bigtable的开源山寨版本,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。
高可靠性、便于横向扩展的特性,也是我们项目选择Hbase进行存储的主要原因。
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,适合于存储大表数据,表的规模可以达到数十亿行以及数百万列,并且对大表数据的读、写访问可以达到实时级别。
HBase Master是服务器负责管理所有的HRegion服务器,HBaseMaster并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBaseMaster Server中存储的是从数据到HRegion Server的映射。
2.Hbase架构图
架构拓补图,网络图1
架构拓补图,网络图2
架构拓补图,网络图3
3.Hbase架构组成原理
编号 | 组件 | 原理 | 作用 |
---|---|---|---|
1 | Client | 包含访问HBase的接口并维护cache来加快对HBase的访问 | |
2 | Zookeeper | 保证任何时候,集群中只有一个master存贮所有Region的寻址入口 实时监控Region server的上线和下线信息。并实时通知Master存储HBase的schema和table元数据。 | |
3 | Master | 为Region server分配region。 负责Region server的负载均衡。 发现失效的Region server并重新分配其上的region。 管理用户对table的增删改操作。 | |
4 | RegionServer | Region server维护region,处理对这些region的IO请求,负责切分在运行过程中变得过大的region。 | |
5 | Region | HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会 两个新的region(裂变);当table中的行不断增多,就会有越来越多的region。这样一张完整的表 被保存在多个Regionserver上。 | |
6 | HLog(WAL log) | HLog文件就是一个普通的Hadoop Sequence File(Hadoop序列文件),Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和 region名字外,同时还包括sequence number和timestamp,timestamp是” 写入时间”,sequence number的起始值为0,或者是最近一次存入文件系 统中sequence number。 HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的 KeyValue。 | |
7 | Memstore 与 storefile | 一个region由多个store组成,一个store对应一个CF(列族)store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、 majorcompaction),在合并过程中会进行版本合并和删除工作 (majar),形成更大的storefile。 当一个region所有storefile的大小和超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡。 客户端检索数据,先在memstore找,找不到再找storefile HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的HRegion server上。 HRegion由一个或者多个Store组成,每个store保存一个columns family。 每个Strore又由一个memStore和0至多个StoreFile组成。 |
4.Hbase与Hdfs区别
HBase | HDFS |
---|---|
建立在HDFS之上的数据库 | 适用于存储大容量文件的分布式文件系统 |
提供在较大的表快速查找 | 不支持快速单独记录查找 |
提供了数十亿条记录低延迟访问单个行记录(随机存储) | 提供了高延迟批量处理;没有批处理概念 |
内部使用哈希表和提供随机接入,并且其存储随机索引,可对在HDFS文件中的数据进行快速查找 | 提供的数据只能顺序访问 |