您现在的位置是:首页 > 文章详情

颠覆大数据分析之RDD的表达性

日期:2017-05-21点击:315

正如前面在比较Spark及DSM系统时所提到的,由于RDD只支持粗粒度的操作,因此它有一定的局限性。但是RDD的表达性对于大多数程序而言其实已经足够好了。AMPLabs团队他们仅花了数百行代码就开发出了整个Pregel,这是Spark上的一个小的库。可以通过RDD及相关的操作来表示的集群计算模型列举如下:

  • Map-Reduce:如果存在混合器的话,这个可以使用RDD上的flatMap和reduceByKey操作来表示。简单点的话可以表示成flatMap和groupByKey操作。运算符则对应于Spark中的转换操作。
  • DryadLINQ:DryadLINQ(Yu等2008)通过结合了声明性及命令式编程提供了MR所没有的操作。大多数操作符都能对应上Spark中的转换操作。Dryad中的apply结构就类似于RDD的map转换,而Fork结构则类似于flatMap转换。
  • 整体同步并行(BSP):Pregel (Malewicz等 2010)中的计算由一系列称为超步骤的迭代所组成。图中的每个顶点都关联上一个用户定义的计算函数;Pregel会确保在每一个超步骤中,用户定义的函数都会并行地在每一条边上执行。顶点可以通过边来发送消息并与其它的顶点交互数据。同样的,还会有一个全局的栅栏——当所有的计算函数都终止的时候它就会向前移动。熟悉BSP的读者可能会知道,Pregel是一个完美的BSP的典范——一组实体在并行地计算用户定义的函数,它们有全局的同步器并可以交换消息。由于同一个用户函数会作用于所有的顶点,这种情况可以这样实现,将所有顶点存储在一个RDD中并在上面运行flatMap操作来生成一个新的RDD。把它和跟顶点的RDD连接到一块,这样就可以实现消息传递了。
  • 迭代式Map-Reduce:HaLoop项目也同样扩展了Hadoop来支持迭代式机器学习算法。HaLoop不仅为迭代式应用提供了编程抽象,同时它还用到了缓存的概念来在迭代间进行数据共享和固定点校验(迭代的终止)以便提升效率。Twister (Ekanayake等2010)是另一个类似HaLoop的尝试。这些在Spark中都可以很容易实现,因为它本身非常容易进行迭代式计算。AMPLabs团队实现HaLoop仅花了200行代码。
  • 转载自 并发编程网 - ifeve.com
原文链接:https://yq.aliyun.com/articles/88249
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章