【问题标题】:Re using spark hdfs checkpoint重新使用 spark hdfs 检查点
【发布时间】: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


【解决方案1】:

Spark 流存储 2 种类型的检查点数据

  1. 元数据检查点 - 将定义流计算的信息保存到 HDFS 等容错存储中。这是 用于从运行驱动程序的节点的故障中恢复 流式应用程序。

  2. 数据检查点 - 将生成的 RDD 保存到可靠的存储中。这在一些有状态的转换中是必要的 跨多个批次合并数据。

更多详情可从链接 [1] 中找到。

这就是为什么新集群名称节点尝试连接到旧集群名称节点但由于旧集群已经终止,您没有路由到主机异常。由于 checkpoint 数据也使用了具有集群详情的元数据信息,所以 checkpoint 数据只能在同一个集群上使用,不能转移到不同的集群进行处理。

[1]https://spark.apache.org/docs/latest/streaming-programming-guide.html#checkpointing

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2015-06-16
    • 2017-04-23
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多