Спекулятивное выполнение в Apache Beam - PullRequest
1 голос
/ 30 октября 2019

Я не вижу упоминаний о спекулятивном выполнении в документации Apache Beam. Но этот пост утверждает, что у него что-то подобное.

преобразование ParDo является отказоустойчивым, т. Е. В случае сбоя оно перезапускается. Преобразование также имеет концепцию спекулятивного исполнения (читайте о спекулятивном исполнении в Spark, оба являются похожими основами). Обработка для данного подмножества набора данных может быть выполнена на 2 разных рабочих в любое время. Результаты, полученные от самого быстрого работника, позже используются, а для более медленного отбрасываются. В этом случае важно подчеркнуть, что реализация ParDo должна знать о параллельном выполнении на одном и том же подмножестве данных.

Это правда?

Ответы [ 2 ]

3 голосов
/ 30 октября 2019

Я считаю, что speculative execution является обязанностью механизма обработки данных, а не Beam. Тем не менее, одно из требований для преобразования Beam должно быть идемпотентным, поскольку Модель Beam не дает никаких гарантий относительно того, сколько раз ваш пользовательский код может быть вызван или повторен ( см. Требования преобразования ).

0 голосов
/ 30 октября 2019

Нет аналогичного дизайна в луче. Вы можете посмотреть документацию здесь [1], в которой есть много деталей по этой теме.

https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ParDo.java#L365

...