大数据内存集群计算:Spark与Tachyon的应用与优势
在云计算领域,系统软件和应用软件之间的界限变得模糊。软件栈包含基于抽象的组件,这些抽象将应用程序和系统管理的各个方面结合起来。Spark和Tachyon就是云计算软件栈中这类元素的典型代表。
内存集群计算的背景与挑战
在可预见的未来,假设超大型集群能够容纳PB级甚至更多的数据进行内存存储是不现实的。即便存储成本大幅下降,服务器间的大量通信也会限制性能。不过,在迭代和其他类型的大数据应用中,会反复使用输入数据的稳定子集。若能识别出输入数据的工作集,将其加载到内存并留作后续使用,就能显著提升性能。
这类应用的明显例子包括涉及多个数据库和跨数据库的多个查询,以及对同一数据子集进行多次查询的交互式数据挖掘。PageRank算法也是一种迭代算法,其数据共享更为复杂。在每次迭代i中,排名为r(i)且有n个邻居的文档会向每个邻居发送r(i)/n的贡献值,然后更新自身排名:
$r_{i+1} = \frac{\alpha}{N} + (1 - \alpha) \sum_{j=1}^{n} c_{j}$
其中,α是阻尼因子,N是数据库中文档的数量,求和是对其收到的所有贡献值进行。
分布式共享内存(DSM)是实现内存数据重用的一种解决方案。但DSM允许的细粒度操作,对于本节讨论的应用类型而言,对单个数据元素的访问并非特别有用。而且,DSM不支持有效的故障恢复和数据分布,也无法带来显著的性能提升。针对不同框架,已经实现了一些临时的内存数据重用解决方案,例如用于MapReduce的HaLoop。
数据共享抽象:RDD与Spark
为了支持基于粗粒度转换的受限共享
超级会员免费看
订阅专栏 解锁全文
987

被折叠的 条评论
为什么被折叠?



