---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.3
alternate:
  - https://ytsaurus.tech/docs/en/flow/concepts/spec.md
  - https://ytsaurus.tech/docs/ru/flow/concepts/spec.md
  - href: https://ytsaurus.tech/docs/ru/flow/concepts/spec.md
    type: text/markdown
    title: Markdown version
  - href: https://ytsaurus.tech/docs/ru/llms.txt?revision=181542d8c2d9f36be925894a517db8203cafae65
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt?revision=181542d8c2d9f36be925894a517db8203cafae65

<!-- source: ru/_includes/flow/concepts/spec.md -->
# Spec, DynamicSpec и Config в YTsaurus Flow

Спека &mdash; основной способ описания желаемого [пайплайна](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#pipeline). Любой высокоуровневый API к Flow генерирует спеку пайплайна.

У пайплайна есть две спеки &mdash; `Spec` и `DynamicSpec`:

* `Spec` &mdash; статический объект, содержащий топологию всего пайплайна. Этот объект можно менять только при условии остановки пайплайна. Гарантируется, что в момент выполнения вся система имеет одинаковое представление о `Spec`.
* `DynamicSpec` &mdash; динамическая часть спеки. Её можно менять в любой момент, она применится ко всем частям системы асинхронно. В `DynamicSpec` обычно хранятся размеры буферов, таймауты, число партиций и т. п.

Также важной частью является `Config` ноды. В отличие от спеки, конфиг задаётся ровно один раз в рамках релиза и не подлежит динамическому изменению. Возможно, в будущем часть параметров конфига будут перемещены в спеки.

{% note warning %}

Все параметры во Flow имеют оптимальные значения по умолчанию. Не меняйте настройки, если вы не уверены, для чего они нужны и на что могут повлиять.

{% endnote %}

Значения по умолчанию можно найти поиском по имени параметра в кодовой базе Flow. В основном они сгруппированы в файле [spec.cpp](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.cpp).

## Spec

<!-- source: ru/flow/generated_docs/NYT_NFlow_TPipelineSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `validate_binary_version` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `binary_version` | **Тип**: `std::string`
**Значение по умолчанию**: `TString("")`
 ||
|| `validate_binary_checksum` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `binary_checksum` | **Тип**: `std::string`
**Значение по умолчанию**: `TString("")`
 ||
|| `computations` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TComputationIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TComputationSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TComputationSpec)`>>`
**Значение по умолчанию**: `{}`
Именованное перечисление всех узлов пайплайна. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `resources` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TResourceIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TResourceSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TResourceSpec)`>>`
**Значение по умолчанию**: `{}`
Именованное перечисление всех ресурсов. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TStreamSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TStreamSpec)`>>`
**Значение по умолчанию**: `{}`
Именованное перечисление всех потоков данных. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TPipelineSpec.md -->

### Computation

<!-- source: ru/flow/generated_docs/NYT_NFlow_TComputationSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `computation_class_name` | **Тип**: `std::string`
**Обязательный параметр**
Имя встроенного класса Computation или адаптера process function.

Для новой пользовательской логики на C++ выберите один из встроенных адаптеров `TProcessFunction*Computation`. Саму функцию зарегистрируйте через `YT_FLOW_DEFINE_PROCESS_FUNCTION` и укажите в `processing_function`. Пользовательские классы Computation создавать не следует. ||
|| `process_function_graph` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TProcessFunctionGraphSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TProcessFunctionGraphSpec)`>`
Несколько process function, связанных идентификаторами стримов и выполняемых в одном `TProcessFunctionComputation` или `TProcessFunctionSwiftMapComputation`. Можно объединять batch и per-message функции. ID внутренних сообщений выводятся из исходных родителей на границе графа, выходного стрима и suffix; timestamps и внешние ID назначаются по правилам host computation. Swift требует детерминированного replay; batch функции задают родителей каждого результата через `SetParents`. Объединение разных входных сообщений требует `parameters/allow_batching_with_relaxed_guarantees = %true` и даёт гарантию at-least-once. Раннер заменяет граф полями `processing_function`, `processing_function_parameters`, `timer_streams`, `streams_dependency` и `allow_timer_self_dependency`, поэтому не задавайте эти поля вместе с графом. ||
|| `processing_function` | **Тип**: `std::optional<std::string>`
Полное имя process function, зарегистрированной через `YT_FLOW_DEFINE_PROCESS_FUNCTION`. Обязательно для адаптеров `TProcessFunction*Computation`, если не задан `process_function_graph`. ||
|| `processing_function_parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
Статические параметры process function. Тип параметров задаётся при регистрации `YT_FLOW_DEFINE_PROCESS_FUNCTION`. ||
|| `group_by_schema` | **Тип**: `NYT::TIntrusivePtr<NYT::NTableClient::TTableSchema>`
**Значение по умолчанию**: `{'value': [], 'attributes': {'strict': true, 'unique_keys': false}}`
Схема для группировки всех входных потоков, является схемой динтаблицы. Свойства и требования к схеме:

* Не содержит никаких правил на порядок.
* Может содержать вычислимые поля.
* Должна быть пустой только у `SourceComputation`.
* Для остальных `Computation` первая колонка должна иметь тип `uint64`. Рекомендуется, чтобы эта колонка была вычислимым хешем от остальных колонок (например, `farm_hash`). Нужно иметь ввиду, что использование операции взятия остатка при целочисленном делении `%` и `bigb_hash` в `expression` запрещено. ||
|| `experimental_enable_non_uint_key` | **Тип**: `std::optional<bool>`
 ||
|| `input_stream_ids` | **Тип**: `THashSet<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>>`
**Значение по умолчанию**: `[]`
Входные потоки.

Схемы всех потоков должны быть приводимы к `group_by_schema`. ||
|| `output_stream_ids` | **Тип**: `THashSet<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>>`
**Значение по умолчанию**: `[]`
Выходные потоки Computation'а. В частности, могут использоваться как входы у других Computation'ов. ||
|| `streams_dependency` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, THashSet<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>>>`
**Значение по умолчанию**: `{}`
Описание зависимостей между потоками, включая внутренние `source` и `timer` потоки.

Пример: `{stream1, {stream2, stream3}}` &mdash; `stream1` зависит от потоков `stream2` и `stream3`.

Указывается только для `timer`- и `output`-потоков. В случае отсутствия описания для потока список зависимостей будет сгенерирован автоматически:

* у `timer`-потоков в списке будут все `input`- и `source`-потоки;
* у `output`-потоков &mdash; все `timer`, `input` и `source`. ||
|| `watermark_strategy` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TWatermarkStrategySpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TWatermarkStrategySpec)`>`
**Значение по умолчанию**: `{}`
Настройки, связанные с `EventWatermark`.

Необязательный параметр. Должен быть указан в рамках `SourceComputation`. ||
|| `required_resource_ids` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TResourceIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TResourceDescription](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TResourceDescription)`>>`
**Значение по умолчанию**: `{}`
Список необходимых ресурсов для работы `Computation`.

