当前位置: 首页 > 知识库问答 >
问题:

spark 提交执行程序内存/失败批处理

汲永嘉
2023-03-14

我对spark streaming有两个问题:

    < li >我有一个spark流应用程序正在运行,并以< code>20秒的批处理间隔收集数据,在< code>4000个批处理中,有< code>18个批处理因异常而失败:

无法计算拆分,块输入-0-1464774108087 未找到

我假设此时数据大小大于spark可用内存,并且应用程序< code>StorageLevel为< code>MEMORY_ONLY。

请建议如何修复此问题。

几次应用程序之后,我不会耗尽内存吗?我需要那么多的记忆吗?

/usr/iop/4.1.0.0/spark/bin/spark-submit--主纱线--部署模式客户端--jars/home/blah。jar——num个执行器8——执行器核心5——执行器存储器20G——驱动程序存储器12G——驱动核心8<br>——类com.ccc.nifi。我的处理器Nifi-Spark-Streaming-20160524.jar

共有1个答案

华飞驰
2023-03-14

看来您的执行器内存可能会越来越满,请尝试以下几种优化技术:

    < li >不是使用StorageLevel,而是MEMORY_AND_DISK。 < li >使用比普通java序列化更快更好的Kyro序列化。f yougo用于内存缓存和序列化。 < li >检查是否有gc,您可以在正在执行的任务中找到。
 类似资料:
  • 1)谁能解释一下为什么显示的是31GB而不是60GB。2)还有助于为上述参数设置最佳值。

  • null null 为了进行简单的开发,我使用在独立集群模式下(8个工作者、20个内核、45.3G内存)执行了我的Python代码。现在我想为性能调优设置执行器内存或驱动程序内存。 在Spark文档中,执行器内存的定义是 每个执行程序进程使用的内存量,格式与JVM内存字符串相同(例如512M、2G)。

  • 我在spark streaming应用程序中看到一些失败的批处理,原因是与内存相关的问题,如 无法计算拆分,找不到块输入-0-1464774108087

  • 我正在使用STS 2.81附带的Spring Batch模板和Manning的Spring Batch in Action中的示例创建一个Spring Batch作业。我可以毫无问题地执行块读取器和写入器,但我的代码跳过了处理器。我甚至尝试过在处理器中取消所有对象,但什么也没有,对象仍然设法被写入,就像处理器被忽略一样。我尝试在处理器中调用system.out.println,但没有在终端中打印出

  • 我正在对YARN上的Spark作业进行一些内存调优,我注意到不同的设置会给出不同的结果,并影响Spark作业运行的结果。但是,我很困惑,不明白为什么会这样,如果有人能给我一些指导和解释,我会很感激。 我将提供一些背景资料和张贴我的问题和描述案例,我已经经历了他们在下面。 我的环境设置如下: 存储器20G,每个节点20个vCore(共3个节点) Hadoop 2.6.0 火花1.4.0 我的代码对R

  • 我有一个带有Spark2.3.1的DStream流应用程序。 其中我正在从Kafka读取数据并写入Kerberized HDFS,但在写入HDFS时,我的批处理随机开始失败,异常显示与kerberos相关的错误,但我的spark应用程序仍在运行,因此除非检查日志,否则我不知道批处理正在失败。 我的问题是,有没有什么方法让我可以限制连续批处理故障转移的数量?建议是否存在某些属性,在这些属性中,我们可