[Binospace] HBase隔离技术

背景:

随着HBase在性能和稳定性持续改善和成功案例的积累,HBase逐渐成为了在大数据NoSQL领域的事实标准。越来越多有着大数据应用和处理需求的互联网公司、IT公司,将离线或者半在线的数据平台搭建在HBase之上。

在深入使用和运维过程中,我们发现当新的应用需求而来时,处于性能和效率的考虑,我们就要根据数据规模单独搭建系统,而应用需求和规模的变化,会给HBase的运维和资源使用带来了一定的困扰:

1)HBase集群越多,运维成本就越大。因为稳健的Hbase监控是要从底层存储设备、网络资源、内存、CPU、hdfs、RegionServer到应用服务器读写性能的自下向上的体系,搭建HBase集群的运维开销较大。

2)应用需求的改变,短时间内资源扩容与平衡资源利用率之间存在矛盾。因为需求对于资源需求的变化,可以通过短时间内牺牲非优先的存储性能来平衡。

于是,我们就在考虑构建一种HBase隔离技术,只需维护一个HBase集群,满足各个table在性能上的互不干扰,又支持访问安全隔离。

技术介绍:

HBase按照Table内RowKey进行横向切分成不同的Region,AssignmentManager会把Table的Region按照尽可能的公平性分配到不同的RegionServer上。

AM中LoadBalancer负责Region–>RS的分配和移动,因此,在HBASE_HOME_DIR/bin/graceful_stop.sh的脚本中,如果支持Region reload的选项,会首先关闭balance_switch开关,避免下线的Region被LoadBalancer移动到其它RS。目前LoadBalancer采用的DefaultLoadBalancer采用每个RS上Region个数尽可能平衡的调度策略。

如果实现HBase隔离技术,在AM层面就需要解决如下的问题:

1、实现Table与RS的映射关系。建立类似于RegionServer Group实体(RSG),RS与RSG之间产生对应关系,Table与RSG之间产生映射关系。

  • 借助实现LoadBalancer接口,实现从Table到不同RegionServerGroup的映射。
  • HBase的Coprocessor机制,实现对于RegionServer Group相关信息的管理。具体可以参见下图:
GroupInfoManager维护了<Group,Table> <Group,RS>之间的映射关系,借助于Coprocessor机制的Observer接口,实现从HMaster到GroupInfo信息的管理{增、删、改}。
GroupBasedLoadBalancer重新实现了HMaster的LoadBalancer接口,每次Region的移动都按照Table-Group,Group-RS的方式进行。
 
RegionServerGroup的扩展:
1)针对RSG配置不同的系统参数的功能。RegionServer上不同的参数配置,会影响其Table的性能,如果可以根据区分table的RSG来配置,就可以根据Table的需求进行有针对性的设置。例如对于读性能要求较高的应用,可以设置hfile.block.cache.size稍微大一些,增大Cache在JVM HeapSize所占的比重。
2)提供备用RSG,可以动态调整该分组的RS到资源需求最为紧张的RSG等。该方法需要有一个较为客观公平的资源评估算法,能够快速评估出读写负载与资源分配的平衡性。

2、table配置NameSpace。借助HDFS Federation的概念与方法,实现对于Table的区分、配置、以及访问的ACL。

1)每一个Table都隶属于一个NameSpace之下,每个NameSpace都有自己的Quota信息。例如Region的个数、hfile存储空间、甚至HBase之上的RPC的流量控制等。

2)每一个Table对应一个ACL,可以建立在ColumnFamily或者更细粒度的Column上。

例如 /hbase/data/binospace/binospace.webdata ,其中/hbase是root,data代表了这是普通的数据表,而非系统表,binospace是用户的NameSpace,而webdata是具体的表名。

使用类似目录层次的方式来管理hbase的Table的好处有:

1)hdfs或者文件系统在目录层次的管理上有成熟的方案。

2)以目录结构为特征的ACL、Quota等配置更有效。

 总结:

在当前HBase应用不断发展,Snapshot、Replication、Block Encoding、Random Read Performance、Secondary Indexing 以及本文提到的Isolation都是摆在HBase高级用户或者二次开发面前的难题。隔离技术决定了HBase能否实现资源统一化管理的关键。本文介绍的RegionServerGroup和NameSpace技术,目前看来是实现隔离的一种比较有效的方案。

 参考文档:

[1]RegionServer Group https://issues.apache.org/jira/browse/HBASE-6721

[2]NameSpace https://issues.apache.org/jira/browse/HBASE-8015

[3]Hug2013April HBase-As-a-Service-At-Yahoo! http://www.slideshare.net/ydn/april-2013-hug-hbase-as-a-service-at-yahoo

原创文章,转载请注明: 转载自 Binospace

本文链接地址:  http://www.binospace.com/index.php/the-hbase-isolation-technology/

 

文章的脚注信息由WordPress的wp-posturl插件自动生成

猜你喜欢

转载自57832638.iteye.com/blog/2024418