Имеет параметр `alias` для локального переименования ресурса (например, `Computation` ожидает ресурс с именем `YTClient`, а подаваемый ресурс имеет другое имя). Через параметры `controller` и `worker` можно управлять созданием ресурса на `Controller` и на `Worker`. ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные параметры для `Computation` и `ComputationController` ||
|| `timer_streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TTimerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TTimerSpec)`>>`
**Значение по умолчанию**: `{}`
Настройки всех `timer` потоков. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `key_visitor_streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TKeyVisitorStreamSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TKeyVisitorStreamSpec)`>>`
**Значение по умолчанию**: `{}`
Настройки всех `key_visitor` потоков. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `source_streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TSourceSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TSourceSpec)`>>`
**Значение по умолчанию**: `{}`
Настройки всех `source` потоков. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `sinks` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TSinkIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TSinkSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TSinkSpec)`>>`
**Значение по умолчанию**: `{}`
Настройки всех `sink`. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `external_state_managers` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TExternalStateManagerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TExternalStateManagerSpec)`>>`
**Значение по умолчанию**: `{}`
Декларативное объявление [external state](https://ytsaurus.tech/docs/ru/flow/cpp/state.md#external-state) менеджеров для этого `Computation`. Ключ — имя клиента, которое process function передаёт в `InitExternalStateClient` (должен начинаться с `/`, например `/state`); значение содержит имя класса менеджера и его параметры. ||
|| `external_state_joiners` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TExternalStateJoinerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TExternalStateJoinerSpec)`>>`
**Значение по умолчанию**: `{}`
Декларативное объявление [external state](https://ytsaurus.tech/docs/ru/flow/cpp/state.md#external-state-joiner) joiner'ов (read-only-доступ к внешним стейтам через join по ключу) для этого `Computation`. Ключ — имя клиента, которое process function передаёт в `InitExternalStateClient` (должен начинаться с `/`, например `/state`); значение содержит имя класса joiner'а и его параметры. ||
|| `state_joiners` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TStateJoinerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TStateJoinerSpec)`>>`
**Значение по умолчанию**: `{}`
Декларативное объявление [state](https://ytsaurus.tech/docs/ru/flow/cpp/state.md#state-joiner) joiner'ов (read-only-доступ к внутреннему стейту другого `Computation` через join по ключу) для этого `Computation`. Ключ — имя клиента, которое process function передаёт в `InitClient` (должен начинаться с `/`); значение указывает целевой `computation_id`, его `state_name` и `join_on`. ||
|| `heavy_hitters` | **Тип**: [NYT::NFlow::THeavyHittersSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_THeavyHittersSpec)
**Значение по умолчанию**: `{}`
Настройки обнаружения высокочастотных ключей. ||
|| `pivot_finder` | **Тип**: [NYT::NFlow::TPivotFinderSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TPivotFinderSpec)
**Значение по умолчанию**: `{}`
 ||
|| `input_ordering` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TInputOrderingSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TInputOrderingSpec)`>`
**Значение по умолчанию**: `{}`
Настройки порядка обработки входных потоков. ||
|| `distribution_ordering` | **Тип**: [NYT::NFlow::EDistributionOrdering](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EDistributionOrdering)
**Значение по умолчанию**: `strict`
Настройки порядка распределения выходных сообщений. Управляет тем, может ли быть гонка между останавливающимися и работающими партициями с точки зрения порядка распределения выходных сообщений порожденных из входящих сообщений с одним и тем же ключом. ||
|| `worker_group` | **Тип**: `NYT::TStrongTypedef<std::string, NYT::NFlow::TWorkerGroupIdTag, NYT::TStrongTypedefOptions{true}>`
**Значение по умолчанию**: `TString("")`
 ||
|| `allow_timer_self_dependency` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `use_compact_input_messages` | **Тип**: `std::optional<bool>`
Использовать компактную таблицу `compact_input_messages` для [дедупликации входных сообщений](https://ytsaurus.tech/docs/ru/flow/concepts/guarantees.md) вместо `input_messages`. Компактный ключ дедупликации хранит только хеш `key[0]` и `CityHash128(message_id)`, что снижает размер строки (~200 байт → ~71 байт).

Необязательный параметр. Если значение не задано, таблица выбирается автоматически: компактная используется всегда, кроме случая, когда включён `experimental_enable_non_uint_key` (тогда первая колонка ключа может быть не `uint64`, и для дедупликации нужен полный ключ). Явно заданное значение имеет приоритет над автоматическим выбором. Включать `use_compact_input_messages` вместе с `experimental_enable_non_uint_key` запрещено. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TComputationSpec.md -->

#### WatermarkStrategy {#watermark-strategy}

Рекомендуется заполнять у `SourceComputation`. Остальные `Computation` могут не поддерживать или поддерживать ограниченно.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TWatermarkStrategySpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `event_timestamp_assigner` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TEventTimestampAssignerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TEventTimestampAssignerSpec)`>`
**Значение по умолчанию**: `{}`
Автоматическое заполнение `EventTimestamp` всех `output` сообщений на базе значения определённой колонки. ||
|| `watermark_generator` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TWatermarkGeneratorSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TWatermarkGeneratorSpec)`>`
Настройки алгоритма генерации `EventWatermark`. Для `Computation` хотя бы с одним `source` отсутствие параметра эквивалентно пустому блоку с настройками по умолчанию. `Computation` с несколькими `source` обрабатывается как несколько независимых single-source `Computation`: для каждого `source` по отдельности и в этом порядке применяются эвристики недоступных групп, idle-партиций и late-data-партиций, а подготовленные партиции объединяются только после этого. `idle_partitions.max_ratio` применяется отдельно к каждому `source`, а решения о подавлении availability-групп одного `source` не влияют на другие. Поэтому полностью idle `source` не считается partial-idle stall и сам по себе не поднимает `/idle_partitions_watermark_stall`, даже если он удерживает итоговый watermark `Computation`, пока другой `source` остаётся активным. Идентификаторы availability-групп между источниками могут различаться. ||
|| `watermark_alignment` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TWatermarkAlignmentSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TWatermarkAlignmentSpec)`>`
Настройки выравнивания `source` между разными партициями, в том числе разных `Computation` ||
|| `watermark_percentile` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TWatermarkPercentileSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TWatermarkPercentileSpec)`>`
**Значение по умолчанию**: `{}`
Настройка "персентильного" `EventWatermark`. Используется для игнорирования самых старых событий в пределах сконфигурированного процента. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TWatermarkStrategySpec.md -->

##### EventTimestampAssigner {#event-timestamp-assigner}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TEventTimestampAssignerSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `column` | **Тип**: `std::optional<std::string>`
Колонка со временем ||
|| `format` | **Тип**: [NYT::NFlow::ETimestampFormat](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_ETimestampFormat)
**Значение по умолчанию**: `seconds`
Используемый формат времени (`seconds` и `milliseconds`) ||
|| `limit_by_system_timestamp` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Ограничить `EventTimestamp` значением `SystemTimestamp` для защиты от битых значений из будущего ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TEventTimestampAssignerSpec.md -->

##### WatermarkGenerator {#watermark-generator}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TWatermarkGeneratorSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `use_source_watermark` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Использовать `SourceWatermark` для генерации `EventWatermark`. Эта опция полностью отключает все эвристики для определения `EventWatermark` и её нужно использовать строго в тех случаях, когда во входном потоке есть специальные маркеры с `EventWatermark`. ||
|| `out_of_orderness_bound` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `0`
Ограничение сверху на возможное переупорядочивание событий, используемое для оценки `EventWatermark`. По умолчанию переупорядочивание не учитывается. ||
|| `idle_partitions` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TIdlePartitionsSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TIdlePartitionsSpec)`>`
Настройки эвристики для игнорирования партиций с нулевым потоком записи. ||
|| `late_data_partitions` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TLateDataPartitionsSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TLateDataPartitionsSpec)`>`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TWatermarkGeneratorSpec.md -->

Настройки `IdlePartitions`:

<!-- source: ru/flow/generated_docs/NYT_NFlow_TIdlePartitionsSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `duration` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1m`
Время, как долго партиция должна быть пустой, чтобы поверить, что в неё не идёт записи. ||
|| `max_ratio` | **Тип**: `double`
**Значение по умолчанию**: `0.4`
Доля партиций, которые могут быть исключены из расчёта вотермарка этой логикой. Идейный смысл опции &mdash; защита от продвижения вотермарка, когда поставщик данных прекратил писать сообщения в очередь по причине инцидента на его стороне. Выставление значения опции в `1.0` по сути отключает эту защиту. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TIdlePartitionsSpec.md -->

Настройки `UnavailablePartitionGroups`:

<!-- source: ru/flow/generated_docs/NYT_NFlow_TUnavailablePartitionGroupsSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

**В структуре нет основных параметров.**
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TUnavailablePartitionGroupsSpec.md -->

##### WatermarkAlignment {#watermark-alignment}

