Apache spark 如果单个文件比纱线火花贴图操作中的执行器大,会发生什么情况?

Apache spark 如果单个文件比纱线火花贴图操作中的执行器大,会发生什么情况?,apache-spark,yarn,Apache Spark,Yarn,我正在研究一个解决方案,其中驱动程序将读取xml文件,并从中获取一个HDFS文件路径,该路径将在映射操作中读取。 由于映射操作将在容器中执行(启动作业时将分配容器) 什么是单个输入文件大于一个执行器。由于文件未在驱动程序中读取,因此无法分配更多资源?或者应用程序主机将从资源管理器获得更多内存 非常感谢您的帮助 什么是单个输入文件大于执行器 由于文件位于HDFS中,Spark将为HDFS中的1个块创建1个分区。每个分区都将在一个辅助进程中处理 若文件中有很多块不能一次计算,那个么spark确保在资

我正在研究一个解决方案,其中驱动程序将读取xml文件,并从中获取一个HDFS文件路径,该路径将在映射操作中读取。 由于映射操作将在容器中执行(启动作业时将分配容器)

  • 什么是单个输入文件大于一个执行器。由于文件未在驱动程序中读取,因此无法分配更多资源?或者应用程序主机将从资源管理器获得更多内存
  • 非常感谢您的帮助

    什么是单个输入文件大于执行器

    由于文件位于HDFS中,Spark将为HDFS中的1个块创建1个分区。每个分区都将在一个辅助进程中处理


    若文件中有很多块不能一次计算,那个么spark确保在资源空闲时(在使用阶段完成转换之后)计算挂起的分区

    加载的文件显示为RDD。RDD是驻留在集群中的所谓分区的组合。读取文件不是问题,但在转换后,它可能会引发OOM异常,具体取决于执行器内存限制。因为可能有一些洗牌操作需要将分区转移到一个位置。默认情况下,执行器内存设置为512MB。但对于处理大量数据集的自定义内存参数。
    Spark保留部分内存用于缓存数据存储和临时洗牌数据。使用参数spark.storage.memoryFraction(默认值为0.6)和spark.shuffle.memoryFraction(默认值为0.2)为这些设置堆。由于堆的这些部分可能在Spark测量和限制它们之前增长,因此必须设置两个额外的安全参数:Spark.storage.safetyFraction(默认值为0.9)和Spark.shuffle.safetyFraction(默认值为0.8)。安全参数将内存分数降低指定的量。默认情况下,用于存储的堆的实际部分是0.6×0.9(安全分数乘以存储内存分数),等于54%。类似地,堆中用于洗牌数据的部分为0.2×0.8(安全分数乘以洗牌内存分数),等于16%。然后,将30%的堆保留给运行任务所需的其他Java对象和资源。但是,您应该只考虑20%。

    您是否使用HDFS作为FS?谢谢Kishore的回答。因此,文件读取是否由executor启动并不重要?默认情况下,每个Spark executor只读取一个数据块。