小编Har*_*man的帖子

了解Spark shuffle溢出

如果我理解正确,当reduce任务开始收集其输入shuffle块(来自不同map任务的输出)时,它首先将它们保存在内存中(Q1).当执行器的shuffle-reserved内存量(在内存管理(Q2)更改之前)耗尽时,内存中数据被"溢出"到磁盘.如果spark.shuffle.spill.compress为true,那么内存中的数据将以压缩方式写入磁盘.

我的问题:

问题:我的理解是否正确?

Q1:reduce任务中收集的数据是否始终未压缩?

Q2:如何估计可用于收集shuffle块的执行程序内存量?

问题3:我已经看到了"当你的数据集无法适应内存时发生随机溢出"的说法,但我的理解是,只要shuffle-reserved执行器内存大到足以包含所有(未压缩)的shuffle输入块ACTIVE任务,然后不应该发生溢出,这是正确的吗?

如果是这样,为了避免溢出,需要确保在所有并行reduce方面任务中结束的(未压缩)数据小于执行程序的shuffle-reserved内存部分?

apache-spark

7
推荐指数
1
解决办法
4766
查看次数

使用Scala 2.11反射时"涉及对象InterfaceAudience的非法循环引用"

我在scala 2.11.7上遇到了上述错误:

def main(args: Array[String]): Unit = {
  val x = typeOf[ org.apache.hadoop.io.Writable ]
  println( x )
}
Run Code Online (Sandbox Code Playgroud)

我的编译过程的其他信息:

我已经缩小到重现所需的最低限度:

我有一个build.gradle项目,如下所示:

buildscript {
  repositories {
      mavenCentral()
      maven {
        name 'Shadow'
        url 'http://dl.bintray.com/content/johnrengelman/gradle-    plugins'
      }
  }
  dependencies {
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.1'
  }
}

apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'scala'

repositories {
    mavenCentral()
}

dependencies 
{
  compile group: 'org.scala-lang', name: 'scala-library', version: '2.11.7'
  compile group: 'org.scala-lang', name: 'scala-reflect', version: '2.11.7'
  compile( "org.apache.hadoop:hadoop-common:2.4.0" )
}
Run Code Online (Sandbox Code Playgroud)

这是我的主要内容:

import scala.reflect.runtime.universe._

object Test 
{
  def main(args: Array[String]): …
Run Code Online (Sandbox Code Playgroud)

scala scala-reflect

5
推荐指数
1
解决办法
612
查看次数

为什么 Spark 应用程序的最终状态在成功完成时失败?

我的应用程序 Spark 2.0.0 在 yarn 2.7.2 上运行。它成功完成,但 Yarn 将其标记为失败并显示错误:

Final app status: FAILED, exitCode: 16, (reason: Shutdown hook called     before final status was reported.)
Run Code Online (Sandbox Code Playgroud)

我在执行程序和驱动程序上都没有看到错误,应用程序写入了它应该写入的数据。

hadoop-yarn apache-spark

3
推荐指数
1
解决办法
2216
查看次数

标签 统计

apache-spark ×2

hadoop-yarn ×1

scala ×1

scala-reflect ×1