我正在对YARN上的Spark作业进行一些内存调整,我注意到不同的设置会产生不同的结果并影响Spark作业运行的结果.但是,我很困惑,并不完全理解为什么会发生这种情况,如果有人可以提供一些指导和解释,我会很感激.
我将提供一些背景信息并发布我的问题,并描述我之后经历过的案例.
我的环境设置如下:
我的代码递归地过滤RDD以使其变小(将示例作为算法的一部分移除),然后执行mapToPair并收集以收集结果并将其保存在列表中.
为什么抛出不同的错误并且第一个和第二个案例之间的作业运行时间更长(第二种情况)只有执行程序内存增加了?这两个错误是否以某种方式相关联?
第三和第四种情况都成功了,我明白这是因为我提供了更多的内存来解决内存问题.但是,在第三种情况下,
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上调用的方法.从我收集的内容来看,这与记忆力不足有关.
/bin/spark-submit --class <class name> --master yarn-cluster --driver-memory 7g --executor-memory 3g …
我是 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)