Модуль используется для выравнивания входных [потоков](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#stream-and-computation). Может приводить к полной остановке чтения в случае проблем с доступностью и/или оценкой `Watermark` у отдельных [партиций](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#partition) или `SourceComputation`.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TWatermarkAlignmentSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `group_name` | **Тип**: `NYT::TStrongTypedef<std::string, NYT::NFlow::TWatermarkAlignmentGroupTag, NYT::TStrongTypedefOptions{true}>`
**Значение по умолчанию**: `default-alignment-group`
Имя группы ||
|| `drift_bound` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `20m`
Максимальное возможное опережение вотермарка отдельной партиции от вотермарка всей группы ||
|| `read_delays` | **Тип**: `std::optional<THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, `[TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)`>>`
Опция для продвинутого использования. Если `EventTimestamp` выходного сообщения больше, чем `EventWatermark - Delay` хотя бы для одного указанного потока, то чтение приостанавливается. При неправильной настройке опция может привести к полной остановке чтения. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TWatermarkAlignmentSpec.md -->

##### WatermarkPercentile {#watermark-percentile}

Модуль используется для игнорирования старых данных в потоках при расчёте `EventWatermark`. Каждая партиция по каждому исходящему потоку поддерживает множество ещё необработанных сообщений. По умолчанию для расчета `EventWatermark` берется минимальное значение `EventTimestamp` среди всех сообщений (то есть учитывается `100%` событий).

Если событие попадает в `value` персентиль - оно безусловно учитывается для расчёта `EventWatermark`. Если событие не попадает в указанный персентиль, однако отличается от `EventTimestamp` этих событий не более, чем на `delay` - то оно тоже будет учтено для расчёта `EventWatermark`. Таким образом, алгоритм расчёта сводится к `EventWatermark = max(MinEventTimestamp, PercentileEventTimestamp - delay)`, где `MinEventTimestamp` - минимум по всем событиям, а `PercentileEventTimestamp` - значение `EventTimestamp` в соответствующем `value` персентиле.

Нужно учитывать, что `inflight` одного потока в рамках партиции может содержать в моменте десятки сообщений, поэтому значения вида `99`, `99.9` могут работать неотличимо от `100` - то есть не приводя к желаемому эффекту. Кроме того, даже если старых событий от всего потока меньше 1%, эти старые события могут быть распределены неравномерно между партициями. Поэтому разумнее выставлять значения вида `80`, `90` и т.п. Чтобы избежать негативных эффектов в виде неучёта свежих событий, существует параметр `delay`: благодаря ему будет теряться информация лишь о действительно старых событиях. Если таковых нет, то система будет работать так же, как и при `value`, равном `100`, без потери какой-либо информации.

Данный модуль влияет только на расчёт `EventWatermark` и никак не влияет на `SystemWatermark`.

{% note warning %}

Настройки никак не влияют на агрегацию информации с разных партиций - будет взято в любом случае минимальное значение по всем партициям.

{% endnote %}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TWatermarkPercentileSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `value` | **Тип**: `NYT::TStrongTypedef<double, NYT::NFlow::TWatermarkPercentileTag, NYT::TStrongTypedefOptions{true}>`
**Значение по умолчанию**: `100.0`
Процент безусловно учитываемых для расчёта `EventWatermark` событий ||
|| `delay` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1m`
Порог свежести для событий ниже выбранного персентиля ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TWatermarkPercentileSpec.md -->

##### LateDataPartitions {#late-data-partitions}

Модуль используется для игнорирования партиций, содержащих исключительно старые данные. Работает аналогично `WatermarkPercentile`, но на уровне всех партиций, а не сообщений внутри партиции.

`WatermarkPercentile` позволяет игнорировать старые сообщения **внутри партиции**, но если вся партиция содержит только старые данные, она всё равно будет тормозить общий `EventWatermark`. Модуль `LateDataPartitions` решает эту проблему, позволяя игнорировать такие партиции целиком.

Алгоритм расчёта: `FinalWatermark = max(MinPartitionWatermark, PercentilePartitionWatermark - Delay)`, где `MinPartitionWatermark` — минимальный watermark среди всех партиций, а `PercentilePartitionWatermark` — watermark партиции в указанном `value` перcентиле (партиции сортируются по watermark).

Если партиция попадает в `value` персентиль — она безусловно учитывается. Если партиция не попадает в указанный персентиль, однако её watermark отличается от персентильного не более, чем на `delay` — она тоже будет учтена. Партиции с watermark ниже порога (`PercentileWatermark - Delay`) считаются содержащими только late data, и их watermark «скрывается» (приводится к `FinalWatermark`).

Например, при `value=90` и 100 партициях: 90% партиций (с наибольшими watermark) учитываются безусловно, а оставшиеся 10% (с наименьшими watermark) — только если их отставание от 90-го персентиля не превышает `delay`.

{% note warning %}

Этот модуль применяется **после** `IdlePartitions`. Idle-партиции уже исключены из расчёта до применения логики `LateDataPartitions`.

{% endnote %}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TLateDataPartitionsSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `value` | **Тип**: `NYT::TStrongTypedef<double, NYT::NFlow::TWatermarkPercentileTag, NYT::TStrongTypedefOptions{true}>`
**Значение по умолчанию**: `100.0`
 ||
|| `delay` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1m`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TLateDataPartitionsSpec.md -->

#### Timer

<!-- source: ru/flow/generated_docs/NYT_NFlow_TTimerSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `time_type` | **Тип**: [NYT::NFlow::ETimeType](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_ETimeType)
**Значение по умолчанию**: `event_time`
Используемый таймером тип времени: `event_time`, `system_time`, `real_time` ||
|| `streams` | **Тип**: `std::optional<THashSet<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>>>`
Перечисление потоков, за которыми таймер следит. ||
|| `streams_with_delays` | **Тип**: `std::optional<THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, `[TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)`>>`
Перечисление потоков, за которыми таймер следит с указанием индивидуальной задержки ||
|| `deduplicate_equal_timestamps` | **Тип**: `bool`
**Значение по умолчанию**: `true`
Включение логики дедупликации таймеров: при попытке создания таймера с тем же ключом и `trigger_timestamp`, останется только один, с меньшим значением `EventTimestamp` ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TTimerSpec.md -->

Если не указаны `streams` и `streams_with_delays`, то таймер следит за потоками согласно `streams_dependency` с нулевой дополнительной задержкой.

#### Source {#source_spec}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TSourceSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `source_class_name` | **Тип**: `std::string`
**Значение по умолчанию**: `TString("")`
Имя соответствующего класса.

Должен быть зарегистрирован с помощью `YT_FLOW_DEFINE_SOURCE`. ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные параметры для соответствующего класса. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TSourceSpec.md -->

Встроенные реализации [сорсов](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#source) описаны в [документации по коннекторам](https://ytsaurus.tech/docs/ru/flow/connectors/about.md).

#### Sink {#sink_spec}

<!-- source: ru/flow/generated_docs/NYT_NFlow_TSinkSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `sink_class_name` | **Тип**: `std::string`
**Значение по умолчанию**: `TString("")`
Имя соответствующего класса.

Должен быть зарегистрирован с помощью `YT_FLOW_DEFINE_SINK`. ||
|| `input_stream_ids` | **Тип**: `THashSet<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>>`
**Значение по умолчанию**: `[]`
Список входных потоков.

Здесь могут быть только потоки, указанные в `output_stream_ids` всего `Computation`. ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные параметры для соответствующего класса. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TSinkSpec.md -->

Встроенные реализации [синков](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#sink) описаны в [документации по коннекторам](https://ytsaurus.tech/docs/ru/flow/connectors/about.md).

#### HeavyHitters

Модуль обнаружения высокочастотных ключей.

<!-- source: ru/flow/generated_docs/NYT_NFlow_THeavyHittersSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `window` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5m`
Временное окно. ||
|| `threshold` | **Тип**: `double`
**Значение по умолчанию**: `0.01`
Ключи, которые встречаются в потоке чаще, чем `threshold`, будут считаться высокочастотными. Алгоритм использует `O(1 / threshold)` памяти. ||
|| `limit` | **Тип**: `long`
**Значение по умолчанию**: `5`
Максимальное количество показываемых высокочастотных ключей. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_THeavyHittersSpec.md -->

#### InputOrdering

Настройки порядка обработки событий из входных потоков. Первыми будут обработаны события с наименьшим временем.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TInputOrderingSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `time_type` | **Тип**: [NYT::NFlow::ETimeType](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_ETimeType)
**Значение по умолчанию**: `event_time`
Время для сортировки: `event_time`, `system_time`, `real_time` ||
|| `stream_delays` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, `[TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)`>`
**Значение по умолчанию**: `{}`
Задержки для входных потоков. Если поток не указан &mdash; то задержки не будет ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TInputOrderingSpec.md -->

### Streams

В `streams` должны быть зарегистрированы только `output` потоки. `Source` потоки существуют только внутри соответствующих партиций и никак не персистятся в `YT`. А `timer` потоки имеют фиксированную схему.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TStreamSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `class_name` | **Тип**: `std::optional<std::string>`
 ||
|| `schema` | **Тип**: `NYT::TIntrusivePtr<NYT::NTableClient::TTableSchema>`
**Обязательный параметр**
Cхема потока. Является схемой динтаблицы. Не может содержать сортировки и вычислимые поля.

Изменение схем рекомендуется осуществлять через полную остановку пайплайна: в этом случае внутри пайплайна не останется `output` сообщений. ||
|| `migration_function` | **Тип**: `std::string`
**Значение по умолчанию**: `NYT::NFlow::DefaultMigrationFunction`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TStreamSpec.md -->

### Resource

<!-- source: ru/flow/generated_docs/NYT_NFlow_TResourceSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `resource_class_name` | **Тип**: `std::string`
**Обязательный параметр**
Имя соответствующего класса.

Должен быть зарегистрирован с помощью макроса `YT_FLOW_DEFINE_RESOURCE`. ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные параметры для соответствующего класса. ||
|| `file_providers` | **Тип**: `THashMap<NYT::TStrongTypedef<std::string, NYT::NFlow::TFileProviderIdTag, NYT::TStrongTypedefOptions{true}>, NYT::TIntrusivePtr<`[NYT::NFlow::TFileProviderSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TFileProviderSpec)`>>`
**Значение по умолчанию**: `{}`
Именованные файловые провайдеры ресурса. Контроллер добавляет файловый снимок в целевую ревизию только после обнаружения всех имён; собственная часть целевой спецификации контроллера может публиковаться независимо. Воркеры материализуют точные ревизии из полученной цели. Такие ресурсы поддерживаются только на воркерах и должны иметь `controller = %false` во всех путях `required_resource_ids`, которые могут до них дойти. Ключи должны соответствовать `[0-9A-Za-z_-]+`. ||
|| `dependencies` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TResourceIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TResourceDescription](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TResourceDescription)`>>`
**Значение по умолчанию**: `{}`
Ресурсы, от которых зависит данный ресурс. Повторяет структуру `required_resource_ids` из `Computation`. ||
|| `required_capabilities` | **Тип**: `THashMap<std::string, long>`
**Значение по умолчанию**: `{}`
 ||
|| `preload_required` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `always_on` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Если `true`, ресурс загружается заранее при старте юнита и держится в памяти всё время жизни юнита (не выгружается), а не лениво при первом обращении. Загружается только на тех юнитах, где ресурс требует хотя бы одна computation (см. `worker` / `controller` в `required_resource_ids`): ресурс, нужный только на worker'е, не грузится на controller'е, а ресурс, который не требует ни одна computation, не грузится вовсе. Взаимоисключающе с `preload_required`. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TResourceSpec.md -->

## DynamicSpec

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicPipelineSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `target_state` | **Тип**: [NYT::NFlow::EPipelineState](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EPipelineState)
**Значение по умолчанию**: `unknown`
Целевое состояние системы. Для изменения используйте команды `start-pipeline`, `stop-pipeline`, `pause-pipeline`. ||
|| `computations` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TComputationIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicComputationSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicComputationSpec)`>>`
**Значение по умолчанию**: `{}`
Именованное перечисление всех узлов пайплайна. ||
|| `resources` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TResourceIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicResourceSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicResourceSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `throttlers` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TThrottlerIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicThrottlerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicThrottlerSpec)`>>`
**Значение по умолчанию**: `{}`
Набор именованных распределённых троттлеров, общих для всех `Computation` пайплайна. Ключи являются id троттлеров и должны соответствовать `[0-9A-Za-z_-]+`. Подробнее в разделе [Distributed Throttler](https://ytsaurus.tech/docs/ru/flow/concepts/distributed_throttler.md). ||
|| `job_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicJobManagerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicJobManagerSpec)`>`
**Значение по умолчанию**: `{}`
Настройки `JobManager`. ||
|| `message_distributor` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicMessageDistributorSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicMessageDistributorSpec)`>`
**Значение по умолчанию**: `{}`
Настройки `MessageDistributor`. ||
|| `job_tracker` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicJobTrackerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicJobTrackerSpec)`>`
**Значение по умолчанию**: `{}`
Настройки `JobTracker`. ||
|| `controller_connector` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicControllerConnectorSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicControllerConnectorSpec)`>`
**Значение по умолчанию**: `{}`
Настройки `ControllerConnector`. ||
|| `singletons` | **Тип**: `NYT::TIntrusivePtr<`[NYT::TSingletonsDynamicConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_TSingletonsDynamicConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `enable_mermaid_graph_describe` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `flow_view_cache_codec` | **Тип**: [NYT::NCompression::ECodec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NCompression_ECodec)
**Значение по умолчанию**: `zstd_2`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicPipelineSpec.md -->

`Stream` и `Resource` в данный момент не имеют или не поддерживают динамические параметры.

### Computation

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicComputationSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `batch_duration` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Время максимального набора входного батча. Для очередей YTsaurus неполный батч добирается, пока с предыдущего батча не пройдёт это время; после неполного ответа очереди следующий запрос тоже выполняется не раньше этого момента. ||
|| `max_rows_per_batch` | **Тип**: [NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)
**Значение по умолчанию**: `1K`
Максимальный размер входного батча в строках. Считается отдельно для `input_streams`, `timer_streams` и для каждого из `source_streams`. Для очередей YTsaurus считаются распакованные сообщения Flow; батч может превысить лимит на одну строку очереди. ||
|| `max_bytes_per_batch` | **Тип**: [NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)
**Значение по умолчанию**: `10Mi`
Максимальный размер входного батча в байтах. Считается аналогично `max_rows_per_batch`. Для очередей YTsaurus считается размер распакованных сообщений; превышение — как для `max_rows_per_batch`. ||
|| `max_keys_per_batch` | **Тип**: `std::optional<`[NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)`>`
 ||
|| `draining` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Режим `Draining` нужен для сброса пайплайна &mdash; в нём `Computation` перестанет запускать таймеры и доставать новые события из `Source`.

Команда `stop-pipeline` останавливает весь пайплайн через полный сброс. В отдельных `Computation` режим можно выставлять для дебага. ||
|| `empty_batch_backoff` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `250ms`
В случае пустой эпохи `Computation` дополнительно «спит» указанное время. Не рекомендуется выставлять параметр меньше 100 мс. ||
|| `lease_check_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1m`
 ||
|| `retryable_request` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicRetryableRequestSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicRetryableRequestSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `tracer` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicPartitionTracerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicPartitionTracerSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные динамические параметры класса `Computation`. ||
|| `processing_function_parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
Динамические параметры process function. Тип параметров задаётся при регистрации `YT_FLOW_DEFINE_PROCESS_FUNCTION`. Для графа process function содержит динамические параметры узлов в `nodes`. ||
|| `source_streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicSourceSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicSourceSpec)`>>`
**Значение по умолчанию**: `{}`
Динамические параметры всех `Sources`. ||
|| `key_visitor_streams` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TStreamIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicKeyVisitorStreamSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicKeyVisitorStreamSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `sinks` | **Тип**: `THashMap<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TSinkIdTag>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicSinkSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicSinkSpec)`>>`
**Значение по умолчанию**: `{}`
Динамические параметры всех `Sinks`. ||
|| `external_state_managers` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicExternalStateManagerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicExternalStateManagerSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `external_state_joiners` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicExternalStateJoinerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicExternalStateJoinerSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `state_joiners` | **Тип**: `THashMap<std::string, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicStateJoinerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicStateJoinerSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `state_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicStateManagerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicStateManagerSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `input_store` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicInputStoreSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicInputStoreSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `timer_store` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicTimerStoreSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicTimerStoreSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `output_store` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicOutputStoreSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicOutputStoreSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `timer_store_count_limit` | **Тип**: [NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)
**Значение по умолчанию**: `250K`
 ||
