HBase简介

HBase是一个分布式的、面向列的开源数据库,源于Google的BigTable。它是Apache Hadoop项目的一部分,适用于大规模数据存储。文章介绍了HBase的基础概念,包括hMaster、zooKeeper和regionServer,以及其数据模型、系统架构和特性,强调了其强一致性和水平扩展性。此外,还提到了HBase的读写优化、WAL(Write-Ahead Log)和BlockCache机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Google三驾马车

GFS
MapReduce
  • 超大集群的简单数据处理、大数据并行处理技术
    百度百科:https://baike.baidu.com/item/MapReduce
  • 矢量编程语言:
    如:Matlab,矢量(向量)操作,避免for循环。联想map映射过程,map是对列表中每个元素做计算(具体的计算通过传入的函数来实现)。
  • 函数式编程:https://baike.baidu.com/item/函数式编程
    接收函数作为参数。不修改变量,无需考虑死锁。联想reduce合并过程,reduce是对列表中每个元素做迭代计算。
  • 备注:Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。
BigTable

HBase(CP而非AP)

HBase是分布式的、面向列的开源数据库,是BigTable的实现。
百度百科:https://baike.baidu.com/item/HBase/7670213?fr=aladdin

基础概念
  • hMaster
  • zooKeeper
  • regionServer
  • region
    一行数据只在一个region上,没有副本。
    其在faceBook分支下2T大小,阿里分支下64G大小。
  • root and metaTable
  • compact and split
数据模型
  • table(联想mysql的表)
  • rowKey(联想mysql的行主键)
  • region(区域,联想mysql多行集合)
    当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示。
    不同region会被Master分配给相应RegionServer进行管理。
  • store(column family、列族,联想列集合,列以类聚)
  • Qualifier(column、列)
  • time stamp(时间戳,数据版本标识)
  • cell(单元数据,由rowKey、column family+column、time stamp唯一确定)
  • Key Type(Put/Delete)
  • block
    Data Block是hBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制。每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询。
    hBase上RegionServer的cache主要分为两个部分,分别是memStore&blockCache,其中memStore主要用于写缓存,而blockCache用于读缓存。
  • magic
    每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏。
系统架构
  • zooKeeper
    Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。
  • hMaster
    HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作
  • hRegionServer
    一个regionServer上共用一个hLog。
    HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
  • hRegion
    一个hRegionServer内部管理多个hRegion对象。
    hRegion对应table中的region的存储。
    一个hRegion由多个hStore组成。
    hStore对应table中的column family的存储。
    每个column family是一个集中的存储单元,相同IO特性的column应该放到一个column family中,读写更高效。
  • hStore
    hStore作为hBase存储的核心,由两部分组成。
    分别是:memStore和storeFiles。
    MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)。
    当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上。
  • hLog
    WAL:write ahead log
    WAL默认在HDFS上有3份副本。
特性(原子性、一致性、独立性、持久性、可见性)
  • 水平线性扩展性
    性能和存储随着节点的增加而增加。
  • 强一致性
    读写一致性(读、写两阶段)
  • 原子和可配置的切分表
  • 自动容错
  • 方便的运行map reduce
  • 容易使用Java API
  • 可满足实时读写响应(读命中缓存1毫秒,随机读几十毫秒,写2到3毫秒)
  • 可扩展接口
理解
  • 不严格的说,hBase是针对HDFS的一层包装。Hive是针对mapReducer的包装。
    hBase是数据库。
    Hive是数据仓库。数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

hBase笔试题:https://www.cnblogs.com/cxchanpin/p/7381890.html

hBase读写优化:http://www.imooc.com/article/268430

hBase WAL简介:https://www.jianshu.com/p/65cb8cd81f40

hBase BlockCache机制讲解&源码分析:https://blog.youkuaiyun.com/bryce123phy/article/details/62051927

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值