付出,终有回报!
分类: HADOOP
2017-02-27 11:20:46
HBase 的以前实现中,当一台 RegionServer 不可用时,需要数十秒甚至数分钟才可以完成发现和恢复工作,在这段时间内,这台 RegionServer 上的 Region 是不可用的。当一个 Region 不可用时,它需要一段时间才可以被其他 RegionServer 接管。在最新的实现中,一个 Region 可以有多个副本(Region 是数据的管理者,是实际数据的抽象),分布在多个 RegionServer 上,从而提高了系统的可用性,具体原理如下图所示:
由上图可知,region将不再只保存在某一单独的regionserver上,而是选择其他的两个regionserver分别存储该region 的两个备份,这样,某台regionserver挂掉时,客户端仍然可以从其它regionserver上备份的region中读到数据,如此保证了hbase的读高可用,可用性达到了99.99%。
上面设计的特点在于:
1、有一个主region,多个从region;
2、只有主region接收写请求,并把数据持久化到HDFS上;
3、从region从HDFS中读取数据并服务读请求;
4、从region可能会读到脏数据(主region memstore内未flush的数据);
5、读操作可以只读主,或者既可以读主又可以读从(可配置);
这样在主 Region 不可用时,用户仍可以读从 Region 的数据。目前社区在进行的开发:主 Region 异步同步数据到从 Region,从而减少从 Region 缺少的数据量。
数据从客户端写到 RegionServer 上的 Region 后,先写入到内存中,积攒到阈值后写入磁盘,即 LSM-tree 架构。
在以前的实现中,服务端数据从内存刷写到 HDFS 上是 Region 粒度的,Region 下面所有的 Family 都会被 Flush。在很多应用场景中,HBase 中存储的是稀疏数据,在写入一行的数据中,有的 Family 具有值,有的为空,而且不同 Family 中存储的数据大小本身就不同,所以当大的 Family 到达阈值需要刷写数据时,小的 Family 也会跟着刷写,这样会导致很多小文件的产生,影响性能。
在新的实现中,提供了更小粒度的 Flush——Family 级别。它的特点是:
· 更加合理的使用内存的写延迟和聚合功能
· 减少 Compaction 的磁盘IO
· 提高读性能
之前的实现中,RegionServer 上所有操作共享队列,各种操作互相影响。比如Scan 和 Get,在 RPC Call Queue 中,如果一个大的 Scan 请求排列在 Get 之前,那么 Get 就需要等待之前的 Scan 完成才可以执行,延迟较大。
在现在的实现中,RPC 可以具有多个 Call Queue,同时将它们分配给不同的操作使用,从而实现各种 Put、Scan 和 Get 等操作的隔离。
之前的实现中,每次修改配置后都需要重启集群(Rolling Restart)。
现在,调整配置后不再需要重启,但是目前只支持一部分配置的在线调整,如 Load Balance 和 Compaction。Hadoop 也已经实现了此功能。目前社区正在努力实现更多模块的在线配置。
HBase发展到当下,对其进行的各种开发和优化从未停止,在众人的共同努力下,相信HBase的功能会越来越完善,被更多的人关注。
1、李青云. 基于HBase的应用平台的研究与实现. 《北京邮电大学》, 2015.
2、付文静. 基于HBase的大数据存储查询技术研究. 《电子科技大学》, 2015.
3、深入HBase架构解析(一)
http://www.blogjava.net/DLevin/archive/2015/08/22/426877.html
4、HBase2.0的可用性与一致性
http://blog.csdn.net/bryce123phy/article/details/51210931/
5、官方文档
6、Hbase 设计与开发实战
https://www.ibm.com/developerworks/cn/analytics/library/ba-1604-hbase-develop-practice/index.html
7、Understanding HBase and BigTable
8、An In-Depth Look at the HBase Architecture
https://www.mapr.com/blog/in-depth-look-hbase-architecture#.VdMxvWSqqko
9、Apache HBase 2015 年发展回顾与未来展望
https://www.oschina.net/news/69616/review-and-development-of-apache-hbase