《HBase企业应用开发实战》—— 1.4 HBase的核心功能模块

简介:

本节书摘来自华章出版社《HBase企业应用开发实战》一 书中的第1章,第1.4节,作者:马延辉 孟鑫 李立松 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 HBase的核心功能模块

Hadoop框架包含两个核心组件:HDFS和MapReduce,其中HDFS是文件存储系统,负责数据存储;MapReduce是计算框架,负责数据计算。它们之间分工明确、低度耦合、相关关联。对于HBase数据库的核心组件,即核心功能模块共有4个,它们分别是:客户端Client、协调服务模块ZooKeeper、主节点HMaster和Region节点RegionServer,这些组件的描述和相互之间的关联关系如图1-3所示。
screenshot

1.4.1 客户端Client

客户端Client是整个HBase系统的入口。使用者直接通过客户端操作HBase。客户端使用HBase的RPC机制与HMaster和RegionServer进行通信。对于管理类操作,Client与HMaster进行RPC通信;对于数据读写类操作,Client与RegionServer进行RPC交互。这里客户端可以是多个,并不限定是原生Java接口,还有Thrift、Avro、Rest等客户端模式,甚至MapReduce也可以算作一种客户端。

1.4.2 协调服务组件ZooKeeper

ZooKeeper Quorum(队列)负责管理HBase中多HMaster的选举、服务器之间状态同步等。再具体一些就是,HBase中ZooKeeper实例负责的协调工作有:存储HBase元数据信息、实时监控RegionServer、存储所有Region的寻址入口,当然还有最常见的功能就是保证HBase集群中只有一个HMaster节点。

1.4.3 主节点HMaster

HMaster没有单点问题,在HBase中可以启动多个HMaster,通过ZooKeeper的Master选举机制保证总有一个Master正常运行并提供服务,其他HMaster作为备选时刻准备(当目前HMaster出现问题时)提供服务。HMaster主要负责Table和Region的管理工作:
管理用户对Table的增、删、改、查操作。
管理RegionServer的负载均衡,调整Region分布。
在Region分裂后,负责新Region的分配。
在RegionServer死机后,负责失效RegionServer上的Region迁移。

1.4.4 Region节点HRegionServer

HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region。HRegion由多个HStore组成,每个HStore对应了Table中的一个Column Family的存储。可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同I/O特性的列放在一个Column Family中,这样能保证读写的高效性。HRegionServer的组成结构如图1-4所示。
如图1-4所示,HStore存储是HBase存储的核心,由两部分组成:MemStore和StoreFile。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore中,当MemStore满了以后会缓冲(flush)成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact操作,将多个StoreFiles合并成一个StoreFile,在合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的Compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。
screenshot

StoreFiles在触发Compact操作后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region分裂成2个Region,父Region会下线,新分裂的2个子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。在HRegionServer意外终止后,HMaster会通过ZooKeeper感知到,首先处理遗留的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应Region的目录下,然后再将失效的Region重新分配,领取到这些Region的HRegionServer在加载Region的过程中,会发现有历史HLog需要处理,因此会将HLog中的数据回放到MemStore中,然后缓冲(flush)到StoreFiles,完成数据恢复。

相关文章
|
存储 Java 分布式数据库
Spring Boot 优雅实现hbase功能
【6月更文挑战第24天】要在 Spring Boot 项目中实现 HBase 和 Memcached 的功能,首先需要理解各自的原理和作用,然后通过实际操作将其集成到 Spring Boot 项目中。
679 6
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
829 0
|
SQL 分布式数据库 数据库
Phoenix(HBase SQL)核心功能原理及应用场景介绍
概况了Phoenix(云HBase SQL) ) 入门到精通系列大多数内容,介绍了核心功能原理,相关生态工具及应用场景
13987 0
Phoenix(HBase SQL)核心功能原理及应用场景介绍
|
存储 算法 大数据
阿里云时空数据库引擎HBase Ganos上线,场景、功能、优势全解析
2018年12月18日,伴随阿里云HBase全新发布X-Pack全托管NoSQL数据库平台,HBase Ganos时空数据库引擎正式上线。HBase Ganos以阿里云飞天操作系统为强大底座,结合云HBase新一代KV、时序、时空、图多模数据综合处理能力以及云上Spark大数据分析计算服务,为迎接在线时空全量大数据应用构筑PaaS(Platform-as-a-Service)平台能力。
6671 0
|
SQL 运维 Java
数据查询的玄铁剑:阿里云HBase二级索引功能解析
HBase原生提供了主键索引,用户可以根据rowkey进行高效的单行读、前缀匹配、范围查询操作。但若需要使用属性列进行查询时,则只能使用filter在查询范围内进行逐行过滤。在扫描范围较大时,会浪费大量的IO,请求RT也无法保证。为此,HBase增强版推出了原生二级索引来解决非rowkey查询的性能问题。
2663 0
数据查询的玄铁剑:阿里云HBase二级索引功能解析
|
分布式数据库 Hbase
HBase read replicas 功能介绍系列
主要介绍HBase 在读可用性这块做的read replica 功能的大概介绍,包括:基本使用,读写流程的大概链路,设计的折中等等。
10118 0
|
存储 分布式计算 Oracle
Hbase迎接电信TB级大数据洗礼之热点网站功能实践
在今年年初的时候联通王志军院长就Hadoop在电信行业的大数据应用谈了自己的经验,随着3G网络的发展中国联通目前运营着世界上最大的CDMA网络,流量运营是中国联通一个重要特点。中国联通3G套餐当中流量占比非常非常大,中国联通3G用户流量使用情况也是非常可观的。那么在3G网络功能中上网冲浪占了很大的比例,去研究用户感兴趣的热点网站成为了行为分析中很有特点的一项功能,联通就可以根据这些网站信息推出增值服务,古人云:大浪淘沙始到金啊!
375 0