|| `timer_store_byte_size_limit` | **Тип**: [NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)
**Значение по умолчанию**: `100Mi`
 ||
|| `blocked_time_window` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10m`
Окно усреднения для доли времени, которую джоба провела заблокированной на каждом из лимитов (`blocked_share` в диагностиках). Доля нормируется на время жизни джобы, поэтому джоба, заблокированная с самого старта, показывает `~1` независимо от своего возраста. ||
|| `input_rows_throttler_id` | **Тип**: `std::optional<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TThrottlerIdTag>>`
Id троттлера для ограничения скорости обработки сообщений. Если задан, перед каждой итерацией `Computation` ждёт квоту, равную числу сообщений во входном батче. Id должен присутствовать в `dynamic_spec/throttlers`. Подробнее в разделе [Distributed Throttler](https://ytsaurus.tech/docs/ru/flow/concepts/distributed_throttler.md). ||
|| `input_bytes_throttler_id` | **Тип**: `std::optional<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TThrottlerIdTag>>`
Аналогично `input_rows_throttler_id`, но квотируется суммарный `byte_size` сообщений батча &mdash; системный размер их сериализованного представления. ||
|| `input_rows_throttler_class_id` | **Тип**: `std::optional<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TQuotaClassIdTag>>`
Класс квоты для троттлера из `input_rows_throttler_id`. Класс должен быть объявлен в этом троттлере; `default` выбирает зарезервированный класс с весом `1.0`. Требует заданного `input_rows_throttler_id`. ||
|| `input_bytes_throttler_class_id` | **Тип**: `std::optional<NYT::NFlow::TStrongIdentifierTypedef<NYT::NFlow::TQuotaClassIdTag>>`
Класс квоты для троттлера из `input_bytes_throttler_id`. Класс должен быть объявлен в этом троттлере; `default` выбирает зарезервированный класс с весом `1.0`. Требует заданного `input_bytes_throttler_id`. ||
|| `skip_if_expression` | **Тип**: `std::optional<std::string>`
YTQL-предикат, по которому входные сообщения отфильтровываются (пропускаются) ещё до обработки `Computation`. Сообщение пропускается (дропается), если предикат вычисляется в булево `true`.

Предикат вычисляется над колонками `payload` сообщения плюс мета-колонками `$message_id`, `$stream_id`, `$system_timestamp`, `$event_timestamp`, `$alignment_timestamp`. Результат обязан быть булевым: `NULL` или небулевой результат приводит к исключению.

Применяется как к `input`-, так и к `source`-потокам. Число пропущенных сообщений экспортируется метриками `input_streams/skipped_by_expression_count` и `source_streams/skipped_by_expression_count`. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicComputationSpec.md -->

#### Source

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicSourceSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные динамические параметры соответствующего класса `Source`. ||
|| `draining` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicSourceSpec.md -->

#### Sink

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicSinkSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `parameters` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::IMapNode>`
**Значение по умолчанию**: `{}`
Произвольные динамические параметры соответствующего класса `Sink`. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicSinkSpec.md -->

### JobManager

