迭代计算

一、Apache Hama

简介:Apache Hama是一个纯BSP(Bulk Synchronous Parallel)计算框架,模仿了Google的Pregel。用来处理大规模的科学计算,特别是矩阵和图计算。

❶建立在Hadoop上的分布式并行计算模型。

❷基于 Map/Reduce 和 Bulk Synchronous 的实现框架。

❸运行环境需要关联 Zookeeper、HBase、HDFS 组件。

Hama中有2个主要的模型:

– 矩阵计算(Matrix package)

– 面向图计算(Graph package)

Apache Hama官方网站>>>

二、Apache Giraph

代码托管地址:GitHub

简介:Apache Giraph是一个可伸缩的分布式迭代图处理系统,灵感来自BSP(bulk synchronous parallel)和Google的Pregel,与它们 区别于则是是开源、基于 Hadoop 的架构等。

Giraph处理平台适用于运行大规模的逻辑计算,比如页面排行、共享链接、基于个性化排行等。Giraph专注于社交图计算,被Facebook作为其Open Graph工具的核心,几分钟内处理数万亿次用户及其行为之间的连接。

三、HaLoop

简介:迭代的MapReduce,HaLoop——适用于迭代计算的Hadoop 。

Hadoop与HaLoop的不同

与Hadoop比较的四点改变:

1.提供了一套新的编程接口,更加适用于迭代计算;

2.HaLoop的master进行job内的循环控制,直到迭代计算结束;

3.Task Scheduler也进行了修改,使得任务能够尽量满足data locality

4.slave nodes对数据进行cache并index索引,索引也以文件的形式保存在本地磁盘。

HaLoop官网>>>

四、Twister

简介:Twister, 迭代式MapReduce框架,Twister是由一个印度人开发的,其架构如下:

在Twister中,大文件不会自动被切割成一个一个block,因而用户需提前把文件分成一个一个小文件,以供每个task处理。在map阶段,经过map()处理完的结果被放在分布式内存中,然后通过一个broker network(NaradaBroking系统)将数据push给各个reduce task(Twister假设内存足够大,中间数据可以全部放在内存中);在reduce阶段,所有reduce task产生的结果通过一个combine操作进行归并,此时,用户可以进行条件判定, 确定迭代是否结束。combine后的数据直接被送给map task,开始新一轮的迭代。为了提高容错性,Twister每隔一段时间会将map task和reduce task产生的结果写到磁盘上,这样,一旦某个task失败,它可以从最近的备份中获取输入,重新计算。

为了避免每次迭代重新创建task,Twister维护了一个task pool,每次需要task时直接从pool中取。在Twister中,所有消息和数据都是通过broker network传递的,该broker network是一个独立的模块,目前支持NaradaBroking和ActiveMQ。

你可能感兴趣的:(迭代计算)