gpt4 book ai didi

apache-spark - 为什么Spark将Map阶段输出保存到本地磁盘?

转载 作者:行者123 更新时间:2023-12-03 16:32:51 25 4
gpt4 key购买 nike

我试图深入了解 Spark 混洗过程。当我开始阅读时,我遇到了以下几点。

Spark writes the Map task(ShuffleMapTask) output directly to disk on completion.



我想了解Hadoop MapReduce的以下内容。
  • 如果Map-Reduce和Spark都将数据写入本地磁盘,那么Spark Shuffle进程与Hadoop MapReduce有何不同?
  • 由于数据在Spark中表示为RDD,为什么这些输出不保留在节点执行程序的内存中?
  • Hadoop MapReduce和Spark的Map任务的输出有何不同?
  • 如果有许多小的中间文件作为输出,那么spark如何处理网络和I/O瓶颈?
  • 最佳答案

    首先,Spark不能以严格的map-reduce方式工作,除非有必要,否则map输出不会写入磁盘。磁盘上写入了随机播放文件。

    这并不意味着改组后的数据不会保留在内存中。 Spark中的随机文件主要写为to avoid re-computation in case of multiple downstream actions。为什么要完全写入文件系统?至少有两个交错的原因:

  • 内存是宝贵的资源,Spark中的内存中缓存是临时的。需要时可以从缓存中逐出旧数据。
  • shuffle是一个昂贵的过程,如果不需要的话,我们希望避免这样做。以某种方式使随机数据在给定上下文的生存期内保持持久性来存储随机数据更为有意义。

  • 除了正在进行的低级优化工作和实现细节外,Shuffle本身也没有什么不同。它基于相同的基本方法,但有其局限性。

    Hadoo map 的任务有何不同?正如 Justin Pihony所很好地说明的那样,不需要混洗的多个转换在单个任务中被压缩在一起。由于这些操作在标准Scala迭代器上进行,因此可以通过管道传递对单个元素的操作。

    关于网络和I/O瓶颈,这里没有 Elixir 。尽管Spark可以通过组合转换,在内存中缓存并提供可感知转换的工作人员首选项来减少写入磁盘或混洗的数据量,但它受到与任何其他分布式框架相同的限制。

    关于apache-spark - 为什么Spark将Map阶段输出保存到本地磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479876/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com