Настройка Hive
Hive — компонент YDB, отвечающий за запуск таблеток. В различных ситуациях и под разными паттернами нагрузки может возникнуть потребность в настройке его поведения. Поведение Hive конфигурируется в секции hive_config
конфигурации YDB. Также часть опций из конфигурации доступна для редактирования через интерфейс Hive web-viewer. Настройки, выставленные через интерфейс, имеют приоритет над указанными в конфигурации. Ниже перечислены все доступные опции, с указанием соответствующего названия опции в интерфейсе, если опцию возможно редактировать через интерфейс.
Опции запуска таблеток
С помощью этих опций можно регулировать с какой скоростью запускаются таблетки и как для них выбираются узлы.
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
MaxTabletsScheduled |
Целое число |
Максимальное число таблеток, одновременно находящихся в процессе старта на одном узле. |
100 |
|
MaxBootBatchSize |
Целое число |
Максимальное число таблеток из очереди запуска Hive, обрабатываемых за раз. |
1000 |
|
NodeSelectStrategy |
Перечисление |
Стратегия выбора узла для запуска таблетки. Возможные варианты:
|
|
|
— |
Перечисление |
Регулирует поведение при запуске большого числа таблеток. Возможные варианты:
Если при запуске большого количества таблеток один из узлов запускает таблетки чуть медленне других, то при использовании |
|
|
— |
Вложенная секция |
Ограничения на запуск таблеток различных типов на одном узле. Указывается в формате списка, где каждый элемент имеет поля |
Пустая секция |
|
— |
Вложенная секция |
Приоритеты по выбору датацентров для запуска таблеток различных типов. Для каждого типа таблетки можно указать несколько групп датацентров. Датацентры внутри одной группы будут иметь одинаковый приоритет, а более ранняя группа будет иметь приориет над последующими. Пример формата:
|
Пустая секция |
|
— |
Целое число |
При указании любого отличного от 0 числа, все координаторы и медиаторы по возможности запускаются в одном и том же датацентре. |
1 |
Пример
Примечание
В подсекциях default_tablet_limit
и default_tablet_preference
нужно указывать типы таблеток. Точные названия типов таблеток можно посмотреть, например, на вкладке Tablets в YDB UI.
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"
Опции автобалансировки
Эти опции регулируют процесс автобалансировки: в каких ситуациях он запускается, сколько таблеток с какими интервалами перевозит, как выбирает узлы и таблетки. Часть опций представлена в двух вариациях: для "emergency-балансировки", то есть балансировки при перегрузке одного или нескольких узлов, и для всех остальных видов балансировки.
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
MinScatterToBalance |
Вещественное число |
Порог метрики Scatter для ресурсов CPU, Memory, Network. Имеет приоритет ниже, чем параметры ниже. |
0.5 |
|
MinCPUScatterToBalance |
Вещественное число |
Порог метрики Scatter для ресурса CPU. |
0.5 |
|
MinMemoryScatterToBalance |
Вещественное число |
Порог метрики Scatter для ресурса Memory. |
0.5 |
|
MinNetworkScatterToBalance |
Вещественное число |
Порог метрики Scatter для ресурса Network. |
0.5 |
|
MinCounterScatterToBalance |
Вещественное число |
Порог метрики Scatter для фиктивного ресурса Counter. |
0.02 |
|
MinNodeUsageToBalance |
Вещественное число |
Потребление ресурсов на узле ниже данного значения приравнивается к данному значению. Используется для того, чтобы не балансировать таблетки между малозагруженными узлами. |
0.1 |
|
MaxNodeUsageToKick |
Вещественное число |
Порог потребления ресурсов на узле для запуска emergency-автобалансировки. |
0.9 |
|
NodeUsageRangeToKick |
Вещественное число |
Минимальная разница в уровне потребления ресурсов между узлами, ниже которой автобалансировка считается нецелесообразной. |
0.2 |
|
ResourceChangeReactionPeriod |
Целое число секунд |
Частота обновления агрегированной статистики потребления ресурсов. |
10 |
|
TabletKickCooldownPeriod |
Целое число секунд |
Минимальный период времени между перемещениями одной таблетки. |
600 |
|
SpreadNeighbours |
true/false |
Запуск таблеток одного схемного объекта (таблицы, топика) по возможности на разных узлах. |
true |
|
NodeBalanceStrategy |
Перечисление |
Стратегия выбора узла, с которого перевозятся таблетки при автобалансировке. Возможные варианты:
|
|
|
TabletBalanceStrategy |
Перечисление |
Стратегия выбора таблетки для перевоза при автобалансировке. Возможные варианты:
|
|
|
MinPeriodBetweenBalance |
Вещественное число секунд |
Минимальный период времени между двумя итерациями автобалансировки. Не относится к emergency-балансировке. |
0.2 |
|
BalancerInflight |
Целое число |
Число таблеток, одновременно перезапускающихся в процессе автобалансировки. Не относится к emergency-балансировке. |
1 |
|
MaxMovementsOnAutoBalancer |
Целое число |
Число перемещений таблеток за одну итерацию автобалансировки. Не относится к emergency-балансировке. |
1 |
|
ContinueAutoBalancer |
true/false |
При включении следующая итерация балансировки запускается, не дожидаясь окончания |
true |
|
MinPeriodBetweenEmergencyBalance |
Вещественное число секунд |
Аналогично |
0.1 |
|
EmergencyBalancerInfligh |
Целое число |
Аналогично |
1 |
|
MaxMovementsOnEmergencyBalancer |
Целое число |
Аналогично |
2 |
|
ContinueEmergencyBalancer |
true/false |
Аналогично |
true |
|
CheckMoveExpediency |
true/false |
Проверка целесообразности перемещений таблеток. Если автобалансировка приводит к повышенному потреблению Hive процессорных ресурсов, можно отключить эту опцию. |
true |
|
ObjectImbalanceToBalance |
Вещественное число |
Порог метрики дисбаланса таблеток одного объекта. |
0.02 |
|
LessSystemTabletMoves |
true/false |
Минимизация перемещения системных таблеток при автобалансировке. |
true |
|
BalancerIgnoreTabletTypes |
Список типов таблеток. При выставлении через Hive UI — разделённый точкой с запятой. |
Типы таблеток, на которые не распространяется автобалансировка. |
Пустой список |
Примеры
С помощью такого файла конфигурации можно полностью отключить все виды автобалансировки таблеток между узлами.
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
Таким файлом конфигурации можно отключить все виды автобалансировки между узлами для таблеток, участвующих в распределении транзакций, то есть координаторов и медиаторов. Точные названия типов таблеток можно посмотреть, например, на вкладке Tablets в YDB UI.
hive_config:
balancer_ignore_tablet_types:
- Coordinator
- Mediator
При использовании Hive UI для такого же эффекта нужно записать Coordinator;Mediator
в поле ввода для настройки BalancerIgnoreTabletTypes.
Опции сбора метрик потребления вычислительных ресурсов
Hive собирает с каждого узла метрики потребления вычислительных ресурсов — процессорного времени, оперативной памяти, сети — в целом по узлу и с разделением по таблеткам. Эти настройки позволяют регулировать сбор этих метрик, их нормировку и агрегацию.
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
MaxResourceCPU |
Целое число микросекунд |
Максимальное потребление CPU на узле в секунду. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. |
10000000 |
|
MaxResourceMemory |
Целое число байт |
Максимальное потребление памяти на узле. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. |
512000000000 |
|
MaxResourceNetwork |
Целое число байт/секунду |
Максимальное потребление полосы на узле. Значение по умолчанию, используется только если узел не предоставляет значение при регистрации в Hive. |
1000000000 |
|
MaxResourceCounter |
Целое число |
Максимальное потребление виртуального ресурса Counter на узле. |
100000000 |
|
MetricsWindowSize |
Целое число миллисекунд |
Размер окна, на котором агрегируются метрики потребления ресурсов таблетками. |
60000 |
|
ResourceOvercommitment |
Вещественное число |
Коэффициент переподписки на ресурсы узлов. |
3.0 |
|
— |
Названия пулов через запятую |
Пулы актор-системы, потребление в которых учитывается при подсчётё потребления ресурсов узла. |
System,User,IC |
Опции распределения каналов между группами хранения
Здесь перечислены опции, связанные с распределением каналов таблеток по группам хранения: с учётом различных метрик, с выбором групп, с процессом автобалансировки каналов по группам.
Примечание
Эта таблица содержит продвинутые настройки, которые в большинстве случаев не требуют изменения.
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
DefaultUnitIOPS |
Целое число |
Значение по умолчанию для IOPS одного канала. |
1 |
|
DefaultUnitThroughput |
Целое число байт/секунду |
Значение по умолчанию для потребления пропускной способности одним каналом. |
1000 |
|
DefaultUnitSize |
Целое число байт |
Значение по умолчанию для потребления места на дисках одним каналом. |
100000000 |
|
StorageOvercommit |
Вещественное число |
Коэффициент переподписки на ресурсы групп хранения. |
1.0 |
|
StorageBalanceStrategy |
Перечисление |
Выбор параметра используемого для распределения каналов таблеток по группам хранения. Возможные варианты:
|
|
|
StorageSafeMode |
true/false |
Проверка превышения максимального потребления ресурсов групп хранения. |
true |
|
StorageSelectStrategy |
Перечисление |
Стратегия выбора группы хранения для канала таблетки. Возможные варианты:
|
|
|
MinPeriodBetweenReassign |
Целое число секунд |
Минимальный период времени между переназначениями групп хранения для каналов одной таблетки. |
300 |
|
StoragePoolFreshPeriod |
Целое число миллисекунд |
Периодичность обновления информации о пулах хранения. |
60000 |
|
SpaceUsagePenaltyThreshold |
Вещественное число |
Минимальное отношение свободного места в целевой группе к свободному месту в исходной группе, при котором целевая группа будет пессимизирована путём применения к весу мультипликативного штрафа при перевозе канала. |
1.1 |
|
SpaceUsagePenalty |
Вещественное число |
Коэффициент штрафа пессимизации, описанной выше. |
0.2 |
|
ChannelBalanceStrategy |
Перечисление |
Стратегия выбора канала для переназначения при балансировке каналов. Возможные варианты:
|
|
|
MaxChannelHistorySize |
Целое число |
Максимальный размер истории каналов. |
200 |
|
StorageInfoRefreshFrequency |
Целое число миллисекунд |
Частота обновления информации о пулах хранения. |
600000 |
|
MinStorageScatterToBalance |
Вещественное число |
Порог метрики Scatter для групп хранения. |
999 |
|
MinGroupUsageToBalance |
Вещественное число |
Порог потребления ресурсов группы хранения, ниже которого не запускается балансировка. |
0.1 |
|
StorageBalancerInflight |
Целое число |
Число таблеток, одновременно перезапускающихся во время балансировки каналов. |
1 |
Опции отслеживания перезапусков
Hive отслеживает, как часто рестартуют различные узлы и таблетки, чтобы определять проблемные. С помощью данных опций можно настроить, какие именно таблетки или узлы будут считаться проблемными, и как это на них повлияет. На основании этой статистики узлы и таблетки попадают в отчёт HealthCheck API.
Опции отслеживания перезапусков таблеток
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
— |
Целое число секунд |
Размер окна, на котором собирается статистика о числе рестартов таблетки. Этот период используется только для статистики, передаваемой в HealthCheck. |
3600 |
|
— |
Целое число миллисекунд |
Размер окна, на котором считается количество рестартов таблетки для пессимизации запуска проблемных таблеток. |
1000 |
|
— |
Целое число |
Количество рестартов на окне |
2 |
|
— |
Целое число миллисекунд |
Периодичность попыток запуска проблемных таблеток. |
1000 |
Опции отслеживания перезапусков узлов
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
— |
Целое число секунд |
Размер окна, на котором собирается статистика о числе рестартов узла. |
3600 |
|
NodeRestartsForPenalty |
Целое число |
Количество рестартов на окне |
3 |
Прочее
Здесь перечислены дополнительные настройки Hive.
Примечание
Эта таблица содержит продвинутые настройки, которые в большинстве случаев не требуют изменения.
Название параметра в конфигурации |
Название параметра в Hive web-viewer |
Формат |
Описание |
Значение по умолчанию |
|
DrainInflight |
Целое число |
Число таблеток, одновременно перезапускающихся в процессе плавного перемещения всех таблеток с одного узла (drain). |
10 |
|
— |
Целое число |
Количество идентификаторов таблеток, которое за один раз Hive базы данных запрашивает у корневого Hive. |
1000 |
|
— |
Целое число |
Минимальное количество идентификаторов таблеток, которое за один раз корневой Hive выделяет для Hive базы данных. |
1000 |
|
— |
Целое число |
Максимальное количество идентификаторов таблеток, которое за один раз выделяет для Hive базы данных. |
1000000 |
|
— |
Целое число секунд |
Период неактивности, по истечении которого узел удаляется из базы Hive. |
3600 |
|
WarmUpEnabled |
true/false |
При включении этой опции при старте базы Hive дожидается подключения всех узлов прежде чем начать запускать таблетки. При выключении все таблетки могут быть запущены на первом подключившемся узле. |
true |
|
MaxWarmUpBootWaitingPeriod |
Целое число миллисекунд |
Время ожидания старта всех известных узлов при старте базы. |
30000 |
|
MaxWarmUpPeriod |
Целое число секунд |
Максимальное время ожидания старта узлов при старте базы. |
600 |
|
— |
true/false |
Разрешены ли деструктивные ручные операции. |
false |
|
— |
Целое число |
Максимальное количество параллельно устаналиваемых соединений с узлами. |
1000 |
|
— |
Список типов таблеток, разделённый запятой |
Список типов таблеток, для которых игнорируется операция очистки истории. |
ColumnShard,KeyValue,PersQueue,BlobDepot |
|
— |
Список типов таблеток, разделённый запятой |
Список типов таблеток, для которых разрешена операция очистки истории. |
DataShard |
|
ScaleRecommendationRefreshFrequency |
Целое число миллисекунд |
Как часто обновляется рекомендация по количеству вычислительных узлов. |
60000 |
|
ScaleOutWindowSize |
Целое число |
Количество бакетов, на основе которых принимается решение о рекомендации увеличить число вычислительных узлов. |
15 |
|
ScaleInWindowSize |
Целое число |
Количество бакетов, на основе которых принимается решение о рекомендации уменьшить число вычислительных узлов. |
5 |
|
TargetTrackingCPUMargin |
Вещественное число |
Допустимое отклонение от целевого значения утилизации CPU при автоскейлинге. |
0.1 |
|
DryRunTargetTrackingCPU |
Вещественное число |
Целевое значение утилизации CPU для проверки, как работал бы автоскейлинг. |
0 |