我的技术任务是将数据从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