排序能够说是不少日志系统的硬指标(如按照时间逆序排序),若是一个大数据系统不能进行排序,基本上是这个系统属于不可用状态,排序算得上是大数据系统的一个“刚需”,不管大数据采用的是hadoop,仍是spark,仍是impala,hive,总之排序是必不可少的,排序的性能测试也是必不可少的。
有着计算奥运会之称的Sort Benchmark全球排序每一年都会举行一次,每一年巨头都会在排序上进行巨大的投入,可见排序速度的高低有多么重要!可是对于大多数企业来讲,动辄上亿的硬件投入,实在划不来、甚至远远超出了企业的项目预算。相比大数据领域的暴力排序有没有一种更廉价的实现方式?
在这里,咱们为你们介绍一种新的廉价排序方法,咱们称为blockSort。
500G的数据300亿条数据,只使用4台 16核,32G内存,千兆网卡的虚拟机便可实现 2~15秒的 排序 (能够全表排序,也能够与任意筛选条件筛选后排序)。
html
1、基本的思想是这样的,以下图所示:mysql
1.将数据按照大小预先划分好,如划分红 大、中、小三个块(block)。sql
2.若是想找最大的数据,那么只须要在最大的那个块里去找就能够了。数据库
3.这个快仍是有层级结构的,若是每一个块内的数据量不少,能够到下面的子快内进行继续查找,能够分多个层进行排序。编程
4.采用这种方法,一个亿万亿级别的数据(如long类型),最坏最坏的极端状况也就进行2048次文件seek就能够筛选到结果。架构
怎么样,原理是否是很是简单,这样数据量即便特别多,那么排序与查找的次数是固定的。oracle
2、这个是咱们以前基于Spark作的性能测试,供你们参考运维
在排序上,YDB具备绝对优点,不管是全表,仍是基于任意条件组合过滤,基本秒杀Spark任何格式。分布式
测试结果(时间单位为秒)工具
测试过程视频地址
https://v.qq.com/x/page/q0371wjj8fb.html
https://v.qq.com/x/page/n0371l0ytji.html
感兴趣的读者也能够阅读YDB编程指南 http://url.cn/42R4CG8 。也能够参考该书本身安装延云YDB进行测试。
3、固然除了排序上,咱们的其余性能也是远远高于spark,这块你们也能够了解一下
注释:备忘。下图的这块,其实没什么特别的,只不过因为YDB自己索引的特性,不想spark那样暴力,才会致使在扫描上的性能远高于spark,性能高百倍不足为奇。
下图为ydb相对于spark txt提高的倍数
二、这些是与 Parquet 格式对比(单位为秒)
跟传统数据库的对比,已经没啥意义,Oracle不适合大数据,任意一个大数据工具都远超Oracle 性能。
|
4.稽查布控场景性能测试
基于Hadoop分布式架构下的实时的、多维的、交互式的查询、统计、分析引擎,具备万亿数据规模下的秒级性能表现,并具有企业级的稳定可靠表现。
YDB是一个细粒度的索引,精确粒度的索引。数据即时导入,索引即时生成,经过索引高效定位到相关数据。YDB与Spark深度集成,Spark对YDB检索结果集直接分析计算,一样场景让Spark性能加快百倍。
1.传统关系型数据,已经没法容纳更多的数据,查询效率严重受到影响的用户。
2.目前在使用SOLR、ES作全文检索,以为solr与ES提供的分析功能太少,没法完成复杂的业务逻辑,或者数据量变多后SOLR与ES变得不稳定,在掉片与均衡中不断恶性循环,不能自动恢复服务,运维人员需常常半夜起来重启集群的状况。
3.基于对海量数据的分析,可是苦于现有的离线计算平台的速度和响应时间无知足业务要求的用户。
4.须要对用户画像行为类数据作多维定向分析的用户。
5.须要对大量的UGC(User Generate Content)数据进行检索的用户。
6.当你须要在大数据集上面进行快速的,交互式的查询时。
7.当你须要进行数据分析,而不仅是简单的键值对存储时。
8.当你想要分析实时产生的数据时。