订阅云计算RSS CSDN首页> 云计算

Hortonworks Ted Yu:HBase 1.0及2.0的最新进展

发表于2014-12-13 18:26| 次阅读| 来源CSDN| 0 条评论| 作者周建丁

摘要:Hortonworks资深工程师Ted Yu分享“Recent Developments in Apache Hbase”,介绍HBase1.0和2.0的最新研发进展,主要包括HBase1.0、HydraBase、Phoenix二级索引、Per column family flush的变化。

2014年12月12-14日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中科院计算所与CSDN共同协办,以推进大数据科研、应用与产业发展为主旨的 2014中国大数据技术大会 (Big Data Technology Conference 2014,BDTC 2014)暨第二届CCF大数据学术会议在北京新云南皇冠假日酒店盛大开幕。

在13日的全体大会上,Hortonworks资深工程师、Apache HBase核心贡献者Ted Yu做了主题为“Recent Developments in Apache Hbase”的分享,介绍HBase1.0和2.0的最新研发进展,主要包括HBase1.0、HydraBase、Phoenix二级索引及Per column family flush的变化。据他介绍,HBase1.0的重大变化包括稳定性、可用性、易用性等方面的提升,如Master 嵌入RegionServer。而HydraBase则提供99.99%或者更高的可用性,当一个集群宕掉以后,很快就能以秒级恢复,并且做到不丢失数据,但采用的是不同的方式。

Hortonworks资深工程师、Apache HBase核心贡献者Ted Yu

1、HBase1.0

Ted Yu介绍,Hbase1.0和0.98有很多的不同,体现在Stability、Availability、Usability、Online config等方面。具体如下:

Stability:Co-locate hbase:meta with Master

  • 简化和提升region assignment的可靠性:涉及更少的组件
  • Master嵌入了一个RegionServer,仅加载系统表
  • Backup masters可以被配置加载用户表,代码已经经过初步测试

Availability:Region Replicas

  • Multiple RegionServers host a Region
  • Baby step toward quorum reads, writes

Ted Yu解释,Hbase的好处是提供强一致性,但只有一个RegionServer,很难保证高可靠性,软件自身的Bug,OS、硬件的故障,都可能导致一台机器不能响应。从10070开始,目标之一是提供高可靠性,Region Replicas做的只有一个primary RegionServer,支持写入,其余的都是replicas,设定一个比较短的延迟,这个延迟以内primary RegionServer没有回答,就把请求发给replicas,目标是控制读取的响应,从而同时保证一致性和可靠性。

Usability:客户端API的变化

  • 改进self-consistency
  • 简化语义
  • @InterfaceAudience注解

其中,新的Client API使用示例如下:

Connection conn =

  ConnectionFactory.createConnection(job.getConfiguration());

try {

  UserProvider userProvider =

  UserProvider.instantiate(job.getConfiguration());

  TokenUtil.addTokenForJob(conn, userProvider.getCurrent(), job);

} finally {

  conn.close();

}

Online config的变化:来源于89-FB HBASE-12147

  • 自动调整全局MemStore和BlockCache的大小
  • BucketCache更加易于配置
  • 可插拔复制终点
  • 大大扩展hbase.apache.org/book.html
  • 组合mvcc/seqid
  • 涉及安全性、标签、标签的各种改进

2、HydraBase

HydraBase的目标是个9的可用性,具体包括:

  • 集群级故障不会造成数据丢失
  • 所有故障应迅速恢复(秒级)
  • 分布式的consensus不应该影响写入吞吐量
  • 每个region由一组Region Servers加载

目标需要一步一步地实现,目前主要是Replication Protocol和RMap。

Replication Protocol

  • 一组replicas之间将只有一个leader
  • leader响应client所有读取和写入的请求
  • 将使用RAFT协议来完成leader的选举
  • 每个replica都会有自己的预写日志,存储在本地
  • 写操作将由leader同步复制到replicas

RMAP

  • RMAP包含每个Region的quorum配置信息
  • 基于到client的网络延迟,每个Data Center都将有一个rank
  • 延迟最低的DC将具有最高等级的rank
  • DC-rank排名较高、有quorum member资格的将能够接管领导权
  • 较高等级(DC-rank + machine-rank)的replica将最优可能成为leader

Ted Yu还介绍,HydraBase多集群和单集群部署设置分别如下:



3、Phoenix二级索引

对于很多人关注的二级索引,Ted Yu表示,二级索引用户需求比较复杂,怎么样去满足所有的用户需求还是需要花费相当精力。他介绍,Phoenix索引架构如下:


4、Per column family flush

Per column family flush的进展如下:

  • HBASE-10201来源于0.89-fb分支
  • write amplification降低10%
  • 针对flush size per column family更低的限制
  • FlushPolicy控制是否所有stores被flush
  • 利用每个Store的序列ID

数据模型遇到的问题之一,有大量的column family在一个或者两个column family,甚至有的column family相对冷收不到数据,到现在为止所有的column family都已经一起flush,一致性做起来比较方便,但是有一个问题,比较冷的column family,flush会生成小文件,对系统造成一些压力,即I/O写入放大,所以要降低写入放大。10201有一个指定的FlushPolicy,超过下限column family才做flush,对应于现在的Hbase也有一个,只是对应于比较大的column family。

在10201测试程序运行结果,Per column family flush I/O降低如下图,前面这两个flush对于现有的对column family所有flush,红的是I/O的情况。最后两个是column family,IO写入放大比现有的方式是要低。



0
0