Конфиг модуля управления [джобами](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#job) на [контроллере](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#controller).

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicJobManagerSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `balancer_type` | **Тип**: [NYT::NFlow::EJobBalancerType](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EJobBalancerType)
**Значение по умолчанию**: `cpu_aware`
 ||
|| `use_cpu_aware_balancer` | **Тип**: `std::optional<bool>`
Включает экспериментальную балансировку CPU. Балансировка по умолчанию может приводить к сильному перекосу ресурсов CPU между воркерами. ||
|| `rebalance_delay_after_pipeline_sync` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `30s`
 ||
|| `rebalance_target_deviation` | **Тип**: `double`
**Значение по умолчанию**: `0.1`
Максимальное допустимое отклонение. ||
|| `rebalance_hot_mode_coeff` | **Тип**: `double`
**Значение по умолчанию**: `2.0`
 ||
|| `rebalance_action_min_time` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `4s`
 ||
|| `rebalance_action_max_time` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `12s`
 ||
|| `rebalance_sync_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10s`
Период `cpu_aware` балансировки. Не рекомендуется выставлять значение меньше `15min`, так как балансировка смотрит на метрики `10min`. ||
|| `rebalance_count_exceeded_allowed` | **Тип**: `double`
**Значение по умолчанию**: `1.2`
 ||
|| `rebalance_even_load_thresholds` | **Тип**: `THashMap<`[NYT::NFlow::EBalanceResource](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EBalanceResource)`, NYT::TIntrusivePtr<`[NYT::NFlow::TEvenLoadThresholds](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TEvenLoadThresholds)`>>`
**Значение по умолчанию**: `{}`
Пороги гейта «нагрузка распределена ровно» по ресурсам, например `{cpu = {spread = 2.0; ratio = 1.5}}`. Учитываются только ресурсы с ненулевым весом. Незаданные поля берут значения по умолчанию: разброс `1.0` ядро для CPU и `1 GB` для памяти, отношение `1.2`. ||
|| `rebalance_min_cpu_spread` | **Тип**: `std::optional<double>`
Устаревший параметр: то же, что `spread` в записи `cpu` параметра `rebalance_even_load_thresholds`. Явно заданное значение в `rebalance_even_load_thresholds` имеет приоритет. ||
|| `rebalance_min_cpu_ratio` | **Тип**: `std::optional<double>`
Устаревший параметр: то же, что `ratio` в записи `cpu` параметра `rebalance_even_load_thresholds`. Явно заданное значение в `rebalance_even_load_thresholds` имеет приоритет. ||
|| `balance_weights` | **Тип**: `THashMap<`[NYT::NFlow::EBalanceResource](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EBalanceResource)`, double>`
**Значение по умолчанию**: `{'cpu': 1.0, 'memory': 0.0}`
Относительная важность ресурсов для `cpu_aware` балансировки, например `{cpu = 80; memory = 20}`. Указанные ключи накладываются на значение по умолчанию `{cpu = 1; memory = 0}`; веса нормируются, значимы только пропорции. Ресурс с нулевым весом не участвует в балансировке, поэтому по умолчанию балансируется только CPU. Порог `rebalance_target_deviation` применяется к нормированной взвешенной сумме: добавление второго ресурса пропорционально уменьшает вклад первого. При ненулевом весе `memory` память партиции включает измеренную память её джобы и байты входных буферов её потоков. Каждый входной поток учитывается по большему из его `demand`, то есть запроса до урезания пулом буферов, и фактически занятых байтов. Поток без `demand`, например с явно переопределённым лимитом или на воркере без buffer manager v2, учитывается по фактически занятым байтам. ||
|| `balancer_metrics_source` | **Тип**: [NYT::NFlow::EBalancerMetricsSource](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EBalancerMetricsSource)
**Значение по умолчанию**: `job`
Откуда `cpu_aware` балансировщик берёт загрузку CPU партиции. `partition` — 10-минутная метрика текущей джобы, а пока её нет — сохранённая история партиции (замер предыдущей джобы, переживает переезд и рестарт); 30-секундные и мгновенные метрики не используются. `job` — прежнее поведение: только метрики текущей джобы с откатом на 30-секундную и мгновенную. По умолчанию выключено, пока изменение раскатывается по пайплайнам; временный переключатель. ||
|| `balance_warmup_protection` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Не переезжать работающие джобы, пока их метрики не созрели: есть 10-минутная метрика и прошло ещё одно 10-минутное окно после её появления. Такая джоба ещё расплачивается за предыдущий переезд, а её вес неизвестен. Защита действует для всех ресурсов балансировки: конфигурация только по памяти тоже ждёт созревания CPU-метрики. Перегруженный по количеству воркер, у которого подходящая для кика партиция не созрела, в этом раунде пропускается целиком. Джобы моложе двух минут остаются подвижными: они ещё ничего не вложили, а на рестарте пайплайна воркеры регистрируются не одновременно. Партиции без джобы размещаются как обычно. По умолчанию выключено, пока изменение раскатывается по пайплайнам; временный переключатель. ||
|| `balance_warmup_idle_worker_share` | **Тип**: `double`
**Значение по умолчанию**: `0.2`
Доля воркеров группы без джоб этой группы, начиная с которой warm-up protection снимается: заполнить простаивающие воркеры важнее, чем метрики переезжающих джоб, например когда после рестарта пайплайна воркеры регистрируются с разницей в минуты. Временный переключатель для отката. ||
|| `worker_coef_mode` | **Тип**: [NYT::NFlow::EWorkerCoefMode](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_EWorkerCoefMode)
**Значение по умолчанию**: `legacy`
Как `cpu_aware` балансировщик оценивает относительную скорость воркеров. `probing` — по партициям, переехавшим между воркерами: сравнивается CPU на сообщение до и после переезда, наблюдения по парам воркеров накапливаются в `balancer_state` и решаются совместно; без переездов все коэффициенты равны 1. `legacy` — прежняя оценка по текущей загрузке партиций каждого воркера относительно средних по компьютейшнам. По умолчанию выключено, пока изменение раскатывается по пайплайнам; временный переключатель. ||
|| `worker_coef_half_life` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1d`
Период полураспада накопленного наблюдения пары воркеров: при слиянии нового наблюдения старое теряет вес пропорционально прошедшему времени. Без новых наблюдений оценка не меняется. ||
|| `worker_coef_retention` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `7d`
Сколько помнить наблюдения воркера, отсутствующего в группе; вернувшийся раньше воркер получает свой коэффициент обратно. ||
|| `worker_coef_prior_weight` | **Тип**: `double`
**Значение по умолчанию**: `0.05`
Вес априорного «коэффициент воркера равен 1» в единицах веса наблюдений (переезд одной партиции весит `1 / N`, где `N` — число партиций на воркере-приёмнике). Фиксирует среднее коэффициентов группы на 1 и гасит одиночные наблюдения. ||
|| `worker_coef_max_ratio` | **Тип**: `double`
**Значение по умолчанию**: `4.0`
Предохранитель: коэффициенты воркеров ограничены отрезком `[1 / max_ratio, max_ratio]`. ||
|| `disable_even_load_gate` | **Тип**: `std::optional<bool>`
 ||
|| `async_balancing` | **Тип**: `bool`
**Значение по умолчанию**: `true`
 ||
|| `graceful_move` | **Тип**: `bool`
**Значение по умолчанию**: `true`
 ||
|| `zero_queue_latency` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
 ||
|| `planning_horizon` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10m`
 ||
|| `preloading_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `30m`
Сколько балансер `resource_queue` держит предзагрузку модели, которая ещё грузится, считая от запроса. До этого предзагрузка не снимается, а воркер считается воркером вычислений, которым нужна модель; после — обычные правила. ||
|| `minimum_worker_count` | **Тип**: `unsigned long`
**Значение по умолчанию**: `1`
Минимальное число воркеров, на которые стоит распределять нагрузку.

Должно быть обязательно заполнено, чтобы избежать ошибок Out of memory и перегрузки отдельных воркеров при старте системы. Рекомендуемое значение &mdash; около 60% от целевого количества воркеров (чтобы пережить потерю части воркеров, например при отключении одного дата-центра). ||
|| `lost_job_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10s`
Через какое время признавать `Job` потерянным, если в контроллер не приходит обновление статуса джоба. То же время используется, чтобы признавать потерянным воркера. ||
|| `faulty_address_window` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5m`
Окно на котором считается экспоненциально затухающий счетчик числа потерь соединения контроллера с воркером. Если этот счетчик превышает `faulty_address_attempts`, то воркер считается `faulty` и он игнорируется при балансировке. Решает проблему воркеров, у которых постоянно теряется коннект с контроллером. В том числе проблему двух воркеров с разными incarnation id и одним address (когда в деплое оказывается два пода считающих, что у них один и тот же FQDN). ||
|| `faulty_address_attempts` | **Тип**: `unsigned long`
**Значение по умолчанию**: `5`
Смотрите описание параметра `faulty_address_window`. ||
|| `partitioning` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicPartitioningSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicPartitioningSpec)`>`
**Значение по умолчанию**: `{}`
Настройки партиционирования пайплайна. ||
|| `worker_group_override` | **Тип**: `THashMap<NYT::TStrongTypedef<std::string, NYT::NFlow::TWorkerGroupIdTag, NYT::TStrongTypedefOptions{true}>, NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicJobManagerGroupSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicJobManagerGroupSpec)`>>`
**Значение по умолчанию**: `{}`
 ||
|| `partition_history_limit` | **Тип**: `long`
**Значение по умолчанию**: `4096`
Сколько историй партиций балансер хранит между перезапусками джоб, см. `balancer_metrics_source`. Истории лежат в одном персистентном документе с ограничением на размер, поэтому при достижении предела самая лёгкая история уступает место более тяжёлой, а более лёгкие не сохраняются. При остановке пайплайна истории не сохраняются вовсе. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicJobManagerSpec.md -->

### JobTracker

Конфиг модуля управления джобами на [воркере](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#worker).

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicJobTrackerSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `job_control_threads` | **Тип**: `int`
**Значение по умолчанию**: `3`
Количество управляющих тредов.

В большинстве случаев достаточно значения по умолчанию. ||
|| `job_threads` | **Тип**: `std::optional<int>`
Количество тредов для выполнения джобов.

Если не задано, размер пула вычисляется автоматически на основе CPU-лимита ноды.
Если при этом вычислить лимит ноды не получилось, то будет создано 30 тредов. ||
|| `buffer_state_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicBufferStateManagerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicBufferStateManagerSpec)`>`
**Значение по умолчанию**: `{}`
Конфиг модуля управления буферами для входящих и исходящих сообщений. ||
|| `load_throughput_throttler` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TLoadThroughputThrottlerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TLoadThroughputThrottlerSpec)`>`
**Значение по умолчанию**: `{'limit': 134217728.0}`
 ||
