【问题标题】:What are the advantages of increasing the partition size and decreasing partitions number in spark?spark中增加分区大小和减少分区数有什么好处?
【发布时间】:2016-04-15 20:27:34
【问题描述】:

我有 1 个 master 和 3 个 slave(每个 4 个核心)

默认情况下,我的 spark 集群中的最小分区大小为 32MB,我的文件大小为 41 Gb。 所以我试图通过将 minsize 更改为 64Mb 来减少分区数

sc.hadoopConfiguration.setLong("mapreduce.input.fileinputformat.split.minsize", 64*1024*1024)
val data =sc.textFile("/home/ubuntu/BigDataSamples/Posts.xml",800) 
data.partitions.size = 657

那么增加分区大小和减少分区数量有什么好处呢? 因为当我的分区在 1314 左右时,大约需要 2-3 分钟 appx,即使在减少分区数之后,它仍然需要相同的时间。

【问题讨论】:

    标签: scala apache-spark hadoop-partitioning


    【解决方案1】:

    分区越多开销越大,但在某种程度上它有助于提高性能,因为您可以并行运行所有分区。

    因此,一方面保持分区数等于内核数是有意义的。另一方面,特定的分区大小可能会导致 JVM 中出现特定数量的垃圾,这可能会超出限制。在这种情况下,您希望增加分区数量以减少每个分区的内存占用。

    这也可能取决于工作流程。考虑 groupByKey 与 reduceByKey。在后一种情况下,您可以在本地进行大量计算,并将少量发送到远程节点。随机播放恰好在发送到远程之前写入磁盘,因此拥有更多分区可能会降低性能。

    每个分区都会产生一些开销。

    如果您想与几个人共享集群,那么您可以考虑采用较少数量的分区来处理所有内容,以便所有用户都有一些处理时间。

    像这样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-13
      • 2017-10-21
      • 2019-11-29
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多