0

我正在通过 Google Data Fusion Pipeline 处理文件,但随着管道的进行,我遇到了警告和错误:

09/25/2020 12:31:31 WARN org.apache.spark.storage.memory.MemoryStore#66-Executor task launch worker for task 6 没有足够的空间在内存中缓存 rdd_10_6!(目前计算为 238.5 MB)

2020 年 9 月 25 日 12:45:05 错误 org.apache.spark.scheduler.cluster.YarnClusterScheduler#70-dispatcher-event-loop-1
在 cdap-soco-crea-99b67b97-fefb-11ea-8ee6- 上丢失了执行程序 2 daceb18eb3cf-w-0.c.datalake-dev-rotw-36b8.internal:容器标记为失败:container_1601016787667_0001_01_000003 在主机上:cdap-soco-crea-99b67b97-fefb-11ea-8ee6-daceb18eb3cf-w-0.c.datalake -dev-rotw-36b8.internal。退出状态:3。诊断:[2020-09-25 07:15:05.226]容器启动异常。容器 ID:container_1601016787667_0001_01_000003 退出代码:3

请帮忙 !

4

2 回答 2

0

Sudhir,您能否导航到 Datafusion > SYSTEM ADMIN > Configuration > System Compute Profiles,然后增加 Dataproc 计算配置文件的内存。

默认情况下,Datafusion ENTERPRISE 实例的每个工作人员有 8192 MB 的内存。您可以先将该数量翻倍,然后继续增加,直到管道成功运行。

请注意,Spark 在内存中的 RDD 上执行转换。从错误消息 [1] 中可以看出,由于 OOM 条件,您的一名工作人员未能在内存中缓存 RDD。

在 Spark 释放其内存处理能力之前,需要在内存中缓存 RDD。

希望这可以帮助!

[1] 任务 6 的工作人员没有足够的空间在内存中缓存 rdd_10_6

于 2020-09-26T18:49:48.760 回答
0

苏迪尔,

您可以尝试两件事,看看它是否有助于解决您的问题。

增加执行器内存。下面的步骤。

  1. 导航到管道详细信息页面。
  2. 在配置菜单中,单击资源。
  3. 在 Executor 下输入所需的金额。
  4. 在同一个配置菜单中,单击计算配置。
  5. 单击所需计算配置文件上的自定义。
  6. 确保worker内存是executor内存的倍数。例如,如果执行程序内存为 4096,则工作程序内存应使用 4、8、12 等 GB 内存。还相应地扩展工作核心。请注意,worker 内存不一定是精确倍数,但如果不是,则更有可能浪费集群容量。

也尝试关闭自动缓存。下面的步骤。

  1. 导航到管道详细信息页面。

  2. 在配置菜单中,单击引擎配置。

  3. 输入“spark.cdap.pipeline.autocache.enable”作为键,输入“false”作为值。

默认情况下,管道会在管道中缓存中间数据,以防止 Spark 重新计算数据。这需要大量内存,因此处理大量数据的管道通常需要将其关闭。

于 2020-09-28T21:13:38.610 回答