为什么 Hadoop MapReduce 对于迭代算法每次迭代都要执行 disk read/write ?

Why does Hadoop MapReduce perform disk read/write in each iteration for iterative algorithms ?

我知道对于迭代算法,Hadoop mapreduce 表现不佳,因为它为每个迭代做一个完整的磁盘read/write。但是为什么呢?是为了系统的健壮性吗?

你的问题有点笼统,但我还是会尽力回答的。

Hadoop 做磁盘read/write 任何算法的操作都是因为Hadoop 做面向磁盘的处理,它是建立在这个原则之上的。这也是开发 spark 的原因之一,将计算从磁盘转移到内存,以便它可以减少面向磁盘的计算的延迟开销。

现在,每个 MapReduce 迭代的 read/write 操作 from/to 磁盘有助于系统的健壮性,也是 reliability.Consider 一个最简单的示例,一个工作节点有 2 个容器,这意味着两个独立的 JVM将 运行 在同一台机器上,他们将访问该节点上可用的相同数据源。因此,如果 Hadoop 不会为每次更改 read/write 在磁盘上,那么有可能第二个容器在访问数据时没有更新更改,这可能导致损坏和嘈杂的输出。 这是 Hadoop 为每个迭代 map reduce 算法读取和写入磁盘的原因之一。

希望这能回答您的问题。