SnappyData - 集群数据流处理引擎


Apache
跨平台
Scala

软件简介

SnappyData将ApacheSpark和内存数据库融合起来,提供一种在单一集群中能够处理数据流、事务和交互分析的数据引擎。

Spark和远程数据源面临的挑战

Apache
Spark是一种通用型并行计算引擎,用于大规模分析。究其核心,它有一个批处理设计中心,能够处理不同的数据源。虽然这提供了丰富、统一的数据访问,但是同时效率相当低下、成本相当高昂。分析处理需要重复拷贝庞大的数据集,需要对数据重新格式化,以适合Spark。在许多情况下,它最终未能兑现交互分析性能的承诺。比如说,每当聚合操作在庞大的Cassandra表上运行时,势必需要将整个表流式传输到Spark,以便执行聚合操作。Spark里面的缓存是不可改变的,导致了过时的洞察力。

SnappyData采用的方法

SnappyData采用了一种截然不同的方法。SnappyData将低延迟、高可用性的内存事务数据库(GemFireXD)以及共享内存管理和优化机制融入到了Spark。高可用性内存中存储区里面的数据使用与Spark(Tungsten)同样的列格式来排列。由于更好的向量化和代码生成,所有查询引擎操作符都大大经过了优化。最终结果是,性能相比原生的Spark缓存高出了一个数量级,处理外部数据源时比Spark性能更是高出了两个数量级。

实际上,我们将Spark变成了一种内存操作型数据库,具有事务、点读取和点写入等功能,可以处理Streams(Spark),并运行分析SQL查询。或者,它可以变成内存中横向扩展型混合数据库,可以执行Spark代码、SQL或者甚至对象。

如果你已经在使用Spark,不妨体验一下查询性能快20倍的感觉。不妨试试这个测试(https://github.com/SnappyDataInc/snappydata/blob/master/examples/quickstart/scripts/Quickstart.scala)。

SnappyData的架构