2013-09-19 00:35:00
来 源
中存储网
HBase
Apache HBase项目管理委员会主席Michael Stack对HBase的历史、现在和未来。HBase在2014年的演进,包括HBase 1.0.0,Multi-WAL,speculative replica read,更多的支持multe-tenancy,以及off-heap。

中国最具影响、规模最大的大数据领域盛会—— 2013中国大数据技术大会(Big Data Technology Conference,BDTC)于2013年12月5-6日在北京举行。数十家领军企业,近七十场主题演讲,不仅覆盖Hadoop生态系统与流式计算,实时计算与NoSQL、NewSQL等技术方向,还对互联网、金融、电信、交通、医疗等创新案例,大数据资源的法律法规、大数据商业利用的政策管制等有深入讨论。

在12月5日进行的全体会议上,Apache HBase项目管理委员会主席Michael Stack对HBase的历史、现在和未来。HBase在2014年的演进,包括HBase 1.0.0,Multi-WAL,speculative replica read,更多的支持multe-tenancy,以及off-heap。

                       图:Apache HBase项目管理委员会主席Michael Stack

以下为演讲实录:

大家好,首先我要感谢组委会给我这个机会在这里发言,谈一谈Apache HBase做的事情,刚才上午谈到大数据堆栈的事情。首先我做Apache HBase项目的主席已经有一段时间了。这是我今天要谈的,主要从宏观角度谈谈HBase是什么,之后会谈谈它现状未来以及未来开源项目的发展状况。最后也会稍微谈谈整个生态系统。

HBase是一个开源的分布式的,可扩展的,高一致性,低延时,非关系数据库。HBase是基于Apache Hadoop,核心为分布式文件系统和MapReduce。

我们目标就是希望在商品级硬件中运行。Apache HBase想法来自于2006年谷歌的一个论文。我们首先在2007年开始是用Apache HBase。如果你仔细看一看HBase获得了包括英特尔在内的许多企业的贡献。

数据模型简单说一下,在HBase里面这里有一个表,这是一个大表,有行有列,列都是不同的类型。这有它的主键,列得有不同的元素。列你创建这个表格的时候,首先要告诉它主要的属性是什么,多少列,然后之后还可以再增加列。这里可以看到它在整个的集群当中可以分拆,可以看到这里可以有不同的集群部分,这样的话在读写部分还可以扩大一些规模。所有这些数据都是Bytes,但是你要想归类的话就得自己做了。并且刚才我也提到我们基本上由列组成的这个表格,我们有比较小表格组合的机制,在HBase所有都是经过排序的,是按照字母排序的,列、行都是排过序的,以3D的形式显示,以时间的顺序排的,如果特意规定我们自己按时间的顺序排,可以看到这是一个3D的效果图。当然这里有很多不同更新的版本,然后它会给你自动的显示出来。HBase一个核心的特性就是它的一致性很强,然后一致性比可用性在我们这里更需要一些,它只会显示你写的一些东西。让我们能够保证在一行当中,你比如说你这个行里面有一百万列,你要更新其中的10万个,我们能够保证这10万个更新,你要么都看到,要么一个都看不见,这是HBase能保证的。

谈一下架构,当然在最下面就是HDFS,可以对HBase的表格进行分类,另外也可以进行利用查询预测一下通过服务器端的筛查器给进行的推荐,另外我们还有协同的处理器,这里面非常关注于安全性。比如说他们可能有一些相关能够推出垃圾邮件等特点。看一下API,这里面可能有接收,有推送,有接受,扫描,还有不同运营的方式,或者是运行的这种方式。当然要看一下你数据级到底是什么,然后看一下你进行什么样的卸载,一般来讲每分钟写一千到两万次,每个节点每秒都能写一千到两万次。

到底谁使用了HBase?我们看一下这张幻灯片,他们都是使用这些相关的技术获取相关的数据。比如说华为,华为很长期使用我们产品,淘宝也是很长期使用我们的技术。

现在我们看一下相关的产品以及我们的安装,我们有一些应用在Facebook里使用的,你在Facebook发一个邮件,或者你转帖了什么样的内容,这个都是基于HBase的集群的。我们用户都是超过一百多万个了,涉及到成千上万个不同的机器。我们使用了Users,这个有很多集群进行支持的,这样我们可以进行更好的更新,以及在整个期间都是没有什么问题的。我们看一下Pinterest,他也是使用AWS,每个月PV达到十亿,已使用5个生产集群,而且这个数字在不断的增长。

Flurry给你手机应用上有服务报告的程序,我们知道他有两个集群,每个集群有一千个节点,Flurry是我们HBase长期的用户,他们可以进行相关内容的报告,他们有单独的一个低延时的集群,也就是说一秒钟的时候达到一个M的读取。再来看一下Cassini,Cassini在搜索索引这块进行了我们的应用。在他们前端可能会有各种不同的数据的来源,所以他们也是都把它们进行了进一步的应用,放在他们搜索的索引当中。

我们看一下不同的部署的类型,实际上有时候我们有不同数据的需求,它相关的部署类型不一样,或者特点也是不一样的。另外也有Facebook,比如说像在Facebook以及在他们销售人员当中会使用这样的功能叫时间的序列。另外还有其他很多公司都是使用了我们相关的应用。到底这个项目是谁来做的?我们来看一下这张幻灯片,这里面包括了一个团队,这个团队都是在HBase进行了相关的努力和工作。对于HBase来讲我们也有不同的开发人员,但是我们现在正在鼓励有一些新的人员新的团队,如果你对这些非常感兴趣你可以会后都找我,我们非常欢迎新的团队能够加入我们。

