diff options
author | vporyadke <zalyalov@ydb.tech> | 2025-03-27 04:28:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-27 08:28:43 +0700 |
commit | a94e17d6f1560c5e0953f69229e498c54092ac58 (patch) | |
tree | aa27c9352bc49382beb852003fe0f89b42f95ec8 | |
parent | 8a9a129f6051029bef292c41f17cbfbced156610 (diff) | |
download | ydb-a94e17d6f1560c5e0953f69229e498c54092ac58.tar.gz |
update hive ui reference (#10749)
Co-authored-by: Ivan Blinkov <ivan@ydb.tech>
Co-authored-by: Ilnaz Nizametdinov <i.nizametdinov@gmail.com>
Co-authored-by: anton-bobkov <anton-bobkov@ydb.tech>
-rw-r--r-- | ydb/docs/ru/core/contributor/hive.md | 21 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/configuration/hive.md | 268 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/configuration/toc_p.yaml | 2 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/embedded-ui/hive.md | 114 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/embedded-ui/index.md | 1 |
5 files changed, 355 insertions, 51 deletions
diff --git a/ydb/docs/ru/core/contributor/hive.md b/ydb/docs/ru/core/contributor/hive.md index 584d306ceb..06d4a7fde9 100644 --- a/ydb/docs/ru/core/contributor/hive.md +++ b/ydb/docs/ru/core/contributor/hive.md @@ -6,24 +6,26 @@ Hive — таблетка, отвечающая за управление дру В кластере {{ ydb-short-name }} есть корневой Hive, который отвечает за [системные таблетки](../concepts/glossary.md#tablet-types) всех баз данных кластера. Hive конкретной базы данных, в свою очередь, отвечает за таблетки, обслуживающие пользовательскую нагрузку этой базы. Все узлы кластера регистрируются в корневом Hive, а в Hive конкретной базы регистрируются только вычислительные узлы этой базы. При регистрации узел сообщает в Hive, какие типы таблеток и в каком количестве могут быть на нём запущены. -## Метрики потребления ресурсов +## Метрики потребления ресурсов {#resources} Для распределения таблеток по узлам Hive учитывает потребление ресурсов. Для каждой таблетки отслеживается потребление четырёх типов ресурсов: 1. *CPU* — потребление процессора, рассчитывается как число микросекунд, затраченных на работу таблетки за последнюю секунду, и для визуализации переводится в проценты ядра. 1. *Memory* — потребление таблеткой оперативной памяти. 1. *Network* — генерируемый таблеткой объём трафика. -1. *Counter* — фиктивный ресурс, используемый для реализации равномерного распределения в штуках. Если у таблетки ненулевое значение потребления любого другого ресурса, то её значение Counter равно 0, иначе оно равно 1. Таким образом, Counter применяется для любых таблеток, для которых нет данных о реальном потреблении, а также для таблеток, для которых учёт реального потребления отключён: по умолчанию это только таблетки [колоночных таблиц](../concepts/datamodel/table.md#column-oriented-tables). +1. *Counter* — фиктивный ресурс, используемый для реализации равномерного распределения в штуках. Если у таблетки ненулевое значение потребления любого другого ресурса, то её значение Counter равно 0, иначе оно равно 1. Таким образом, Counter применяется для любых таблеток, для которых нет данных о реальном потреблении, а также для таблеток, для которых учёт реального потребления отключён: по умолчанию это только таблетки [колоночных таблиц](../concepts/datamodel/table.md#column-oriented-tables).{#counter} Дополнительно для определения перегруженных узлов используются метрики потребления ресурсов узла целиком: потребление оперативной памяти и ресурсов процессора в пулах акторной системы. Эти значения переводятся в относительную величину (число от 0 до 1), и их максимум используется как значение общего потребления ресурсов узла — *Node usage*. Также для всех метрик на стороне Hive применяется агрегация по окну, чтобы учитывать всплески нагрузки. Информация о ресурсах используется при выборе узла для таблетки: к примеру, если про некоторую таблетку известно только её потребление CPU, то будет выбран узел из числа наименее загруженных по CPU. Если известно несколько ресурсов, то используется максимум из их относительных потреблений. -## Автобалансировка +## Автобалансировка {#autobalancing} В определённые моменты Hive может запустить процесс автобалансировки, перемещающий таблетки между узлами для улучшения распределения нагрузки. Ситуации, в которых это происходит, перечислены ниже. Автобалансировщик работает итеративо, принимая решения о перевозе таблеток последовательно и по одной. Он выбирает самый загруженный узел, взвешенно-случайным образом выбирает на нём таблетку и находит для неё более подходящий узел. Этот процесс повторяется, пока сбалансированность не будет восстановлена. То, как именно определяется загруженность узла, зависит от типа балансировки: например, при дисбалансе потребления CPU учитывается потребление CPU, а при неравномерном распределении колоночной таблицы — количество таблеток. -### Дисбаланс потребления ресурсов +Порогами, при которых запускается балансировка, можно управлять с помошью [конфигурации Hive](../reference/configuration/hive.md#autobalancing). + +### Дисбаланс потребления ресурсов {#scatter} Для оценки сбалансированности потребления используется метрика *Scatter*, вычисляемая отдельно для каждого ресурса по формуле: @@ -33,14 +35,21 @@ $\mathrm{MaxUsage}$ и $\mathrm{MinUsage}$ — максимум и миниму Максимальное из значений $Scatter$ по разным ресурсам доступно в виде [сенсора](../devops/manual/monitoring.md) `Hive/MAX(BalanceScatter)` в подгруппе `tablets`. -### Перегруженность узла +### Перегруженность узла {#emergency} Наличие сильно загруженного узла может негативно сказываться на работе {{ ydb-short-name }}: загруженность по CPU приводит к голоданию и увеличению задержки, а загруженность по памяти может привести к падению узла по out-of-memory. Балансировка запускается, если загрузка самого загруженного узла превышает 90%, а наименее загруженного — ниже 70%. +Этот вариант балансировки отличается от других более аггресивными перевозами таблеток. + Максимальное потребление на узле доступно в виде [сенсора](../devops/manual/monitoring.md) `Hive/MAX(BalanceScatter)` в подгруппе `tablets`. -### Равномерное распределение конкретного объекта +### Равномерное распределение конкретного объекта {#imbalance} Для таблеток, которые используют ресурс Counter, также отслеживается равномерность распределения таблеток каждого объекта (каждой таблицы) с помощью метрики `ObjectImbalance`, аналогичной описанной выше $Scatter$. При рестартах узлов равномерность может нарушаться, и тогда запускается балансировка. Максимальное из значений `ObjectImbalance` по разным объектам доступно в виде [сенсора](../devops/manual/monitoring.md) `Hive/MAX(BalanceObjectImbalance)` в подгруппе `tablets`. + +## Смотрите также + +- [Настройка Hive](../reference/configuration/hive.md) +- [Hive web-viewer](../reference/embedded-ui/hive.md) diff --git a/ydb/docs/ru/core/reference/configuration/hive.md b/ydb/docs/ru/core/reference/configuration/hive.md new file mode 100644 index 0000000000..ba407749b6 --- /dev/null +++ b/ydb/docs/ru/core/reference/configuration/hive.md @@ -0,0 +1,268 @@ +# Настройка Hive + +[Hive](../../concepts/glossary.md#hive) — компонент YDB, отвечающий за запуск [таблеток](../../concepts/glossary.md#tablet). В различных ситуациях и под разными паттернами нагрузки может возникнуть потребность в настройке его поведения. Поведение Hive конфигурируется в секции `hive_config` [конфигурации](../../maintenance/manual/config-overview.md) {{ ydb-short-name }}. Также часть опций из конфигурации доступна для редактирования через интерфейс [Hive web-viewer](../embedded-ui/hive.md#settings). Настройки, выставленные через интерфейс, имеют приоритет над указанными в конфигурации. Ниже перечислены все доступные опции, с указанием соответствующего названия опции в интерфейсе, если опцию возможно редактировать через интерфейс. + +## Опции запуска таблеток {#boot} + +С помощью этих опций можно регулировать с какой скоростью запускаются таблетки и как для них выбираются узлы. + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `max_tablets_scheduled` | MaxTabletsScheduled | Целое число | Максимальное число таблеток, одновременно находящихся в процессе старта на одном узле. | 100 || +|| `max_boot_batch_size` | MaxBootBatchSize | Целое число | Максимальное число таблеток из очереди запуска Hive, обрабатываемых за раз. | 1000 || +|| `node_select_strategy` | NodeSelectStrategy | Перечисление | Стратегия выбора узла для запуска таблетки. Возможные варианты: + +- `HIVE_NODE_SELECT_STRATEGY_WEIGHTED_RANDOM` — взвешенно-случайный выбор на основе потребления; +- `HIVE_NODE_SELECT_STRATEGY_EXACT_MIN` — выбор узла с минимальным потреблением; +- `HIVE_NODE_SELECT_STRATEGY_RANDOM_MIN_7P` — выбор случайного узла среди 7% узлов с наименьшим потреблением; +- `HIVE_NODE_SELECT_STRATEGY_RANDOM` — выбор случайного узла. + +| `HIVE_NODE_SELECT_STRATEGY_RANDOM_MIN_7P` || +|| `boot_strategy` | — | Перечисление | Регулирует поведение при запуске большого числа таблеток. Возможные варианты: + +* `HIVE_BOOT_STRATEGY_BALANCED` — при достижении лимита в `max_tablets_scheduled` на одном узле останавливает запуск новых таблеток на всех узлах. +* `HIVE_BOOT_STRATEGY_FAST` — при достижении лимита в `max_tablets_scheduled` на одном узле продолжает запуск таблеток на других узлах. + +Если при запуске большого количества таблеток один из узлов запускает таблетки чуть медленне других, то при использовании `HIVE_BOOT_STRATEGY_FAST` на этом узле будет запущено меньше таблеток, чем на остальных. При использовании `HIVE_BOOT_STRATEGY_BALANCED` в той же ситуации таблетки будут равномерно распределены по узлам, но их запуск займёт больше времени. + +| `HIVE_BOOT_STRATEGY_BALANCED` || +|| `default_tablet_limit` | — | Вложенная секция | Ограничения на запуск таблеток различных типов на одном узле. Указывается в формате списка, где каждый элемент имеет поля `type` и `max_count`. | Пустая секция || +|| `default_tablet_preference` | — | Вложенная секция | Приоритеты по выбору датацентров для запуска таблеток различных типов. Для каждого типа таблетки можно указать несколько групп датацентров. Датацентры внутри одной группы будут иметь одинаковый приоритет, а более ранняя группа будет иметь приориет над последующими. Пример формата: + +```yaml +default_tablet_preference: + - type: Coordinator + data_centers_preference: + - data_centers_group: + - "dc-1" + - "dc-2" + - data_centers_group: + - "dc-3" +``` + +| Пустая секция || +|| `system_category_id` | — | Целое число | При указании любого отличного от 0 числа, все координаторы и медиаторы по возможности запускаются в одном и том же датацентре. | 1 || +|# {wide-content} + +### Пример + +{% note info %} + +В подсекциях `default_tablet_limit` и `default_tablet_preference` нужно указывать типы таблеток. Точные названия типов таблеток можно посмотреть, например, на вкладке Tablets в [YDB UI](../embedded-ui/ydb-monitoring.md). + +{% endnote %} + +```yaml +hive_config: + max_tablets_scheduled: 10 + node_select_strategy: HIVE_NODE_SELECT_STRATEGY_RANDOM + boot_strategy: HIVE_BOOT_STRATEGY_FAST + default_tablet_limit: + - type: PersQueue + max_count: 15 + - type: DataShard + max_count: 100 + default_tablet_preference: + - type: Coordinator + data_centers_preference: + - data_centers_group: + - "dc-1" + - "dc-2" + - data_centers_group: + - "dc-3" +``` + +## Опции автобалансировки {#autobalancing} + +Эти опции регулируют процесс [автобалансировки](../../contributor/hive.md#autobalancing): в каких ситуациях он запускается, сколько таблеток с какими интервалами перевозит, как выбирает узлы и таблетки. Часть опций представлена в двух вариациях: для "emergency-балансировки", то есть балансировки при перегрузке одного или нескольких узлов, и для всех остальных видов балансировки. + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `min_scatter_to_balance` | MinScatterToBalance | Вещественное число | Порог метрики [Scatter](../../contributor/hive.md#scatter) для ресурсов CPU, Memory, Network. Имеет приоритет ниже, чем параметры ниже. | 0.5 || +|| `min_cpuscatter_to_balance` | MinCPUScatterToBalance | Вещественное число | Порог метрики Scatter для ресурса CPU. | 0.5 || +|| `min_memory_scatter_to_balance` | MinMemoryScatterToBalance | Вещественное число | Порог метрики Scatter для ресурса Memory.| 0.5 || +|| `min_network_scatter_to_balance` | MinNetworkScatterToBalance | Вещественное число | Порог метрики Scatter для ресурса Network. | 0.5 || +|| `min_counter_scatter_to_balance` | MinCounterScatterToBalance | Вещественное число | Порог метрики Scatter для фиктивного ресурса [Counter](../../contributor/hive.md#counter). | 0.02 || +|| `min_node_usage_to_balance` | MinNodeUsageToBalance | Вещественное число | Потребление ресурсов на узле ниже данного значения приравнивается к данному значению. Используется для того, чтобы не балансировать таблетки между малозагруженными узлами. | 0.1 || +|| `max_node_usage_to_kick` | MaxNodeUsageToKick | Вещественное число | Порог потребления ресурсов на узле для запуска emergency-автобалансировки. | 0.9 || +|| `node_usage_range_to_kick` | NodeUsageRangeToKick | Вещественное число | Минимальная разница в уровне потребления ресурсов между узлами, ниже которой автобалансировка считается нецелесообразной. | 0.2 || +|| `resource_change_reaction_period` | ResourceChangeReactionPeriod | Целое число секунд | Частота обновления агрегированной статистики потребления ресурсов. | 10 || +|| `tablet_kick_cooldown_period` | TabletKickCooldownPeriod | Целое число секунд | Минимальный период времени между перемещениями одной таблетки. | 600 || +|| `spread_neighbours` | SpreadNeighbours | true/false | Запуск таблеток одного схемного объекта (таблицы, топика) по возможности на разных узлах. | true || +|| `node_balance_strategy` | NodeBalanceStrategy | Перечисление | Стратегия выбора узла, с которого перевозятся таблетки при автобалансировке. Возможные варианты: + +- `HIVE_NODE_BALANCE_STRATEGY_WEIGHTED_RANDOM` — взвешенно-случайный выбор на основе потребления; +- `HIVE_NODE_BALANCE_STRATEGY_HEAVIEST` — выбор узла с максимальным потреблением; +- `HIVE_NODE_BALANCE_STRATEGY_RANDOM` — выбор случайного узла. + +| `HIVE_NODE_BALANCE_STRATEGY_HEAVIEST` || +|| `tablet_balance_strategy` | TabletBalanceStrategy | Перечисление | Стратегия выбора таблетки для перевоза при автобалансировке. Возможные варианты: + +- `HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM` — взвешенно-случайный выбор на основе потребления; +- `HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST` — выбор таблетки с максимальным потреблением; +- `HIVE_TABLET_BALANCE_STRATEGY_RANDOM` — выбор случайной таблетки. + +| `HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM` || +|| `min_period_between_balance` | MinPeriodBetweenBalance | Вещественное число секунд | Минимальный период времени между двумя итерациями автобалансировки. Не относится к emergency-балансировке. | 0.2 || +|| `balancer_inflight` | BalancerInflight | Целое число | Число таблеток, одновременно перезапускающихся в процессе автобалансировки. Не относится к emergency-балансировке. | 1 || +|| `max_movements_on_auto_balancer` | MaxMovementsOnAutoBalancer | Целое число | Число перемещений таблеток за одну итерацию автобалансировки. Не относится к emergency-балансировке. | 1 || +|| `continue_auto_balancer` | ContinueAutoBalancer | true/false | При включении следующая итерация балансировки запускается, не дожидаясь окончания `resource_change_reaction_period`. | true || +|| `min_period_between_emergency_balance` | MinPeriodBetweenEmergencyBalance | Вещественное число секунд | Аналогично `min_period_between_balance`, но для emergency-балансировки. | 0.1 || +|| `emergency_balancer_inflight` | EmergencyBalancerInfligh | Целое число | Аналогично `balancer_inflight`, но для emergency-балансировки. | 1 || +|| `max_movements_on_emergency_balancer` | MaxMovementsOnEmergencyBalancer | Целое число | Аналогично `max_movements_on_auto_balancer`, но для emergency-балансировки. | 2 || +|| `continue_emergency_balancer` | ContinueEmergencyBalancer | true/false | Аналогично `continue_auto_balancer`, но для emergency-балансировки. | true || +|| `check_move_expediency` | CheckMoveExpediency | true/false | Проверка целесообразности перемещений таблеток. Если автобалансировка приводит к повышенному потреблению Hive процессорных ресурсов, можно отключить эту опцию. | true || +|| `object_imbalance_to_balance` | ObjectImbalanceToBalance | Вещественное число | Порог метрики [дисбаланса таблеток одного объекта](../../contributor/hive.md#imbalance). | 0.02 || +|| `less_system_tablets_moves` | LessSystemTabletMoves | true/false | Минимизация перемещения системных таблеток при автобалансировке. | true || +|| `balancer_ignore_tablet_types` | BalancerIgnoreTabletTypes | Список типов таблеток. При выставлении через Hive UI — разделённый точкой с запятой. | Типы таблеток, на которые не распространяется автобалансировка. | Пустой список || +|# {wide-content} + +### Примеры + +С помощью такого файла конфигурации можно полностью отключить все виды автобалансировки таблеток между узлами. + +```yaml +hive_config: + min_cpuscatter_to_balance: 1.0 + min_memory_scatter_to_balance: 1.0 + min_network_scatter_to_balance: 1.0 + min_counter_scatter_to_balance: 1.0 + max_node_usage_to_kick: 3.0 + object_imbalance_to_balance: 1.0 +``` + +Таким файлом конфигурации можно отключить все виды автобалансировки между узлами для таблеток, участвующих в распределении транзакций, то есть [координаторов](../../concepts/glossary.md#coordinator) и [медиаторов](../../concepts/glossary.md#mediator). Точные названия типов таблеток можно посмотреть, например, на вкладке Tablets в [YDB UI](../embedded-ui/ydb-monitoring.md). + + +```yaml +hive_config: + balancer_ignore_tablet_types: + - Coordinator + - Mediator +``` + +При использовании Hive UI для такого же эффекта нужно записать `Coordinator;Mediator` в поле ввода для настройки BalancerIgnoreTabletTypes. + +## Опции сбора метрик потребления вычислительных ресурсов {metrics} + +Hive собирает с каждого узла [метрики потребления вычислительных ресурсов](../../contributor/hive.md#resources) — процессорного времени, оперативной памяти, сети — в целом по узлу и с разделением по таблеткам. Эти настройки позволяют регулировать сбор этих метрик, их нормировку и агрегацию. + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `max_resource_cpu` | MaxResourceCPU | Целое число микросекунд | Максимальное потребление CPU на узле в секунду. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. | 10000000 || +|| `max_resource_memory` | MaxResourceMemory | Целое число байт | Максимальное потребление памяти на узле. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. | 512000000000 || +|| `max_resource_network` | MaxResourceNetwork | Целое число байт/секунду | Максимальное потребление полосы на узле. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. | 1000000000 || +|| `max_resource_counter` | MaxResourceCounter | Целое число | Максимальное потребление виртуального ресурса Counter на узле. | 100000000 || +|| `metrics_window_size` | MetricsWindowSize | Целое число миллисекунд | Размер окна, на котором агрегируются метрики потребления ресурсов таблетками. | 60000 || +|| `resource_overcommitment` | ResourceOvercommitment | Вещественное число | Коэффициент переподписки на ресурсы узлов. | 3.0 || +|| `pools_to_monitor_for_usage` | — | Названия пулов через запятую | Пулы актор-системы, потребление в которых учитывается при подсчётё потребления ресурсов узла. | System,User,IC || +|# {wide-content} + +## Опции распределения каналов между группами хранения {#storage} + +Здесь перечислены опции, связанные с распределением [каналов](../../concepts/glossary.md#channel) таблеток по [группам хранения](../../concepts/glossary.md#storage-group): с учётом различных метрик, с выбором групп, с процессом автобалансировки каналов по группам. + + +{% note info %} + +Эта таблица содержит продвинутые настройки, которые в большинстве случаев не требуют изменения. + +{% endnote %} + + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `default_unit_iops` | DefaultUnitIOPS | Целое число | Значение по умолчанию для IOPS одного канала. | 1 || +|| `default_unit_throughput` | DefaultUnitThroughput | Целое число байт/секунду | Значение по умолчанию для потребления пропускной способности одним каналом. | 1000 || +|| `default_unit_size` | DefaultUnitSize | Целое число байт | Значение по умолчанию для потребления места на дисках одним каналом. | 100000000 || +|| `storage_overcommit` | StorageOvercommit | Вещественное число | Коэффициент переподписки на ресурсы групп хранения. | 1.0 || +|| `storage_balance_strategy` | StorageBalanceStrategy | Перечисление | Выбор параметра используемого для распределения каналов таблеток по группам хранения. Возможные варианты: + +- `HIVE_STORAGE_BALANCE_STRATEGY_IOPS` — учитывается только IOPS; +- `HIVE_STORAGE_BALANCE_STRATEGY_THROUGHPUT` — учитывается только потребление пропускной способности; +- `HIVE_STORAGE_BALANCE_STRATEGY_SIZE` — учитывается только объём занятого места; +- `HIVE_STORAGE_BALANCE_STRATEGY_AUTO` — учитывается тот из параметров выше, чьё потребление максимально; + +| `HIVE_STORAGE_BALANCE_STRATEGY_SIZE` || +|| `storage_safe_mode` | StorageSafeMode | true/false | Проверка превышения максимального потребления ресурсов групп хранения. | true || +|| `storage_select_strategy` | StorageSelectStrategy | Перечисление | Стратегия выбора группы хранения для канала таблетки. Возможные варианты: + +- `HIVE_STORAGE_SELECT_STRATEGY_WEIGHTED_RANDOM` — взвешенно-случайный выбор на основе потребления; +- `HIVE_STORAGE_SELECT_STRATEGY_EXACT_MIN` — выбор группы с минимальным потреблением; +- `HIVE_STORAGE_SELECT_STRATEGY_RANDOM_MIN_7P` — выбор случайной группы среди 7% групп с наименьшим потреблением; +- `HIVE_STORAGE_SELECT_STRATEGY_RANDOM` — выбор случайной группы; +- `HIVE_STORAGE_SELECT_STRATEGY_ROUND_ROBIN` - выбор группы внтури пула хранения по принципу [Round-robin](https://ru.wikipedia.org/wiki/Round-robin_(%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC)). +| `HIVE_STORAGE_SELECT_STRATEGY_WEIGHTED_RANDOM` || +|| `min_period_between_reassign` | MinPeriodBetweenReassign | Целое число секунд | Минимальный период времени между переназначениями групп хранения для каналов одной таблетки. | 300 || +|| `storage_pool_fresh_period` | StoragePoolFreshPeriod | Целое число миллисекунд | Периодичность обновления информации о пулах хранения. | 60000 || +|| `space_usage_penalty_threshold` | SpaceUsagePenaltyThreshold | Вещественное число | Минимальное отношение свободного места в целевой группе к свободному месту в исходной группе, при котором целевая группа будет пессимизирована путём применения к весу мультипликативного штрафа при перевозе канала. | 1.1 || +|| `space_usage_penalty` | SpaceUsagePenalty | Вещественное число | Коэффициент штрафа пессимизации, описанной выше. | 0.2 || +|| `channel_balance_strategy` | ChannelBalanceStrategy | Перечисление | Стратегия выбора канала для переназначения при балансировке каналов. Возможные варианты: + +- `HIVE_CHANNEL_BALANCE_STRATEGY_WEIGHTED_RANDOM` — взвешенно-случайный выбор на основе потребления; +- `HIVE_CHANNEL_BALANCE_STRATEGY_HEAVIEST` — выбор канала с максимальным потреблением; +- `HIVE_CHANNEL_BALANCE_STRATEGY_RANDOM` — выбор случайного канала. + +| `HIVE_CHANNEL_BALANCE_STRATEGY_WEIGHTED_RANDOM` || +|| `max_channel_history_size` | MaxChannelHistorySize | Целое число | Максимальный размер истории каналов. | 200 || +|| `storage_info_refresh_frequency` | StorageInfoRefreshFrequency | Целое число миллисекунд | Частота обновления информации о пулах хранения. | 600000 || +|| `min_storage_scatter_to_balance` | MinStorageScatterToBalance | Вещественное число | Порог метрики Scatter для групп хранения. | 999 || +|| `min_group_usage_to_balance` | MinGroupUsageToBalance | Вещественное число | Порог потребления ресурсов группы хранения, ниже которого не запускается балансировка. | 0.1 || +|| `storage_balancer_inflight` | StorageBalancerInflight | Целое число | Число таблеток, одновременно перезапускающихся во время балансировки каналов. | 1 || +|# {wide-content} + +## Опции отслеживания перезапусков {#restarts} + +Hive отслеживает, как часто рестартуют различные узлы и таблетки, чтобы определять проблемные. С помощью данных опций можно настроить, какие именно таблетки или узлы будут считаться проблемными, и как это на них повлияет. На основании этой статистики узлы и таблетки попадают в отчёт [HealthCheck API](../ydb-sdk/health-check-api.md). + +### Опции отслеживания перезапусков таблеток + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `tablet_restart_watch_period` | — | Целое число секунд | Размер окна, на котором собирается статистика о числе рестартов таблетки. **Этот период используется только для статистики, передаваемой в HealthCheck.** | 3600 || +|| `tablet_restarts_period` | — | Целое число миллисекунд | Размер окна, на котором считается количество рестартов таблетки для пессимизации запуска проблемных таблеток. | 1000 || +|| `tablet_restarts_max_count` | — | Целое число | Количество рестартов на окне `tablet_restarts_period`, при превышении которого применяется пессимизация. | 2 || +|| `postopone_start_period` | — | Целое число миллисекунд | Периодичность попыток запуска проблемных таблеток. | 1000 || +|# {wide-content} + +### Опции отслеживания перезапусков узлов + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `node_restart_watch_period` | — | Целое число секунд | Размер окна, на котором собирается статистика о числе рестартов узла. | 3600 || +|| `node_restarts_for_penalty` | NodeRestartsForPenalty | Целое число | Количество рестартов на окне `node_restart_watch_period`, после которого узлы получают понижение приоритета. | 3 || +|# {wide-content} + + +## Прочее {#misc} + +Здесь перечислены дополнительные настройки Hive. + + +{% note info %} + +Эта таблица содержит продвинутые настройки, которые в большинстве случаев не требуют изменения. + +{% endnote %} + + +#| +|| Название параметра в конфигурации | Название параметра в Hive web-viewer | Формат | Описание | Значение по умолчанию || +|| `drain_inflight` | DrainInflight | Целое число | Число таблеток, одновременно перезапускающихся в процессе плавного перемещения всех таблеток с одного узла (drain). | 10 || +|| `request_sequence_size` | — | Целое число | Количество идентификаторов таблеток, которое за один раз Hive базы данных запрашивает у корневого Hive. | 1000 || +|| `min_request_sequence_size` | — | Целое число | Минимальное количество идентификаторов таблеток, которое за один раз корневой Hive выделяет для Hive базы данных. | 1000 || +|| `max_request_sequence_size` | — | Целое число | Максимальное количество идентификаторов таблеток, которое за один раз выделяет для Hive базы данных. | 1000000 || +|| `node_delete_period` | — | Целое число секунд | Период неактивности, по истечении которого узел удаляется из базы Hive. | 3600 || +|| `warm_up_enabled` | WarmUpEnabled | true/false | При включении этой опции при старте базы Hive дожидается подключения всех узлов прежде чем начать запускать таблетки. При выключении все таблетки могут быть запущены на первом подключившемся узле. | true || +|| `warm_up_boot_waiting_period` | MaxWarmUpBootWaitingPeriod | Целое число миллисекунд | Время ожидания старта всех известных узлов при старте базы. | 30000 || +|| `max_warm_up_period` | MaxWarmUpPeriod | Целое число секунд | Максимальное время ожидания старта узлов при старте базы. | 600 || +|| `enable_destroy_operations` | — | true/false | Разрешены ли деструктивные ручные операции. | false || +|| `max_pings_in_flight` | — | Целое число | Максимальное количество параллельно устаналиваемых соединений с узлами. | 1000 || +|| `cut_history_deny_list` | — | Список типов таблеток, разделённый запятой | Список типов таблеток, для которых игнорируется операция очистки истории. | ColumnShard,KeyValue,PersQueue,BlobDepot || +|| `cut_history_allow_list` | — | Список типов таблеток, разделённый запятой | Список типов таблеток, для которых разрешена операция очистки истории. | DataShard || +|| `scale_recommendation_refresh_frequency` | ScaleRecommendationRefreshFrequency | Целое число миллисекунд | Как часто обновляется рекомендация по количеству вычислительных узлов. | 60000 || +|| `scale_out_window_size` | ScaleOutWindowSize | Целое число | Количество бакетов, на основе которых принимается решение о рекомендации увеличить число вычислительных узлов. | 15 || +|| `scale_in_window_size` | ScaleInWindowSize | Целое число | Количество бакетов, на основе которых принимается решение о рекомендации уменьшить число вычислительных узлов. |5 || +|| `target_tracking_cpumargin` | TargetTrackingCPUMargin | Вещественное число | Допустимое отклонение от целевого значения утилизации CPU при автоскейлинге. | 0.1 || +|| `dry_run_target_tracking_cpu` | DryRunTargetTrackingCPU | Вещественное число | Целевое значение утилизации CPU для проверки, как работал бы автоскейлинг. | 0 || +|# {wide-content} diff --git a/ydb/docs/ru/core/reference/configuration/toc_p.yaml b/ydb/docs/ru/core/reference/configuration/toc_p.yaml index ce2bfc5a67..546d7a53bc 100644 --- a/ydb/docs/ru/core/reference/configuration/toc_p.yaml +++ b/ydb/docs/ru/core/reference/configuration/toc_p.yaml @@ -3,3 +3,5 @@ items: href: tls.md - name: Аутентификация узлов баз данных href: node-authentication.md +- name: Hive + href: hive.md diff --git a/ydb/docs/ru/core/reference/embedded-ui/hive.md b/ydb/docs/ru/core/reference/embedded-ui/hive.md index f6b1369c0c..bf34d0f984 100644 --- a/ydb/docs/ru/core/reference/embedded-ui/hive.md +++ b/ydb/docs/ru/core/reference/embedded-ui/hive.md @@ -1,71 +1,95 @@ # Hive web-viewer -Web-viewer Hive предоставляет интерфейс работы с Hive. -Hive бывает общим на кластер и тенантный. -Попасть на страницу Web-viewer Hive можно из {{ ydb-short-name }} Monitoring. +Web-viewer Hive предоставляет визуальный интерфейс работы с [Hive](../../concepts/glossary.md#hive). + +Попасть на страницу Web-viewer Hive можно по ссылке Developer UI из вкладки Tablets в [Embedded UI](index.md). Для доступа к странице необходимо быть аутентифицированным как пользователь, входящий в список `monitoring_allowed_sids` в [конфигурации безопасности кластера](../configuration/index.md#security). ## Главная страница -Главная страница представляет информацию о распределении и потреблении ресурсов таблетками на каждой из нод представленной в виде таблицы. +Главная страница представляет информацию о распределении и потреблении ресурсов [таблетками](../../concepts/glossary.md#tablet) на каждом из [узлов](../../concepts/glossary.md#tablet), представленную в виде таблицы. Перед таблицей представлена краткая информация: -* **Tenant** - тенант, за который отвечает Hive -* **Tablets** - процентное и количественное соотношение поднятых таблеток к имеющимся -* **Boot Queue** - количество таблеток, которые находятся в очереди на запуск -* **Wait Queue** - количество таблеток, которые не имеют возможности подняться -* **Resource Total** - потребление ресурсов таблетками (cpu, net) -* **Resource StDev** - среднеквадратическое отклонение потребления ресурсов (cnt, cpu, mem, net) +* **Info**: + * **Tenant** — тенант, за который отвечает Hive. Для Hive конкрентой базы здесь указано имя этой базы, а для корневого Hive — имя корневого домена кластера (по умолчанию `/Root`). + * **Nodes** — количество узлов, подключённых к Hive. + * **Tablets** — процентное и количественное соотношение запущенных в данный момент таблеток к существующимм всего. + * **Boot Queue** — количество таблеток, которые находятся в очереди на запуск. + * **Wait Queue** — количество таблеток, которые не имеют возможности подняться, поскольку ни один из узлов не подходит для их запуска. +* **Totals** — суммарное потребление [ресурсов](../../contributor/hive.md#resources) таблетками (cnt, cpu, mem, net). +* **Variance** — [среднеквадратическое отклонение](https://ru.wikipedia.org/wiki/Среднеквадратическое_отклонение) потребления ресурсов (cnt, cpu, mem, net) между узлами. +* **Triggers** — значения показателей, которые используются для принятия решения об [автобалансировке](../../contributor/hive.md#autobalancing). Каждый сопровождается цветовым индикатором: зелёный означает, что значение находится на приемлемом уровне; жёлтый — что оно близко к порогу; красный — что значение превысило порог, и сейчас должна быть запущена автобалансировка. + * **Counter**, **CPU**, **Memory**, **Network** — [дисбаланс](../../contributor/hive.md#scatter) в потреблении соответствующего ресурса между узлами. + * **MaxUsage** — максимальное потребление ресурса на одном узле. + * **Imbalance** — дисбаланс в распределении по узлам таблеток одного объекта. Применяется только для таблеток без метрик. +* Статистика о числе запусков автобалансировки. Обнуляется при рестарте Hive. Время с последнего рестарта Hive можно увидеть на вкладке Tablets в Embedded UI, После идет таблица, где каждая строка представляет из себя один из узлов под управлением Hive и имеет следующие столбцы: -* **Node** - номер узла -* **Name** - fqdn узла и ic-port -* **DC** - датацентр, в котором расположен узел -* **Domain** - тенант узла -* **Uptime** - время, прошедшее с начала работы узла -* **Unknown** - количество таблеток в неопределенном состоянии -* **Starting** - количество таблеток в процессе подъема -* **Running** - количество работающих таблеток -* **Types** - распределение таблеток по их типу -* **Usage** - отнормированный доминантный ресурс +* **Node** — номер узла. +* **Name** — fqdn узла и ic—port. +* **DC** — датацентр, в котором расположен узел. +* **Domain** — тенант узла. +* **Uptime** — время, прошедшее с начала работы узла. +* **Unknown** — количество таблеток в неопределенном состоянии. +* **Starting** — количество таблеток в процессе подъема. +* **Running** — количество работающих таблеток. +* **Types** — распределение таблеток по их типу. С помощью нажатия на конкретный тип можно запретить запуск таблеток данного типа на конкретном узле. Нажатием на тип в заголовке таблицы можно установить такой запрет на все узлы по умолчанию. +* **Usage** — общее потребление ресурсов узла. * **Resources** : - * **cnt** - количество таблеток без потребления ресурсов - * **cpu** - потребление ядра таблетками - * **mem** - потребление ОЗУ таблетками - * **net** - потребление полосы таблетками + * **cnt** — фиктивный ресурс Counter. + * **cpu** — потребление ядра таблетками. + * **mem** — потребление ОЗУ таблетками. + * **net** — потребление полосы таблетками. -* **Active** - включение/отключение узла для перевоза таблеток на данный узел -* **Freeze** - запрет для таблеток подниматься на других узлах -* **Kick** - перевоз всех таблеток разом с узла -* **Drain** - плавный перевоз всех таблеток с узла +* **Active** — включение/отключение узла для перевоза таблеток на данный узел. +* **Freeze** — запрет для таблеток, запущенных на этом узле, подниматься на других узлах. +* **Kick** — перевоз всех таблеток разом с узла. +* **Drain** — плавный перевоз всех таблеток с узла — с ограниченным in-flight в отличие от Kick. Ниже таблицы представлены дополнительные страницы: -* **Bad tablets** - список таблеток, имеющих проблемы или ошибки -* **Heavy tablets** - список таблеток, потребляющих значительное количество ресурсов -* **Waiting tablets** - список таблеток без возможности подняться -* **Resources** - потребление ресурсов каждой таблеткой -* **Tenants** - список тенантов с указанием их локальных Hive таблеток -* **Nodes** - список узлов -* **Storage** - список пулов групп хранения -* **Groups** - список групп хранения для каждой таблетки -* **Settings** - страница конфигураций Hive -* **Reassign Groups** - страница перераспределения групп хранения между таблетками +* **Bad tablets** — список таблеток, имеющих проблемы или ошибки. +* **Heavy tablets** — список из 1000 таблеток, потребляющих наибольшее количество ресурсов. +* **Waiting tablets** — список таблеток без возможности подняться. +* **Resources** — потребление ресурсов каждой таблеткой. +* **Tenants** — список тенантов с указанием их локальных Hive таблеток. +* **Balancer** — меню для ручного запуска автобалансировки. +* **Operations log** — лог ручных изменений конфигураций Hive через viewer. +* **Nodes** — список узлов. +* **Storage** — список [пулов](../../concepts/glossary.md#storage-pool) групп хранения. +* **Groups** — список [групп хранения](../../concepts/glossary.md#storage-group) для каждой таблетки. +* **Settings** — страница конфигураций Hive. +* [**Reassign Groups**](#reassign_groups) — страница перераспределения групп хранения между таблетками. +* **SubActors** — список запущенных в данный момент вспомогательных акторов. Также можно посмотреть, какие таблетки используют конкретную группу, и наоборот, какие группы используются в конкретной таблетке. ## Reassign Groups {#reassign_groups} -При нажатии на кнопку **Reassign Groups** появится окно с параметрами для балансировки: +При добавлении в базу данных новых групп хранения существующие таблетки продолжают писать в старые группы. Для таких ситуаций в интерфейсе предусмотрена возможность запуска перераспределения таблеток по группам хранения. При нажатии на кнопку **Reassign Groups** появится окно с параметрами для балансировки: -* **Storage pool** - пул групп хранения для балансировки -* **Storage group** - в случае если не указан предыдущий пункт, можно указать отдельно только одну группу -* **Type** - тип таблеток для которых будет производиться балансировка -* **Channels** - диапазон каналов, для которых будет производиться балансировка -* **Percent** - процент от общего количества каналов таблеток которые переедут в результате балансировки -* **Inflight** - количество одновременно переезжающих на другие группы таблеток +* **Storage pool** — пул групп хранения для балансировки. +* **Storage group** — если предыдущий пункт не указан, можно указать отдельно только одну группу. +* **Type** — тип таблеток, для которых будет производиться балансировка. +* **Channels** — диапазон [каналов](../../concepts/glossary.md#channel), для которых будет производиться балансировка. +* **Percent** — процент от общего количества каналов таблеток, которые переедут в результате балансировки. +* **Inflight** — количество таблеток, одновременно переезжающих на другие группы. После указания всех параметров, следует нажать сначала "Query", который покажет количество каналов, попавших под переезд, и разблокирует кнопку "Reassign". При нажатии которой начнется перераспределение. + +## Balancer + +При нажатии на кнопку **Balancer** появится окно со следующими элементами: + +* **Run Balancer** — ручной запуск балансировки таблеток по узлам с заданным ограничением на число перемещений таблеток. +* **Rebalance ALL tablets FROM SCRATCH** — перезапуск сразу всех таблеток базы. Позволяет быстро получить равномерное распределение таблеток ценой кратковременной недоступности базы. *Не рекомендуется к использованию в production-окружении.* +* **Latest tablet moves** — последние 5 перемещённых таблеток. + +## Settings {#settings} + +На странице **Settings** представлен список параметров конфигурации Hive, которыми можно управлять через интерфейс. Для каждого параметра указано три значения: текущее значение, значение из [конфигурации {{ ydb-short-name }}](../../maintenance/manual/config-overview.md) и значение по умолчанию. Параметры, значения которых выставлены через интерфейс, выделены полужирным шрифтом. Выставленные через интерфейс значения имеют приоритет над значениями из конфигурации {{ ydb-short-name }}. Внесение изменений в настройки через интерфейс не изменяет значения в конфигурации. С описанием параметров можно ознакомиться в [описании конфигурации](../configuration/hive.md). + +Также на этой странице представлена таблица типов таблеток и видов метрик, с помощью которой можно управлять тем, какие метрики учитываются для каких типов таблеток. diff --git a/ydb/docs/ru/core/reference/embedded-ui/index.md b/ydb/docs/ru/core/reference/embedded-ui/index.md index 7cc62942d6..68a5e52b6e 100644 --- a/ydb/docs/ru/core/reference/embedded-ui/index.md +++ b/ydb/docs/ru/core/reference/embedded-ui/index.md @@ -3,6 +3,7 @@ {{ ydb-short-name }} предоставляет инструменты для мониторинга и определения состояния системы: * [{{ ydb-short-name }} Monitoring](ydb-monitoring.md) — основной обозреватель кластера. Показывает состояние узлов, групп хранения. +* [Hive web-viewer](hive.md) — интерфейс для взаимодействия с [Hive](../../concepts/glossary.md#Hive). * [Interconnect overview](interconnect-overview.md) — состояние соединений узлов кластера друг с другом. * [Логи](logs.md) — каждый компонент {{ ydb-short-name }} пишет сообщения в логи разного уровня. По ним можно детектировать критические проблемы или разобраться в причинах неполадок. * [Графики](charts.md) — {{ ydb-short-name }} собирает множество метрик, по которым можно определить состояние системы либо конкретного компонента. |