小编t22*_*000的帖子

作业运行成功时,驱动程序内存,执行程序内存,驱动程序内存开销和执行程序内存开销的Apache Spark效果

我正在对YARN上的Spark作业进行一些内存调整,我注意到不同的设置会产生不同的结果并影响Spark作业运行的结果.但是,我很困惑,并不完全理解为什么会发生这种情况,如果有人可以提供一些指导和解释,我会很感激.

我将提供一些背景信息并发布我的问题,并描述我之后经历过的案例.

我的环境设置如下:

  • 内存20G,每个节点20个VCores(总共3个节点)
  • Hadoop 2.6.0
  • Spark 1.4.0

我的代码递归地过滤RDD以使其变小(将示例作为算法的一部分移除),然后执行mapToPair并收集以收集结果并将其保存在列表中.

问题

  1. 为什么抛出不同的错误并且第一个和第二个案例之间的作业运行时间更长(第二种情况)只有执行程序内存增加了?这两个错误是否以某种方式相关联?

  2. 第三和第四种情况都成功了,我明白这是因为我提供了更多的内存来解决内存问题.但是,在第三种情况下,

spark.driver.memory + spark.yarn.driver.memoryOverhead = YARN将创建JVM的内存

= 11g +(driverMemory*0.07,最小值为384m)= 11g + 1.154g = 12.154g

所以,根据公式,我可以看到我的工作需要大约12.154g的MEMORY_TOTAL才能成功运行,这解释了为什么我需要超过10g的驱动程序内存设置.

但对于第四种情况,

spark.driver.memory + spark.yarn.driver.memoryOverhead = YARN将创建JVM的内存

= 2 +(driverMemory*0.07,最小值为384m)= 2g + 0.524g = 2.524g

似乎只需将内存开销增加少量的1024(1g),就可以成功运行作业,驱动程序内存仅为2g,而MEMORY_TOTAL仅为2.524g!而没有开销配置,驱动程序内存小于11g会失败,但从公式中没有意义,这就是为什么我感到困惑.

为什么增加内存开销(对于驱动程序和执行程序)允许我的作业以较低的MEMORY_TOTAL(12.154g vs 2.524g)成功完成?在这里有一些其他内部事物在我失踪吗?

第一个案例

/bin/spark-submit --class <class name> --master yarn-cluster --driver-memory 7g --executor-memory 1g --num-executors 3 --executor-cores 1 --jars <jar file>

如果我用任何小于11g的驱动程序内存运行我的程序,我将得到下面的错误,即停止的SparkContext或类似的错误,这是在停止的SparkContext上调用的方法.从我收集的内容来看,这与记忆力不足有关.

DriverMemory-7g_ExecutorMemory-1G

第二个案例

/bin/spark-submit --class <class name> --master yarn-cluster --driver-memory 7g --executor-memory 3g …

memory hadoop memory-management out-of-memory apache-spark

26
推荐指数
1
解决办法
1万
查看次数

Dagger 2 组件不生成用于构建的 Dagger 前缀类

我是 Dagger 2 的新手,正在尝试 IntelliJ 中的 Dagger 2 Coffee Example,虽然我密切关注 github 中 Dagger 2 的代码示例,但它似乎没有生成 DaggerCoffeeApp_Coffee(它应该生成它)。

Public class CoffeeApp {
    @Singleton
    @Component(modules = {DripCoffeeModule.class})
    public interface Coffee {

        CoffeeMaker maker();
    }
    public static void main(String args[]){


        Coffee coffee = DaggerCoffeeApp_Coffee.builder().build();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 pom.xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tim.test</groupId>
    <artifactId>Dagger2Experiment</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <slf4j-api.version>1.7.12</slf4j-api.version>
    </properties>
    <repositories>
        <repository>
            <id>sonatype</id>
            <name>sonatype-repo</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </repository>
    </repositories>
    <dependencies>

        <dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger</artifactId>
            <version>2.0.1</version>

        </dependency>
        <dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.0.1</version>
            <optional>true</optional>
        </dependency>
        <dependency> …
Run Code Online (Sandbox Code Playgroud)

java android intellij-idea maven dagger-2

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