注意文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
:Hbase是依赖zookeeper和hdfs的,需要启动zk和hdfs。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
主要组件
Zookeeper:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
HBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
HDFS:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
HDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用的支持。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Master:(是所有 Region Server 的管理者,其实现类为 HMaster)
- 对RegionServer的操作:
- 监控RegionServer
- 处理RegionServer 故障转移
- 处理 元数据 的变更
- 处理region的 分配或转移
- 在空闲时间进行数据的 负载均衡
- 通过Zookeeper发布自己的位置给客户
- 对于表的操作(DDL)create, delete, alter
RegionServer:(为 Region 的管理者,其实现类为 HRegionServer)
1.负责存储HBase的实际数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
2.处理分配给它的Region文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
3.刷新缓存到HDFS文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
4.维护Hlog文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
5.执行压缩文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
6.负责处理Region分片文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
对于数据的操作:(DML)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
get, put, delete;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Region:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Hlog:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
又称Write-Ahead logs(WAL)预写入日志。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。由于数据要经 MemStore 排序后才能刷写到 StoreFile,但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Store:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
StoreFile存储在Store中,一个Store对应HBase表中的一个列族(列簇, Column Family)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
MemStore:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
写缓存,由于 StoreFile中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 StoreFile,每次刷写都会形成一个新的 StoreFile。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
StoreFile:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以Hfile的形式存储在HDFS的。每个 Store 会有文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
一个或多个 StoreFile,数据在每个 StoreFile 中都是有序的(按照Rowkey的字典顺序排序)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
Hfile:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
可以理解成一种文件格式(其他的文件格式TXT,orc,parquet...),StoreFile是以hfile格式存储的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
数据模型
逻辑结构图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
物理存储结构文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/19080.html
- Name Space
命名空间,类似于关系型数据库的 DatabBase 概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default 表是用户默认使用的命名空间。 - Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column (列)组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。 - Column
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。 - Time Stamp
用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入 HBase 的时间。 - Cell
由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell 中的数据是没有类型的,全部是字节码形式存贮(byte[]数组)。