Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435656
  • 博文数量: 62
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 740
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-10 21:59
个人简介

付出,终有回报!

文章分类

全部博文(62)

文章存档

2018年(6)

2017年(24)

2016年(6)

2015年(26)

分类: HADOOP

2017-02-27 11:20:46

1、多个 Region 副本(提高可用性

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、从regionHDFS中读取数据并服务读请求;

4、从region可能会读到脏数据(主region memstore内未flush的数据);

5、读操作可以只读主,或者既可以读主又可以读从(可配置);

这样在主 Region 不可用时,用户仍可以读从 Region 的数据。目前社区在进行的开发:主 Region 异步同步数据到从 Region,从而减少从 Region 缺少的数据量。

2Family 粒度的 Flush

数据从客户端写到 RegionServer 上的 Region 后,先写入到内存中,积攒到阈值后写入磁盘,即 LSM-tree 架构。

在以前的实现中,服务端数据从内存刷写到 HDFS 上是 Region 粒度的,Region 下面所有的 Family 都会被 Flush。在很多应用场景中,HBase 中存储的是稀疏数据,在写入一行的数据中,有的 Family 具有值,有的为空,而且不同 Family 中存储的数据大小本身就不同,所以当大的 Family 到达阈值需要刷写数据时,小的 Family 也会跟着刷写,这样会导致很多小文件的产生,影响性能。

在新的实现中,提供了更小粒度的 Flush——Family 级别。它的特点是:

·     更加合理的使用内存的写延迟和聚合功能

·     减少 Compaction 的磁盘IO

·     提高读性能

3RPC 读写队列分离

之前的实现中,RegionServer 上所有操作共享队列,各种操作互相影响。比如Scan Get,在 RPC Call Queue 中,如果一个大的 Scan 请求排列在 Get 之前,那么 Get 就需要等待之前的 Scan 完成才可以执行,延迟较大。

在现在的实现中,RPC 可以具有多个 Call Queue,同时将它们分配给不同的操作使用,从而实现各种 PutScan Get 等操作的隔离。

4、在线调整配置

之前的实现中,每次修改配置后都需要重启集群(Rolling Restart)。

现在,调整配置后不再需要重启,但是目前只支持一部分配置的在线调整,如 Load Balance CompactionHadoop 也已经实现了此功能。目前社区正在努力实现更多模块的在线配置。

HBase发展到当下,对其进行的各种开发和优化从未停止,在众人的共同努力下,相信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

阅读(776) | 评论(0) | 转发(0) |
0

上一篇:HBase的读写

下一篇:磁盘分区表

给主人留下些什么吧!~~