0

我在一个 csv 文件中有一个数据集,它占据 HDFS 中的两个块,并在两个节点 A 和 B 上复制。每个节点都有一个数据集的副本。

当 Spark 开始处理数据时,我看到了 Spark 如何将数据集作为输入加载的两种方式。它要么将整个数据集加载到一个节点上的内存中并在其上执行大部分任务,要么将数据集加载到两个节点中并将任务溢出到两个节点上(基于我在历史服务器上观察到的情况)。对于这两种情况,都有足够的容量将整个数据集保存在内存中。

我多次重复相同的实验,Spark 似乎在这两种方式之间交替。假设 Spark 继承了 MapReduce 作业中的输入拆分位置。据我了解,MapReduce 应该能够利用两个节点。我不明白为什么 Spark 或 MapReduce 会在这两种情况之间交替出现。

当只使用一个节点进行处理时,性能更差。

4

1 回答 1

0

当您在 Spark 中加载数据时,您可以指定最小拆分数,这将强制 Spark 在多台机器上加载数据(使用您将添加minPartitions=2到调用中的 textFile api。

于 2015-07-04T23:52:45.753 回答