我们再看几个幻灯片就是关于开发的一些内容。我们现在是更加的开放的,所以我们可以看到在这块我们需要一些帮助的,这张幻灯片非常有意思,因为它给我们展示是随着时间的承诺我们做的commits。

我们看一下HBase今天是什么样子的?0.94现在性能稳定,0.96会很快的出来。上一个月的时候刚刚推出0.96.0,我们有一些新主题希望它更稳定,操作性更强,我们希望开发相关不同的工具,希望能够对它进行规模化,这个问题能够实现它进一步的开发,我们希望HBase的开发人员也是进一步的参与到整个系统开发里面,这是我们一些样品。我们里面是有一些可以插入的这样一些插件。我们触发器也是变得越来越智能了。还有我们地区的平衡器,Hadoop1、Hadoop2,还有更加智能的地区的平衡器,有一些地区的平衡器我们需要对它的地点进行进一步的识别,另外还有一些区域的复制或者是安排等等。

在之前的时候我谈到我们要保持一致性,但是我们现在有的时候因为我们在离线的时间也是越来越少了,我们希望也是能够实现离线之后再恢复这样一些相关工作。如果我们一旦离线我们再上线我们希望数据尽快的进行恢复,这方面工作我们也在进行努力,这个可能需要一点时间了,因为我们集群被中断以后必须花一定时间进行修复,然后让集群知道,让集群必须要醒过来,因为数据可能被移到另外一个新的地点,所以说这样的一个窗口是我们现在正在努力进行的工作。如果说要是说我们整个阶段各个不同的时间缩短,整个恢复的时间都会缩短了。这是一个其他的问题,看起来没有很大问题,但是我们也在进行这个方面的努力。

还有HBase我们在序列化这块也做相关的工作。有时候我们必须要进行手写,你出去再回来可能要进行手写,可能每一个开发人员所做的工作是不一样的,这样的话我们进行维护再进行进一步的开发可能比较困难,有时候可能会出现这种问题,我们看一下这个集群怎么样实现序列化,整个序列化的时间可能花得比较长,我们必须将我们系统表格进行改变,以及我们文件的系统也必须要改变,这个ZooKeeper上面也有一定的改变,进行协议的改变,有时候某一个地方出现问题,进行序列化,每一个地方发生变化在另外一个地方也需要序列化,这个可能需要一定的时间。这是NameSpaces,还有HBase,这是基于集群的。我们想了解谁到底在正在做什么?我们非常关注NameSpaces的安全性和对于NameSpaces分组的题  。对于0.96版来讲还有更多的事情要做,一个跨行地区内的交易等等,还有我们查询的追诉,还有新的UI,还有在线地区的整合,还有在客户端的输入。来看一下0.98版我们会非常快的发布,现在主要在英特尔来做,这里面我们要非常关注安全性,可视性标签也非常重要。所以说如果某人看表里面相关的数据,这个数据就应该让他知道是什么意思。

我想说明年我们会花一定的时间就能基本完成了。所以这是我们相关的工作。我们对于tenancy有更多的支持。可能有的时候我们有不同的用户,他们可能都在一个集群上运行,所以说我们对于多的用户同时使用的时候给他们提供更多的一个支持,所以这个方面我们还有更多这方面应用。

再来看一下生态系统,有一些非常有意思的应用现在我们开始应用了,一个是OpenTSDB,这个系统可以让我们实现timeseries,也可以将timeseries叠加,我们可以将不同的请求进行连接,我们可以更好的应答客户的查询。有时候我们timeseries可能有时间的累计,一个月等等,在你数据库里面可能不能及时对他们进行分析,一个月之后对他们进行分析,如果有这个TSBD能够将这个做非常好的维护,你几天之后看这个还是非常清楚的看的,这个工具非常好。韩国小团队一直用HBase,在上面做了一个小的系统。

HCPI大多数都是比较原始的一些东西,东西并不多,HBase一个特性就是说我们不会说雇人做什么东西?如果你在HBase上一个东西做的成功的话,那个所有的功劳都归于你自己。比如说左边是我一个电费支出图,比如说它可以按月然后进行显示,也可以跟我邻居进行一个比较,总之就是非常好的应用。如何让人们更好的写应用?在这个领域做了很多的工作,在HBase写应用如何能够做得更简单。比如说传统意义上来,可能不让你接触这种底层的东西。

还有比如集体学习实验室等等并且它也是开源的,是非常好的框架,大家有兴趣想在HBase上面写一些应用的话可以研究一下。CDK当然是完全的HBase的项目,CDK不仅仅涉及到一部分的构建,基本上涵盖了大部分。SQL现在当然也有NoSQL,这是在HBase上的SQL,可以有过滤器、共同处理器,整个输入效果都非常好,SQL引擎整个环境里面都非常不错,也可以用很多的数据源,Drill、Cloudera等等,这里可以自动帮助你索取数据源,大家有兴趣可以联系我,总结一下它可以有自由读写功能。谢谢!

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。