Nectar (Gunda 等2010),HaLoop (Bu 等2010),以及Twister(Ekanayake等2010)都是类似于Spark的系统。HaLoop是修改后的Hadoop,它增加了一个支持循环的任务调度器以及一定的缓存机制。缓存一方面是用于缓存映射器的循环数据变量,另一方面是用于缓存归约器的输出以便使得终止条件判断可以更高效地进行。Twister提供了订阅-发布的设施来实现一个广播的结构,同时它还能在历次迭代间指定及缓存静态数据。Twister和HaLoop都是扩展MR范式以支持迭代式运算的很有意思的实现。然而它们只能算是学术项目,并没有提供稳定的实现版本。除此之外,Spark通过世系所提供的容错性要比Twister和HaLoop所提供的要更先进和高效。另一个重要的不同在于Spark的编程模型更加通用,map和reduce只是它所支持的众多结构中的一组而已。它还有许多更强大的结构,包括reduceByKey以及前面所提到的一些。
Nectar是一个面向数据中心管理的软件系统,它把数据和计算都看作是一等实体(DryadLINQ中的函数[Yu等2008]),并为这些实体提供了分布式的缓存机制。这使得在某些特定的情况下数据可以通过进行适当的运算来获得,这样就避免了频繁使用数据的重复计算。Nectar与Spark的主要不同在于Nectar不允许用户指定数据分区,也不允许用户指定哪些数据应该持久化。这些Spark都能支持,因此它的功能也更为强大。
时间: 2024-09-17 19:47:42