|| `state_cache` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicStateCacheSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicStateCacheSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `mark_performance_metrics_steady_after_first_iteration` | **Тип**: `bool`
**Значение по умолчанию**: `false`
Сообщать счётчики скоростей джобы (CPU, входные сообщения, память) как установившиеся только после первой завершённой итерации с входными данными, чтобы балансировщик читал оконные метрики `cpu_usage_10m` и подобные после того, как инициализация джобы (выкачка стейта, построение индексов) вымоется из окон; сами счётчики не сбрасываются. Джоба, не получавшая входных данных минуту, тоже считается установившейся: простаивающая джоба сообщает свои околонулевые скорости, а не остаётся неизмеренной. По умолчанию выключено, пока изменение раскатывается по пайплайнам; временный переключатель. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicJobTrackerSpec.md -->

#### BufferStateManager

Конфиг модуля управления размерами буферов.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicBufferStateManagerSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `manage_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Частота пересчёта размера буфферов. ||
|| `demand_window` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1m`
Временное окно, на котором оценивается утилизация одного буффера. ||
|| `input_buffer` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicBufferStateManagerSpec::TOneSideBufferSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicBufferStateManagerSpec_TOneSideBufferSpec)`>`
**Значение по умолчанию**: `{}`
Настройки входного буффера. ||
|| `output_buffer` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicBufferStateManagerSpec::TOneSideBufferSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicBufferStateManagerSpec_TOneSideBufferSpec)`>`
**Значение по умолчанию**: `{}`
Настройки выходного буффера. ||
|| `enable_v2` | **Тип**: `bool`
**Значение по умолчанию**: `true`
Включает v2-стратегию сайзинга буфферов: лимит = пик используемого + headroom, с полом `v2_gain_epochs × demand × epoch` (bandwidth-delay product). Потолок `demand × max_duration` поднимается до анонсированного input-backlog'а или, для производящего output, до равной доли половины `fair_share_pool`, поскольку эпохи продюсера не показывают период подтверждений downstream. Лимиты, подтверждённые спросом, распределяются раньше спекулятивных output-probe. Суммарно Σ(лимитов) ≤ `fair_share_pool` с учётом чужого in-flight; `job_limit` остаётся границей одного стрима. Стримы с `job_overrides` живут целиком вне пула (как в v1): память воркера под буфферы стоит закладывать как `fair_share_pool` + сумма фактического in-flight оверрайднутых стримов. По умолчанию включено; установите `false`, чтобы использовать прежнюю v1-формулу. ||
|#


{% cut "**Дополнительные параметры**" %}


#|
|| `epoch_cycle_window_samples` | **Тип**: `int`
**Значение по умолчанию**: `16`
Число сэмплов в окне медианы длительности эпохи джобы. ||
|| `max_rate_estimator_buckets` | **Тип**: `int`
**Значение по умолчанию**: `8`
Число бакетов в windowed-max оценщике скорости дрейна; изменение сбрасывает накопленную оценку. ||
|| `warmup_refresh_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `30s`
Как часто джоба опрашивает сошедшийся warmup для персиста. ||
|| `v2_gain_epochs` | **Тип**: `double`
**Значение по умолчанию**: `2.0`
Целевой пол буфера в единицах эпох: сколько эпох спроса держать как минимум (запас на всплески скорости и latency). Действует только при `enable_v2`. ||
|| `v2_use_offered_rate` | **Тип**: `bool`
**Значение по умолчанию**: `true`
Учитывать ли в оценке спроса скорость по анонсированному backlog'у (offered rate). Можно выключить, если продюсер завышает анонсированный backlog. Действует только при `enable_v2`. ||
|| `v2_floor` | **Тип**: [NYT::NYTree::TSize](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYTree_TSize)
**Значение по умолчанию**: `2Mi`
Минимальный грант стриму с непустым backlog'ом; должен вмещать самое большое сообщение. Действует только при `enable_v2`. ||
|| `v2_headroom_growth_factor` | **Тип**: `double`
**Значение по умолчанию**: `2.0`
Во сколько раз растёт headroom за один тик менеджера, пока утилизация высокая. Действует только при `enable_v2`. ||
|| `v2_high_utilization_threshold` | **Тип**: `double`
**Значение по умолчанию**: `0.65`
Порог утилизации, выше которого headroom растёт, а ниже половины — затухает. Действует только при `enable_v2`. ||
|| `v2_publish_threshold` | **Тип**: `double`
**Значение по умолчанию**: `0.25`
Не публиковать новый лимит, если он отличается от текущего меньше чем на эту долю (антиосцилляция); сжатия публикуются всегда. Действует только при `enable_v2`. ||
|#


{% endcut %}
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicBufferStateManagerSpec.md -->

Все размерные (измеряемые в количестве элементов или в байтах) параметры в этом конфиге могут парситься из строк вида "50K".

### ControllerConnector

Конфиг управления соединением воркера и контроллера.

Не рекомендуется менять без необходимости.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TDynamicControllerConnectorSpec.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/common/spec.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/common/spec.h)

#|
|| **Параметр** | **Описание** ||
|| `controller_wait_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5m`
Время, через которое воркер принудительно отключит все джобы в случае потери связи с контроллером. ||
|| `controller_discover_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10s`
Период повторного поиска контроллера. ||
|| `controller_heartbeat_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Период хартбитов воркера в контроллер. ||
|| `worker_statistics_report_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `30s`
 ||
|| `controller_heartbeat_rpc_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10s`
Таймаут хартбита. ||
|| `controller_heartbeat_failure_backoff` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Время выдержки на случай ошибки рукопожатия. ||
|| `controller_handshake_rpc_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10s`
Таймаут рукопожатия. ||
|| `controller_handshake_failure_backoff` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
 ||
|| `orchid_update_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Период обновления `orchid` на контроллере. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TDynamicControllerConnectorSpec.md -->

## Parameters {#parameters}

Поле `parameters` есть в спеках `Computation`, `Source`, `Sink` и `Resource`. Оно содержит параметры выбранной встроенной реализации, например адаптера process function. Проверяйте доступные поля в документации конкретного класса и не используйте этот блок для параметров пользовательской логики.

Параметры C++ process function задаются отдельно в `processing_function_parameters`. Объявите для них обычный [yson struct](https://ytsaurus.tech/docs/ru/user-guide/storage/data-types.md#yson_struct), зарегистрируйте тип вместе с функцией и читайте параметры через runtime-контекст:

```cpp
struct TMyParameters
    : public NYTree::TYsonStruct
{
    i64 Threshold;

    REGISTER_YSON_STRUCT(TMyParameters);

    static void Register(TRegistrar registrar);
};

YT_FLOW_DEFINE_PROCESS_FUNCTION(TMyFunction, TMyParameters);
```

```yson
"processing_function_parameters" = {
    "threshold" = 10;
};
```

Статические параметры доступны в `Init` через `initContext->GetParameters<TMyParameters>()`, динамические — через `context->GetDynamicParameters<TMyParameters>()`. Подробнее см. в разделе [Process function](https://ytsaurus.tech/docs/ru/flow/cpp/process-functions.md#parameters).

## Config

Конфиг ноды кластера Flow.

<!-- source: ru/flow/generated_docs/NYT_NFlow_TFlowNodeConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/runner/config.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/runner/config.h)

#|
|| **Параметр** | **Описание** ||
|| `logging` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NLogging::TLogManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NLogging_TLogManagerConfig)`>`
**Значение по умолчанию**:

