【发布时间】:2020-10-09 09:56:57
【问题描述】:
我们使用 Spark 2.4.3 进行流处理。这是在 AWS EMR 上。 EMR 中存在集群故障的可能性,因此我们决定定期将数据备份到 S3。
参考:https://cm.engineering/using-hdfs-to-store-spark-streaming-application-checkpoints-2146c1960d30
现在,当我们尝试在另一个集群中恢复一个集群中生成的检查点时,我们会收到以下错误:
User class threw exception: java.net.NoRouteToHostException: No Route to Host from ip-xx-xx-xx-215/xx.xx.xx.215 to ip-xx-xx-xx-42.YYYYYYYY-Y.YYYYY.internal:8020 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在这个 ip-xx-xx-xx-42.YYYYYYYY-Y.YYYYY.internal:8020 是旧集群。我们在文本编辑器中打开了检查点文件。我们可以在那里找到 IP 地址。
我们有办法避免这种情况吗?
【问题讨论】:
-
我不知道保存检查点是如何工作的。但是我会说,如果您定期将数据从 HDFS 复制到 S3,为什么不使用 EMRFS (s3) 而不是 HDFS?你不需要备份任何东西,你会直接读写到s3。
-
@Snigdhajyoti,我们比较了检查点延迟,发现 HDFS 的值最低。还有,成本!
-
是的,这是有道理的。
标签: apache-spark hdfs spark-streaming amazon-emr