加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

图解HBase--大数据平台技术栈

发布时间:2019-08-01 07:07:31 所属栏目:教程 来源:架构师公社
导读:副标题#e# HBase简介 HBase是一个分布式的、面向列的开源数据库存储系统,是对Google论文BigTable的实现,具有高可靠性、高性能和可伸缩性,它可以处理分布在数千台通用服务器上的PB级的海量数据。BigTable的底层是通过GFS(Google文件系统)来存储数据,而HB

Client使用HBase的RPC机制与HMaster、RegionServer进行通信,Client与Master进行管理类通信,与RegionServer进行数据操作类通信。Client包含了访问HBase的接口,另外Client还维护了对应的cache来加速HBase的访问,比如.META.元数据信息。

RegionServer内部结构

图解Hbase--大数据平台技术栈
  1. WAL:预写日志(Write Ahead Log)。当操作到达Region的时候,HBase先把数据写到WAL中,再把数据写到MemStore中,等数据达到阈值时才会被刷写(flush)到最终存储的HFile中。WAL是一个保险机制,这样在Region的机器宕机时,由于WAL的数据是存储在HDFS中的,可以从WAL中恢复数据,所以数据并不会丢失。
  2. BlockCache:读缓存,用于在内存中缓存经常被读的数据。Least Recently Used (LRU) 数据在存满时会被失效。
  3. Region:Region相当于一个数据的分片。每一个Region都有起始rowkey和结束rowkey,这表示了Region的存储的row的范围。一个RegionServer包含多个Region,一个表的一段键值在一个RegionServer上会产生一个Region。在一个RegionServer中有一个或多个Region。
  4. Store:一个Region包含多个Store,一个列族分为一个Store,如果一个表只有一个列族,那么这个表在这台机器上的每一个Region里面都只有一个Store。Store是HBase的存储核心,一个Store里面有一个MemStore和一个或多个HFile。
  5. MemStore:有序的内存缓冲区,用于缓存还未被持久化到磁盘的数据,在持久化之前会先将数据排序,每个Region的每个列族(Store)都有一个 MemStore。
  6. HFile:真正存在硬盘上的,对数据按照Rowkey排好序的键值对文件。每次MemStore的flush会产生新的HFile文件。

用户写入的数据先写入WAL,然后写入MemStore,当MemStore满了以后会Flush成一个StoreFile(存储为HFile),当StoreFile数量到达一定阈值,会触发Compact合并,将多个StoreFile合并成一个StoreFile。StoreFiles合并后会逐渐形成越来越大的StoreFile,当Region内的所有的StoreFiles的总的大小超过阈值(hbase.hregion.max.filesize)会触发Split操作。会把当前Region Split成两个Region,父Region下线,新Split的两个子Region被Master分配到合适的RegionServer上,使得原先一个Region的压力分流到两个Region上。

Region寻址方式

在进行数据操作的时候,首先要定位需要对哪个Region进行操作,或者从哪个Region上读取数据,因此HBase数据读取的第一步是Region寻址。

图解Hbase--大数据平台技术栈

Region寻址步骤:

  • 首先Client请求Zookeeper,获取hbase:meta表所在的RegionServer的地址(/hbase/meta-region-server)。
  • Client连接hbase:meta表所在的RegionServer,获取需要访问的数据所在的RegionServer地址。Client会将hbase:meta表的相关信息缓存起来,以便下一次能够快速访问。hbase:meta表存储了所有Region的行键范围信息,通过这个表可以查询出你要操作的Rowkey属于哪个Region的范围里面,以及这个Region是属于哪个RegionServer。
  • Client请求数据所在的RegionServer,获取所需要的数据

HBase读写流程

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读