```yson
{
    "high_backlog_watermark" = 100000;
    "low_backlog_watermark" = 100000;
    "min_disk_space" = 0;
    "rules" = [
        {
            "exclude_categories" = [];
            "max_level" = "maximum";
            "min_level" = "info";
            "writers" = [
                "Stderr";
            ];
        };
    ];
    "writers" = {
        "Stderr" = {
            "common_fields" = {};
            "enable_host_field" = %false;
            "enable_native_tags" = %false;
            "enable_source_location" = %false;
            "enable_span_id_field" = %false;
            "enable_system_fields" = %true;
            "format" = "plain_text";
            "type" = "stderr";
            "yson_format" = "text";
        };
    };
}
```
Настройки логирования. ||
|| `jaeger` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NTracing::TJaegerTracerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NTracing_TJaegerTracerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `pipe_io_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NPipeIO::TPipeIODispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NPipeIO_TPipeIODispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `solomon_registry` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TSolomonRegistryConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TSolomonRegistryConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `error_backtrace_enricher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TBacktraceEnricherSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TBacktraceEnricherSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `query_engine_config` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NQueryClient::TQueryEngineConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NQueryClient_TQueryEngineConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `cluster_url` | **Тип**: `std::string`
**Обязательный параметр**
Кластер YTsaurus для работы. ||
|| `path` | **Тип**: `TString`
**Обязательный параметр**
Рабочая папка пайплайна на кластере `cluster_url`. ||
|| `proxy_role` | **Тип**: `std::optional<std::string>`
Роль `rpc proxy`. ||
|| `rpc_port` | **Тип**: `int`
**Значение по умолчанию**: `0`
Основной порт для общения воркеров и контроллеров, может быть отдельным у каждого инстанса. ||
|| `monitoring_port` | **Тип**: `int`
**Значение по умолчанию**: `0`
API для получения метрик. ||
|| `companion` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NCompanion::TCompanionConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NCompanion_TCompanionConfig)`>`
Параметры процесса-компаньона. Нужны любому воркеру, который запускает компаньон (Python, Java, Go, C++-компаньон). В vanilla-запуске заполняются автоматически. ||
|| `controller` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NController::TControllerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NController_TControllerConfig)`>`
**Значение по умолчанию**: `{}`
Параметры `Controller`. ||
|| `worker` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NWorker::TWorkerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NWorker_TWorkerConfig)`>`
**Значение по умолчанию**: `{}`
Параметры `Worker`. ||
|| `authenticator` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TAuthenticatorConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TAuthenticatorConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `bus_server` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NBus::NTcp::TBusServerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NBus_NTcp_TBusServerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `rpc_server` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NRpc::TServerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NRpc_TServerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `core_dumper` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NCoreDump::TCoreDumperConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NCoreDump_TCoreDumperConfig)`>`
 ||
|| `solomon_exporter` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TSolomonExporterConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TSolomonExporterConfig)`>`
**Значение по умолчанию**: `{'enable_solomon_aggregates': true}`
 ||
|| `solomon_proxy` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TSolomonProxyConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TSolomonProxyConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `http_client_config` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NHttp::TClientConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NHttp_TClientConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `https_client_config` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NHttps::TClientConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NHttps_TClientConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `http_poller_threads` | **Тип**: `int`
**Значение по умолчанию**: `1`
 ||
|| `abort_on_unrecognized_options` | **Тип**: `bool`
**Значение по умолчанию**: `true`
При выставлении значения true Flow Node не будет запускаться при наличии неизвестных опций в конфиге. ||
|| `ignore_singletons_dynamic_config` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `enable_porto_resource_tracker` | **Тип**: `bool`
**Значение по умолчанию**: `true`
 ||
|#


{% cut "**Дополнительные параметры**" %}


#|
|| `address_resolver` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NNet::TAddressResolverConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NNet_TAddressResolverConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `grpc_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NRpc::NGrpc::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NRpc_NGrpc_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `tcmalloc` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NTCMalloc::TTCMallocConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NTCMalloc_TTCMallocConfig)`>`
**Значение по умолчанию**: `{'guarded_sampling_rate': 16777216}`
 ||
|| `fiber_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NConcurrency::TFiberManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NConcurrency_TFiberManagerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `resource_tracker` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TResourceTrackerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TResourceTrackerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `tcp_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NBus::NTcp::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NBus_NTcp_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `rpc_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NRpc::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NRpc_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `protobuf_interop` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NYson::TProtobufInteropConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYson_TProtobufInteropConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `clients_cache` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NClient::NCache::TClientsCacheConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NClient_NCache_TClientsCacheConfig)`>`
**Значение по умолчанию**: `{}`
Настройки соединений кэша YT-клиентов ноды. Через него ходят коннектор пайплайна, writer логов в очередь и всё, что берёт клиента из `TComputationContext::ClientsCache` &mdash; компьютейшены, коннекторы и менеджеры состояния. Аутентификатор пайплайна создаёт своего клиента отдельно и этими настройками не управляется. ||
|| `clients_cache_factory` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::INode>`
Параметры фабрики корневого кэша YT-клиентов, установленной через `SetRootClientsCacheFactory()`. Схему параметров задаёт сама фабрика; встроенная фабрика этот блок игнорирует. ||
|| `enable_phdr_cache` | **Тип**: `bool`
**Значение по умолчанию**: `true`
 ||
|#


{% endcut %}
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TFlowNodeConfig.md -->

### Controller

<!-- source: ru/flow/generated_docs/NYT_NFlow_NController_TControllerConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/controller/config.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/controller/config.h)

#|
|| **Параметр** | **Описание** ||
|| `controller_threads` | **Тип**: `int`
**Значение по умолчанию**: `5`
Число тредов. ||
|| `orchid_update_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Период пересчёта `orchid`. ||
|| `warm_up_time` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
Период разогрева при старте контроллера. ||
|| `scheduler_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
Период запуска планировщика. ||
|| `cache_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
 ||
|| `feedback_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
 ||
|| `metrics_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
 ||
|| `write_own_retryable_errors_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
 ||
|| `publish_retry_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
Период, в течение которого контроллер пытается передать в YTsaurus информацию, что является лидером. ||
|| `publish_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `2h`
 ||
|| `election_manager` | **Тип**: `NYT::NYTree::TPolymorphicYsonStruct<NYT::NYTree::NDetail::TPolymorphicMapping<&NYT::NFlow::NController::ElectionBackendDiscriminator.<char const at offset 0>, NYT::NFlow::NController::EElectionBackend, NYT::NYTree::NDetail::TOptionalValue<NYT::NFlow::NController::EElectionBackend, (NYT::NFlow::NController::EElectionBackend)0>, NYT::NFlow::NController::TElectionBackendConfigBase, NYT::NYTree::NDetail::TLeafTag<(NYT::NFlow::NController::EElectionBackend)0, NYT::NFlow::NController::TCypressElectionBackendConfig>, NYT::NYTree::NDetail::TLeafTag<(NYT::NFlow::NController::EElectionBackend)1, NYT::NFlow::NController::TDyntableElectionBackendConfig>, NYT::NYTree::NDetail::TLeafTag<(NYT::NFlow::NController::EElectionBackend)2, NYT::NFlow::NController::TChaosElectionBackendConfig>>>`
**Значение по умолчанию**:

```yson
{
    "backend" = "cypress";
    "leader_cache_update_period" = 1000;
    "leader_lease_ping_period" = 1000;
    "leader_lease_ttl" = 5000;
    "lock_acquisition_period" = 1000;
}
```
Настройки выбора лидера среди нескольких контроллеров. ||
|| `persisted_state_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NController::TPersistedStateManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NController_TPersistedStateManagerConfig)`>`
**Значение по умолчанию**: `{}`
Настройки `PersistedStateManager`. ||
|| `lease_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NController::TLeaseManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NController_TLeaseManagerConfig)`>`
**Значение по умолчанию**: `{}`
Настройки `LeaseManager`. ||
|| `controller_service` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::NController::TControllerServiceConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_NController_TControllerServiceConfig)`>`
**Значение по умолчанию**: `{}`
Настройки `ControllerService`. ||
|| `bus` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NBus::NTcp::TBusConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NBus_NTcp_TBusConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|#


{% cut "**Дополнительные параметры**" %}


#|
|| `publish_request_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `1s`
Таймаут одного запроса попытки публикации. Неудачная попытка повторяется, так что этот параметр определяет только то, как долго одна попытка может висеть до повтора. ||
|#


{% endcut %}
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_NController_TControllerConfig.md -->

#### PersistedStateManager

<!-- source: ru/flow/generated_docs/NYT_NFlow_NController_TPersistedStateManagerConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/controller/config.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/controller/config.h)

