我们第一个做了判断混合架构会逐渐的消失,过去MPP数据库有三个优势,第一个性能完整,第二个它比Hadoop性能高,我们看到现在Hadoop性能超过MPP若干倍。第三个优势就是说它上面的DBA工具,外延工具非常全,在Hadoop系统DBA工具越来越丰富,一些新兴的创业公司在Hadoop上开发完整的DBA工具,这些工具原生支持Hadoop的,从这个来讲Hadoop的DBA工具超过传统MPP数据库的功能。
我们觉得在未来一年两年之内,逐渐逐渐Hadoop取代MPP数据库,大家不需要用混合架构,不需要在不同数据库之间实现迁移了。有人说我MPP也在转移,慢慢向Hadoop靠拢,整个MPP的数据库在慢慢消失完完全走到Hadoop上面来。我们希望最后结果就是数据全部放在Hadoop上,不管数据在几个GB级别还是10个PB级别都可以在Hadoop上处理真正做到无限的线性扩展。
我们发现一个事实现在Spark成为最受欢迎的计算机引擎,Spark已经开发了三年时间,框架性能不适合批处理,通过Spark引擎我们证明新引擎性能可以超过MPP数据库。从今年开始Hadoop的社区发展非常快速,从今年六月份的时候Spark上原来Hadoop开始全面支持Spark,我做了简单的统计,全球已经有50家企业围绕Spark提供产品和服务,其中有11家提供商业的Spark版本,这是这里面所有的11家公司,我们也是认证的Spark发行版厂商。
第二个趋势过去大家谈内存计算谈高效迭代计算,当时大家觉得这是非常好的方向,当数据发生内存我们尽量缓存,内存速度是磁盘百倍到千倍,我们把这种技术应用到现实当中发现,内存容量和价格是不能比较大的限制条件,把所有数据全放内存的时候,像Spark,和Hadoop都是java写的,内存大的时候,集成影响非常严重的,我们能不能用更好的方式缓存这个方式,随着硬件技术的发展我们发现内存可以被大容量的SSD取代做缓存,这个也是非常明显的趋势。
这张图列出了SSD硬件技术的发展,最底层是硬盘,现在SSD有几个量级的提升,我们拿市场上英特尔P370的数据,读性能是每秒钟46万次,是硬盘的一千倍,吞吐量是硬盘10倍以上。还有一些厂商把SSD插在内存卡槽,做成内存条的形式。目前做的性能不如P370,未来性能会逐渐的提升。SSD的内存相比性能对比显得没有这么大,因为吞吐量内存的数据是8.5G,PCI的到2.8G也就是只有三四倍的差距,SSD已经开始向内存接近,同时这个价格也在迅速下降,SSD公司在中国市场非常多,整个价格下降非常明显,今天中国市场可以以一万块钱到两万块钱买1G的SSD,如果你买内存条只能买128的内存条,我们认为用SSD替代是比较好的方案。这是我们一组数据,把数据放在磁盘、内存条和SSD上的对比。第一个我们发现我们把数据放在磁盘把性能作为1的话,我们发现内存的性能仍然是最高的,蓝色的线是数据放在磁盘的统计性能,放在SSD性能跟内存上比较接近的,我们比较看到每一个场景波动发现性能差距基本上在有的在最多是30%,平均性能差异是9.6%,控制在10%以内,你可以以十分之一的价格达到内存只差1%的性能的产品,你原来放在内存里可能只有打败几百G或者几个T的数据,现在你可以把几十T的东西放在SSD上进行数据分析。Hadoop2.6提出来一个概念,我在HD上提供几层,一层是磁盘层,一层是SSD层还有内存条层,我可以制定你文件放在哪个层上面,以128兆决定放在哪一层上面,是不是我性能迅速提升,我们很快发现其实没有那么简单,Hadoop是最早为大容量低速磁盘设计的,SSD比普通磁盘大10倍,它随机访问性能是磁盘的一千倍,你不能利用随机访问性能。你的提升不会像硬件指标这么显著。我们试过ORC格式,我们觉得这里有两个趋势,第一个趋势用基于磁盘Hadoop慢慢开始为SSD做优化,未来会有更多的优化针对SSD专门做的。第二个趋势内存数据库这样厂商也开始觉得内存不够用,我不可能所有数据都放在内存里,我可能是几十T的数据我需要大容量的介质,SSD是理想的替代,有很多厂商觉得他的数据库要专门为SSD做优化。我们做一些数据,以前Spark把数据放在内存里,我们首先把数据从Spark当中剥离出来,放到一个外部的介质上面。然后放到SSD上进行存储编码压缩,这里面采用了我们自己专业的编码技术一些架构实现当然也有一些索引在上面,做了这个改造以后性能有比较大的提升。有一个测试对比我们比较四种组合情况,一种是基于磁盘文本格式的,第二种在SSD运行TBDS的部分结果,我们选TBDS部分的场景,有的场景是CPU密集型的,磁盘性能可能不一定进行提升,我们选一些IO场景来测。大家很快发现如果我不改变文件格式,同样文件放在磁盘和放在SSD,它的性能最高提升了1.5倍。我们两三年前做过测试我们把Hadoop的机群换成SSD,性能提升大概是40%,把这个数据变成ORC格式这个性能确实有助于提升,我可以过滤很多数据,可以充分高SSD的性能,这个性能额外得到了2.7倍的性能提升。但是这个不够还没有完全发挥SSD性能的优势,所以我们采用我们存储格式的时候,我们采用编码方式也有点与众不同,用了这个存储格式以后比ORC再提升,可能提升五倍到十倍左右,如果采用新的列式存储方式,我们性能比磁盘快8到10倍,更多软件专门利用SSD的这种特性。