如何解决数据融合:注意足够的内存问题和丢失的执行程序问题
我正在通过Google数据融合管道处理文件,但是随着管道的发展,我得到了以下警告和错误:
09/25/2020 12:31:31警告任务6的org.apache.spark.storage.memory.MemoryStore#66-Executor任务启动工作器没有足够的空间来将rdd_10_6缓存在内存中! (到目前为止已计算为238.5 MB)
09/25/2020 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上的执行器2丢失。内部:容器标记为失败:主机上的container_1601016787667_0001_01_000003:主机:cdap-soco-crea -99b67b97-fefb-11ea-8ee6-daceb18eb3cf-w-0.c.datalake-dev-rotw-36b8。内部。退出状态:3。诊断程序:[2020-09-25 07:15:05.226]容器启动时发生异常。容器编号:container_1601016787667_0001_01_000003退出代码:3
请帮助!
解决方法
Sudhir,您可以导航到“数据融合”>“系统管理员”>“配置”>“系统计算配置文件”,然后增加Dataproc计算配置文件的内存。
默认情况下,Datafusion ENTERPRISE实例每个工作人员具有8192 MB的内存。您可以先将该数量加倍,然后不断增加,直到管道成功运行为止。
请注意,Spark对内存中的RDD执行转换。从错误消息[1]可以认识到,由于OOM条件,您的一个工作人员无法在内存中缓存RDD。
在Spark释放其内存处理功能之前,需要在内存中缓存RDD。
希望这会有所帮助!
[1]任务6的工作线程没有足够的空间来在内存中缓存rdd_10_6
,Sudhir,
您可以尝试两种方法来查看它是否有助于解决问题。
增加执行程序的内存。步骤如下。
- 导航到管道详细信息页面。
- 在“配置”菜单中,单击“资源”。
- 在执行器下输入所需的金额。
- 在同一“配置”菜单中,单击“计算配置”。
- 在所需的计算配置文件上单击自定义。
- 确保工作程序内存是执行程序内存的倍数。例如,如果执行程序内存为4096,则工作程序内存应使用4、8、12等GB的内存。并相应地扩展工作人员核心。请注意,并不是必须严格要求工作线程的内存为整数倍,但是如果不是这样,则很可能会浪费集群容量。
也请尝试关闭自动缓存。步骤如下。
-
导航至管道详细信息页面。
-
在“配置”菜单中,单击“引擎配置”。
-
输入“ spark.cdap.pipeline.autocache.enable”作为键,并输入“ false”作为值。
默认情况下,管道将在管道中缓存中间数据,以防止Spark重新计算数据。这需要大量的内存,因此处理大量数据的管道通常需要将其关闭。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。