#|
|| **Параметр** | **Описание** ||
|| `timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
Таймаут сохранения в YTsaurus. ||
|| `max_reads_per_transaction` | **Тип**: `long`
**Значение по умолчанию**: `10000`
 ||
|| `max_writes_per_transaction` | **Тип**: `long`
**Значение по умолчанию**: `10000`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_NController_TPersistedStateManagerConfig.md -->

#### LeaseManager

<!-- source: ru/flow/generated_docs/NYT_NFlow_NController_TLeaseManagerConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/controller/config.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/controller/config.h)

#|
|| **Параметр** | **Описание** ||
|| `lease_timeout` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `10m`
Сколько джоба остаётся отгороженной без обновления фенса контроллером. С кипарисным бэкендом выборов это таймаут мастер-транзакции лиза джобы, с хаосным — таймаут его хаос-лиза, с дин-табличным — время жизни общей для пайплайна строки дедлайна, через которую проходит каждый коммит воркера. ||
|| `lease_ping_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `30s`
Период, с которым лидер продлевает лизы. Продлевает всегда лидер, а не воркер, но механика у бэкендов разная: хаосные лизы пингует один периодик, кипарисные — по клиентскому пингеру на транзакцию лиза, а общий дин-табличный дедлайн просто переписывается. ||
|| `max_concurrent_requests` | **Тип**: `long`
**Значение по умолчанию**: `500`
Максимальное количество одновременных запросов, которые менеджер держит в полёте при прицеплении лизов и их прекращении. Не увеличивайте, чтобы избежать перегрузки мастера. На продление не распространяется: хаосные пинги рассылаются одним раундом без ожидания, а кипарисные принадлежат самим транзакциям лизов. ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_NController_TLeaseManagerConfig.md -->

#### ControllerService

<!-- source: ru/flow/generated_docs/NYT_NFlow_NController_TControllerServiceConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/controller/config.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/controller/config.h)

#|
|| **Параметр** | **Описание** ||
|| `set_spec_retry_count` | **Тип**: `int`
**Значение по умолчанию**: `3`
Количество попыток обновления спеки в случае ошибок. ||
|| `set_spec_retry_period` | **Тип**: [TDuration](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#TDuration)
**Значение по умолчанию**: `5s`
Время между попытками. ||
|| `tables_throttler` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TLoadThroughputThrottlerSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TLoadThroughputThrottlerSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|#
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_NController_TControllerServiceConfig.md -->


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

## Runner config {#runner-config}

Конфиг для запуска пайплайна. Формат этого конфига не регламентирован, пользователь может использовать такой конфиг, какой удобнее для его задач.

Flow предоставляет простой вариант этого конфига `NYT::NFlow::TSimpleRunnerConfig` и программу `NYT::NFlow::TSimpleRunnerProgram` для запуска пайплайна с использованием этого конфига. И именно на такой формат конфига рассчитывает тестовый фреймворк Flow, чтобы подставить в него кластер и путь к пайплайну в локальном YTsaurus и чтобы применить тестовые дефолтные параметры для более быстрой работы теста.

### SimpleRunnerConfig

<!-- source: ru/flow/generated_docs/NYT_NFlow_TSimpleRunnerConfig.md -->
<!-- This file is generated by yt/yt/flow/yandex/tools/generate_yson_struct_doc/generate.sh script -->
<!-- Before using doc generation tool check readme: yt/yt/flow/yandex/tools/generate_yson_struct_doc/README.md -->
Источник: [yt/yt/flow/library/cpp/runner/simple_runner_program.h](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/library/cpp/runner/simple_runner_program.h)

#|
|| **Параметр** | **Описание** ||
|| `logging` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NLogging::TLogManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NLogging_TLogManagerConfig)`>`
**Значение по умолчанию**:

```yson
{
    "high_backlog_watermark" = 100000;
    "low_backlog_watermark" = 100000;
    "min_disk_space" = 0;
    "rules" = [
        {
            "exclude_categories" = [];
            "max_level" = "maximum";
            "min_level" = "info";
            "writers" = [
                "Stderr";
            ];
        };
    ];
    "writers" = {
        "Stderr" = {
            "common_fields" = {};
            "enable_host_field" = %false;
            "enable_native_tags" = %false;
            "enable_source_location" = %false;
            "enable_span_id_field" = %false;
            "enable_system_fields" = %true;
            "format" = "plain_text";
            "type" = "stderr";
            "yson_format" = "text";
        };
    };
}
```
Настройки логирования. ||
|| `jaeger` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NTracing::TJaegerTracerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NTracing_TJaegerTracerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `pipe_io_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NPipeIO::TPipeIODispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NPipeIO_TPipeIODispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `solomon_registry` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TSolomonRegistryConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TSolomonRegistryConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `error_backtrace_enricher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TBacktraceEnricherSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TBacktraceEnricherSpec)`>`
**Значение по умолчанию**: `{}`
 ||
|| `query_engine_config` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NQueryClient::TQueryEngineConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NQueryClient_TQueryEngineConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `cluster_url` | **Тип**: `std::string`
**Обязательный параметр**
Имя кластера, на котором находится пайплайн. Хвост после последнего `/` трактуется как прокси-роль и имеет приоритет над `proxy_role` &mdash; например, `hahn/flow` означает кластер `hahn` и роль `flow`. ||
|| `proxy_role` | **Тип**: `std::optional<std::string>`
**Обязательный параметр**
[Прокси-роль](https://ytsaurus.tech/docs/ru/user-guide/proxy/about.md#rpc_proxy), которую нужно использовать для выполнения операций над пайплайном. ||
|| `path` | **Тип**: `TString`
**Обязательный параметр**
Путь к пайплайну на YTsaurus. ||
|| `spec` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TPipelineSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TPipelineSpec)`>`
**Обязательный параметр**
Статическая спека, с которой нужно запустить пайплайн. ||
|| `dynamic_spec` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDynamicPipelineSpec](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDynamicPipelineSpec)`>`
**Значение по умолчанию**: `{}`
Динамическая спека, с которой нужно запустить пайплайн. ||
|| `abort_on_unrecognized_options` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `abort_on_specs_parseability_error` | **Тип**: `bool`
**Значение по умолчанию**: `false`
 ||
|| `vanilla` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TVanillaConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TVanillaConfig)`>`
Если задан и `enable=%true`, раннер вместо запуска контроллера/воркеров локально поднимет vanilla-операцию в YTsaurus и запустит федерацию в ней. ||
|| `set_flow_core_target` | **Тип**: `bool`
**Значение по умолчанию**: `true`
 ||
|| `direct_controller_commands` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NFlow::TDirectControllerCommandsConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NFlow_TDirectControllerCommandsConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|#


{% cut "**Дополнительные параметры**" %}


#|
|| `address_resolver` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NNet::TAddressResolverConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NNet_TAddressResolverConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `grpc_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NRpc::NGrpc::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NRpc_NGrpc_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `tcmalloc` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NTCMalloc::TTCMallocConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NTCMalloc_TTCMallocConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `fiber_manager` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NConcurrency::TFiberManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NConcurrency_TFiberManagerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `resource_tracker` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NProfiling::TResourceTrackerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NProfiling_TResourceTrackerConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `tcp_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NBus::NTcp::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NBus_NTcp_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `rpc_dispatcher` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NRpc::TDispatcherConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NRpc_TDispatcherConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `protobuf_interop` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NYson::TProtobufInteropConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NYson_TProtobufInteropConfig)`>`
**Значение по умолчанию**: `{}`
 ||
|| `clients_cache` | **Тип**: `NYT::TIntrusivePtr<`[NYT::NClient::NCache::TClientsCacheConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NClient_NCache_TClientsCacheConfig)`>`
**Значение по умолчанию**: `{}`
Настройки соединений кэша YT-клиентов, через который раннер общается с кластером пайплайна. На vanilla launcher не распространяются: он создаёт своих клиентов отдельно. ||
|| `clients_cache_factory` | **Тип**: `NYT::TIntrusivePtr<NYT::NYTree::INode>`
Параметры фабрики корневого кэша YT-клиентов, установленной через `SetRootClientsCacheFactory()`. Схему параметров задаёт сама фабрика; встроенная фабрика этот блок игнорирует. ||
|#


{% endcut %}
<!-- endsource: ru/flow/generated_docs/NYT_NFlow_TSimpleRunnerConfig.md -->

## См. также

- [Автоскейлер](https://ytsaurus.tech/docs/ru/flow/concepts/autoscaler.md)
- [Computation](https://ytsaurus.tech/docs/ru/flow/concepts/computation.md)
- [Watermarks и Timers](https://ytsaurus.tech/docs/ru/flow/concepts/watermarks.md)
- [Коннекторы](https://ytsaurus.tech/docs/ru/flow/connectors/about.md)
<!-- endsource: ru/_includes/flow/concepts/spec.md -->


[*idle_partitions_max_ratio_default_value]: Почему 0.4: если источник закроет запись в один из ДЦ, то примерно треть партиций станут `idle`.

[*paramsClasses]: `Computation`, `Source`, `Sink`, `Resource`