繁体   English   中英

Apache Spark RDD

[英]Apache Spark RDD

工具:具有0.9.0火花的hadoop集群(无YARN)。

理想的情况是通过HDFS在名称节点上运行spark程序,而无需在数据节点之间进行通信。 该程序将执行此操作:

举个例子:在HDFS上,我有2种数据类型:A和B,我的集群由3个数据节点组成。

我的目标是运行一个可以处理A和1 / 3B所有数据的程序。 Datanode1与A和B1交互(前三分之一),Datanode2与A和B2交互(第二三分之一),而Datanode3与A和B3交互...因此,为了遵守“直到结束之间机器之间没有通信”的条件,我将必须在datanode1的内存中具有A和B1,在...的内存中必须具有A和B2

每个数据节点上的程序结果将在最后汇总。

有没有办法用Spark做到这一点?

据我了解的问题,如果您想进行分布式矩阵分解,并且您知道Spark可以帮助您更快地做到这一点。 好吧,首先,使用Spark的目的不是避免网络负载,将Spark用于此类任务的目的是可以将事物放入内存中并进行多次迭代,而不必重新读取/写入磁盘(这是在Hadoop中发生了什么)。 因此,与使用Hadoop相比,您将获得巨大的提速,因为磁盘IO比大多数实际计算要慢得多。

我假设您正在执行以下操作:

http://www.mpi-inf.mpg.de/~rgemulla/publications/gemulla11dsgd.pdf

如果您在Scala-Spark中编写代码,我很乐意告诉您何时需要调用.cache()。 老实说,我无法从略读文章中分辨出使用Spark缓存是否有帮助,但是只花了几分钟就可以将代码重构为最佳代码,而无需了解其确切功能。

简而言之,答案是: Spark不能帮助减少网络IO,但是可以,火花可以帮助减少磁盘IO,并且可能是解决问题的正确选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM