hbase简介
HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式大数据存储系统。具有最理想化的写和极好的读性能。它支持可插拔的压缩算法(用户可以根据其列族中的数据特性合理选择其压缩算法),充分利用了磁盘空间。
如上图所示,它是Google BigTable的开源实现,利用Hadoop HDFS作为它文件存储,利用Hadoop MapReduce处理海量数据,使用Zookeeper进行协调服务。利用HBase技术可在廉价PC Server上搭建起大规模NoSql存储集群。值得一提的是,BigTable只支持一级索引,Hbase不仅支持一级索引,还支持二级索引。
hbase数据结构
逻辑结构
- 表(Table):HBase会将数据组织进一张张的表里面
- 行(Row):每一行代表着一个数据对象,每一行都是以一个行键(Row Key)来进行唯一标识的
- 列族(Column Family):简单理解为对于表一些列的分类,中所有的列都需要组织在列族里面,列族一旦确定后,就不能轻易修改。
- 列标识(Column Qualifier):列名,列族中的数据通过列标识来进行映射;也可以理解为一个键值对,Column Qualifier就是Key。
- 单元(Cell):每一个 行键,列族和列标识共同组成一个单元,存储在单元里的数据称为单元数据。
- 时间戳(Timestamp):默认下每一个单元中的数据插入时都会用时间戳来进行版本标识。
物理模型
系统架构
先来看一下hbase的系统架构
Client:访问HBase的接口,有缓存机制会缓存比如像Region的位置信息等,用以加快HBase的访问,与HMaster(管理类操作)和HRegionServer(读写类操作)通信。
Zookeeper:主要做三件事情,存储-ROOT-表和HMaster的地址,会以临时节点机制感知
HRegionServer的监控状态,Zookeeper还可以避免HMaster的单点问题(可以启动多个HMaster)。
HMaster:可以启动多个HMaster,利用Zookeeper的选举机制防止单点问题,它主要完成一些对Table和Region的管理工作:
(1)为RegionServer分配Region
(2)负责RegionServer的负载均衡
(3)发现失效的RegionSever并重新分配Region
(4)管理用户对Table的增删改查等操作
RegionServer: 主要负责响应用户请求,并向HDFS中读写数据,是HBase最核心的模块儿:
HRegionServer内部包含一些列的HRegion对象,每一个HRegion对应到一个Region,正如上文物理模型中提到,每个Region中又包括多个Store,每个Store又包括一个memStore(内存存储)和多个storeFile(storeFile封装了HFile,存储在HDFS之上)。
用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile,当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除(数据删除时会首先打一个标记但没有真正删除),因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。
当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上
HRegionServer采用WAL(Write-Ahead-Log)机制来实现数据的容错和恢复,这种机制类似于mysql中的Binary Log。每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中,HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。
相关推荐
hbase基础知识介绍
HBASE基础应用的介绍。一个初步认知的pdf。
可以对nosql数据库Hbase有个基础的了解和应用
Hbase基础入门,包学会,包基础理解透彻,可以进一步加强对hbase的理解
这是我学了hbase之后整理的一些简单清晰的内容关于hbase的,hbase速成方法
进公司的第一个课题,内含hbase基础、其数据存储的物理视图、逻辑视图、hbase shell的简单介绍、hbase的架构分析及读写流程、和简单的crud操作,为了讲许多知识可能介绍不是很完全,不懂的可私聊,毕竟同为萌新,...
hbase基础知识介绍powerpoint
01.HBase 基础.pptx
java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行
为解决小文件的存储Hadoop自身提供了两种机制来解决相关的问题,包括HAR和SequeueFile,这两种方式在某些方面解决了本层面的问题,单仍然存在着各自...我们在进行多次的测试实现后最终觉得Hbase合并小文件更为靠谱些,
搭建pinpoint需要的hbase初始化脚本hbase-create.hbase
2-1 HBase简介及其在大数据生态圈的位置 2-2 HBase数据存储模型及与关系型数据库的区别 2-3 Hadoop伪分布式集群安装 2-4 HBase伪分布式集群安装 2-5 HBase基础架构 2-6 HBase阶段小结 第3章 HBase原理与实战 介绍...
hbase基础
hadoop,hbase,zookeeper安装笔记hadoop,hbase,zookeeper安装笔记hadoop,hbase,zookeeper安装笔记
1. HBase有哪些基本的特征? 1 HBase特征: 1 2. HBase相对于关系数据库能解决的问题是什么? 2 HBase与关系数据的区别? 2 HBase与RDBMS的区别? 2 3. HBase的数据模式是怎么样的?即有哪些元素?如何存储?等 3 1...
hadoop jar /usr/lib/hbase/hbase-0.90.4-cdh3u3.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY, catgyname,catgyid1,catgyname1,catgyid2,catgyname2,catgyid3,catgyname3,catgyid4,catgyname4,catgyid5,...
HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...
HBase开发实战,HBase学习利器:HBase实战
hbase架构设计基础
HBase 官方文档.pdf HBase的操作和编程.pdf HBase Cpressr优化与实验 郭磊涛.pdf null【HBase】Data Migratin frm Gri t Clu Cmputing - Natural Sienes .pdf 分布式数据库HBase快照的设计与实现.pdf 【HBase】...