Как работают контрольные точки преобразования
Каждый раз, когда преобразование анализирует исходные индексы и создает или обновляет целевой индекс, оно генерирует контрольную точку.
Если ваше преобразование выполняется только один раз, логически существует только одна контрольная точка. Однако, если ваше преобразование выполняется непрерывно, оно создает контрольные точки по мере обработки и преобразования новых исходных данных. Свойство sync конфигурации преобразования настраивает создание контрольных точек, определяя поле времени.
Для создания контрольной точки непрерывное преобразование:
-
Проверяет наличие изменений в исходных индексах.
Используя простой периодический таймер, преобразование проверяет изменения в исходных индексах. Эта проверка выполняется на основе интервала, определенного в свойстве
frequencyпреобразования.Если исходные индексы не изменены или если уже выполняется создание контрольной точки, оно ожидает следующего срабатывания таймера.
Если изменения найдены, создается контрольная точка.
-
Определяет, какие сущности и/или временные корзины изменились.
Преобразование ищет изменения в сущностях или временных корзинах между последней и новой контрольной точкой. Преобразование использует значения для синхронизации исходных и целевых индексов с меньшим количеством операций, чем полное повторное выполнение.
-
Обновляет целевой индекс (фрейм данных) с внесенными изменениями.
Преобразование применяет изменения, относящиеся к новым или измененным сущностям или временным корзинам, к целевому индексу. Набор изменений может быть постраничным. Преобразование выполняет агрегированную агрегацию аналогично операции пакетного преобразования, но также вставляет фильтры запросов, основанные на предыдущем шаге, чтобы уменьшить объем работы. После применения всех изменений контрольная точка завершается.
Этот процесс создания контрольных точек включает как поиск, так и индексацию в кластере. Мы стремились обеспечить контроль над производительностью при разработке преобразований. Было решено, что лучше, если преобразование занимает больше времени для завершения, а не завершается быстро и имеет приоритет в потреблении ресурсов. Тем не менее, кластеру по-прежнему требуются достаточные ресурсы для поддержки как поиска агрегированной агрегации, так и индексации ее результатов.
Если кластер испытывает ненадлежащее снижение производительности из-за преобразования, остановите преобразование и обратитесь к Разъяснения по производительности.
Эвристики обнаружения изменений
Когда преобразование выполняется в непрерывном режиме, оно обновляет документы в целевом индексе по мере поступления новых данных. Преобразование использует набор эвристик, называемых обнаружением изменений, для обновления целевого индекса с меньшим количеством операций.
В этом примере данные сгруппированы по имени хоста. Обнаружение изменений определяет, какие имена хостов изменились, например, хосты A, C и G, и обновляет только документы с этими хостами, но не обновляет документы, которые хранят информацию о хостах B, D или любом другом хосте, который не изменился.
Другая эвристика может быть применена для временных корзин, когда используется date_histogram для группировки по временным корзинам. Обнаружение изменений определяет, какие временные корзины изменились, и обновляет только их.
Обработка ошибок
Ошибки в преобразованиях, как правило, связаны с поиском или индексацией. Для повышения устойчивости преобразований позиции курсора агрегированного поиска и поиска измененных сущностей отслеживаются в памяти и периодически сохраняются.
Ошибки контрольных точек можно разделить на следующие категории:
- Временные ошибки: контрольная точка повторяется. Если происходит 10 последовательных ошибок, преобразование получает статус «ошибка». Например, такая ситуация может возникнуть при сбоях фрагментов и запросы возвращают только частичные результаты.
- Невосстановимые ошибки: преобразование немедленно завершается с ошибкой. Например, такая ситуация возникает, когда исходный индекс не найден.
- Ошибки настройки: преобразование повторяется с измененными параметрами. Например, если при агрегированной агрегации возникают ошибки памяти в основном разрыве цепи, преобразование получает частичные результаты. Агрегированный поиск повторяется с меньшим количеством корзин. Эта попытка повторяется через интервал, определенный в свойстве
frequencyдля преобразования. Если поиск повторяется до тех пор, пока не достигается минимальное количество корзин, возникает невосстановимая ошибка.
Если узел, выполняющий преобразования, выходит из строя, преобразование перезапускается с последней сохраненной позиции курсора. Этот процесс восстановления может повторить часть работы, которую преобразование уже выполнило, но обеспечивает согласованность данных.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/transform-checkpoints.html