我知道对于迭代算法,Hadoop mapreduce表现不佳,因为它为每次迭代执行完整的磁盘读/写操作。但为什么呢?这是系统的稳健性吗?
答案 0 :(得分:2)
你的问题有点宽泛,但我仍会尝试回答。
Hadoop为任何算法执行磁盘读/写操作是因为Hadoop执行面向磁盘的处理并且它是基于这个原则构建的。这也是为什么开发spark,将计算从磁盘移动到内存以便它可以减少面向磁盘的计算的延迟开销的原因之一。
现在,每次MapReduce迭代从/到磁盘的读/写操作都有助于系统的健壮性和可靠性。考虑一个最简单的例子,工作节点有2个容器,这意味着两个独立的JVM将在同一台机器上运行他们将访问该节点上可用的相同数据源。因此,如果Hadoop在每次更改时都不会在磁盘上进行读/写,那么第二个容器在访问数据时可能无法更新,并且可能导致输出损坏和噪声。 这是Hadoop为每个迭代map reduce算法读取和写入磁盘的原因之一。
希望这能回答你的问题。