小编Fre*_*ier的帖子

Spark 2.4 到 Elasticsearch:防止 Dataproc 节点停用期间数据丢失?

我的技术任务是将数据从GCS(Google Cloud Storage)同步到我们的Elasticsearch集群。

我们在 Google Dataproc 集群(启用自动扩展)上使用 Apache Spark 2.4 和 Elastic Hadoop 连接器。

在执行过程中,如果 Dataproc 集群缩小规模,停用节点上的所有任务都会丢失,并且该节点上处理的数据永远不会推送到弹性。

例如,当我保存到 GCS 或 HDFS 时,就不存在此问题。

即使节点退役,如何使这项任务具有弹性?

堆栈跟踪的摘录:

阶段 2.3 中丢失任务 50.0 (TID 427, xxxxxxx-sw-vrb7.c.xxxxxxx, 执行器 43): FetchFailed(BlockManagerId(30, xxxxxxx-w-23.c.xxxxxxx, 7337, None), shuffleId=0, mapId =26,reduceId=170,message=org.apache.spark.shuffle.FetchFailedException:无法连接到 xxxxxxx-w-23.c.xxxxxxx:7337

引起原因:java.net.UnknownHostException:xxxxxxx-w-23.c.xxxxxxx

阶段 2.3 中的任务 50.0 (TID 427) 失败,但该任务不会重新执行(要么是因为该任务因 shuffle 数据获取失败而失败,所以需要重新运行前一个阶段,要么是因为不同的副本任务已经成功)。

谢谢。弗雷德

elasticsearch apache-spark elasticsearch-hadoop google-cloud-dataproc

3
推荐指数
1
解决办法
1432
查看次数