Повторное использование контрольной точки spark hdfs - PullRequest
0 голосов
/ 19 июня 2020

Мы используем 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-адрес.

Есть ли способ избежать этого?

1 Ответ

0 голосов
/ 05 июля 2020

Потоки Spark хранят 2 типа данных контрольных точек

  1. Контрольные точки метаданных - Сохранение информации, определяющей потоковые вычисления, в отказоустойчивое хранилище, такое как HDFS. Это используется для восстановления после сбоя узла, на котором запущен драйвер потокового приложения.

  2. Контрольные точки данных - Сохранение сгенерированных RDD в надежное хранилище. Это необходимо в некоторых преобразованиях с отслеживанием состояния, которые объединяют данные из нескольких пакетов.

Более подробную информацию можно найти по ссылке [1].

Это причина, по которой New узел имени кластера пытается подключиться к старому узлу имени кластера, но, поскольку старый кластер уже был завершен, у вас нет маршрута к исключению узла. Поскольку данные контрольных точек также используют информацию метаданных, в которой есть детали кластера, данные контрольных точек могут использоваться только в одном кластере и не могут быть переданы для обработки в разные кластеры.

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

...