EC2 上的 Apache Spark 迭代速度大幅下降
Apache Spark on EC2 massive slowdown on iterations
我的驱动程序 运行 是一组 5 个实验 - 基本上,驱动程序只是告诉程序要使用哪个数据集(其中有 5 个,它们非常相似)。
第一次迭代需要 3.5 分钟,第二次需要 6 分钟,第三次需要 30 分钟,第四次已经 运行 超过 30 分钟。
在每个 运行 SparkContext
对象停止后,它会在下一个 运行 时重新启动 - 我认为这种方法可以防止减速,因为 sc.stop
被调用 我的印象是实例被清除了所有的 RDD 数据——这至少是它在本地模式下的工作方式。数据集非常小,根据 Spark UI 仅使用了 2 个节点上的 20Mb 数据。
sc.stop
不会从节点中删除所有数据吗?什么会导致这种放缓?
- 在所有迭代完成后调用
sc.stop
。每当我们停止 SparkContenxt 并调用新的时,它都需要时间来加载 spark 配置、jar 和空闲驱动程序端口以执行下一个作业。
和
- 使用配置
--executor-memory
你可以加快这个过程,这取决于你在每个节点中有多少内存。
愚蠢的是,我使用了 T2 实例。它们的爆发性性能意味着它们只能在短时间内以全功率工作。仔细阅读文档 - 吸取教训!
我的驱动程序 运行 是一组 5 个实验 - 基本上,驱动程序只是告诉程序要使用哪个数据集(其中有 5 个,它们非常相似)。
第一次迭代需要 3.5 分钟,第二次需要 6 分钟,第三次需要 30 分钟,第四次已经 运行 超过 30 分钟。
在每个 运行 SparkContext
对象停止后,它会在下一个 运行 时重新启动 - 我认为这种方法可以防止减速,因为 sc.stop
被调用 我的印象是实例被清除了所有的 RDD 数据——这至少是它在本地模式下的工作方式。数据集非常小,根据 Spark UI 仅使用了 2 个节点上的 20Mb 数据。
sc.stop
不会从节点中删除所有数据吗?什么会导致这种放缓?
- 在所有迭代完成后调用
sc.stop
。每当我们停止 SparkContenxt 并调用新的时,它都需要时间来加载 spark 配置、jar 和空闲驱动程序端口以执行下一个作业。 和 - 使用配置
--executor-memory
你可以加快这个过程,这取决于你在每个节点中有多少内存。
愚蠢的是,我使用了 T2 实例。它们的爆发性性能意味着它们只能在短时间内以全功率工作。仔细阅读文档 - 吸取教训!