数据融合:注意足够的内存问题和丢失的执行程序问题



我正在通过谷歌数据融合管道处理文件,但随着管道的运行,我收到了以下警告和错误:

2020年9月25日12:31:31 WARN org.apache.spark.store.MemoryStore#66任务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-daceb18eb3cf-w-0.c.datalake-dev-rotw-36b8.internal:标记为失败的容器:主机上的Container_1601016787667_001_01_000003:cdap-soc-crea-99b 67b97-fefb-11ea8-ee6-daceb上丢失执行器2。退出状态:3。诊断:【2020-09-25 07:15:05.226】容器启动异常。容器id:Container_1601016787667_001_01_000003退出代码:3

救命!

Sudhir,你能导航到Datafusion>系统管理员>配置>系统计算配置文件,然后增加Dataproc计算配置文件的内存。

默认情况下,Datafusion ENTERPRISE实例每个工作进程具有8192MB的内存。您可以从将数量翻倍开始,并不断增加,直到管道成功运行。

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

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

希望这能有所帮助!

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

Sudhir,

有两件事你可以试着看看它是否有助于解决你的问题。

增加执行程序内存。以下步骤

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

同时尝试关闭"自动缓存"。以下步骤

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

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

  3. 输入"spark.cdap.pipeline.autocache.enable"作为关键字,输入"false"作为值。

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

最新更新