Для установки YTsaurus Server 25.2.0 обновите k8s‑operator до версии 0.27.0.

Вышел YTsaurus 25.2.0
Вышел YTsaurus 25.2.0. Ниже приведены основные изменения, для получения подробностей, пожалуйста, ознакомьтесь с release notes.
Важные изменения
-
Добавлена поддержка Nvidia GPU в k8s‑operator. Улучшено обнаружение GPU‑устройств в контейнере джоба. Документация.
-
Добавлен bundle controller для управления tablet cell bundles на небольших кластерах. Этот компонент распределяет tablet‑ноды между бандлами, управляет обслуживанием нод и контролирует распределение CPU и памяти между tablet‑нодами. Документация.
-
Добавлена поддержка multiproxy‑режима в RPC‑прокси. RPC‑прокси (включая RPC‑прокси в Job Proxy) можно настроить для работы с удалёнными кластерами. Документация.
Обновления языка запросов динтаблиц
-
Добавлены функции
cardinality_state
иcardinality_merge
. -
Добавлена поддержка функций
timestamp
для произвольных часовых поясов. -
Реализована функция
array_agg
. -
Добавлена поддержка простых подзапросов в секции FROM.
Изменения по умолчанию и депрекации
-
Параметр
decommission_through_extra_peers
теперь включён по умолчанию; это существенно снижает простой при обслуживании tablet‑нод. -
Удалённое копирование hunks включено по умолчанию.
-
Учёт ресурсов динамических таблиц переключен с аккаунтов на бандлы.
-
Операция
remote copy
устанавливаtт некоторые системные атрибуты на таблице‑назначении, даже если в спецификации указаноcopy_attributes=false
; список таких атрибутов:compression_codec
,erasure_codec
,optimize_for
. -
Депрекация
list_node
. Мастер‑серверы теперь будут писать в лог сообщение уровня alert после загрузки снапшота, если он содержитlist_node
. Это поведение можно отключить опциейalert_on_list_node_load
. Рекомендуем перейти на другие типы и удалить или заменить все оставшиеся узлы видаlist_node
. В противном случае в следующем мажорном релизе мастер‑сервер не запустится. В этот релиз мы добавили скрипт, который поможет с миграцией в подавляющем большинстве случаев. Он находится по путиyt/yt/scripts/master/replace_list_nodes
.
Подробнее про депрекацию list_node
Депрекация узлов‑списков началась с версии 24.1 и теперь близится к завершению. В ближайшие месяцы мы планируем выпустить мажорную версию YTsaurus, в которой эти узлы будут полностью удалены из серверного кода. Мы хотим заранее сообщить об этом важном изменении и помочь вам перейти на альтернативные типы узлов.
list_node
и почему мы от них отказываемся?
Что такое list_node
— это тип узлов Кипариса, схожий с map_node
. Эти два типа — единственные, которые могут иметь другие Кипарисные узлы в качестве дочерних. Сейчас мы разрабатываем новые подходы к улучшению масштабируемости мастер‑сервера и в рамках этой задачи решили прекратить поддерживать узлы‑списки. Поддержка этого типа оказалась затруднительной при минимальном количестве преимуществ. Мы уже убрали все list_node
с наших внутренних инсталляций, и большинству пользователей оказалось достаточно предложенных нами альтернатив.
Как мигрировать
Мы покажем, как проверить кластер на наличие list_node
объектов, и выпустим скрипт для их замены на узлы типа document
. И то и другое произойдёт в ближайшем мажорном релизе 25.2. Ниже мы рассмотрим наиболее частые случаи использования узлов‑списков, ведь все возможные сценарии предугадать трудно.
Что использовать вместо узлов‑списков?
Вот типичные сценарии использования list_node
и наши рекомендации по замене:
-
В роли очередей:
Во время нашей внутренней миграции мы обнаружили, что многие пользователи использовали узлы‑списки в качестве очередей. Это логично: узлы‑списки позволяют обращаться к дочерним элементам по индексу и добавлять элементы в конец, имитируя поведение очереди. К счастью, их легко заменить документ‑узлами в таких случаях использования. Тип
document
хранит произвольный YSON и поддерживает все типы YSON, включая списки. Таким образом, документы поддерживают те же операции со списками, что и узлы‑списки. Обратите внимание: документы не могут содержать директории, таблицы или другие типы узлов Кипариса. Если ваше приложение опирается на использование этих типов внутри списка, документы не подойдут. Подробнее см. в документации. -
В качестве прочих YSON‑подобных структур:
При запуске без указания типа некоторые команды создают узлы‑списки, и пользователи могут пользоваться этим непреднамеренно. Например, команда
yt set //home/some_path '["something"; "something"]'
создаст узел‑список. Если данные, хранящиеся в вашем узле‑списке, можно представить как YSON, рекомендуем хранить их в виде документ‑узла. -
Когда дочерние элементы — это map‑узлы или таблицы, или когда на них используются блокировки:
Такие случаи встречались редко, но бывали ситуации, когда у узлов‑списков в качестве дочерних были директории или таблицы, или когда пользователям требовалось блокировать элементы списка. Если вашей логике всё же нужно нужно блокировать элементы или хранить в узлах‑списках директории либо таблицы, то мы рекомендуем полностью перейти на директории. Обратите внимание: тип
map_node
не поддерживает вставку дочерних элементов по индексу. По нашему опыту, узлы‑списки не были широко востребованы в этих специфических случаях, и большинство приложений легко адаптируется.
Обеспечение плавного перехода
В версии 24.1 мы добавили опцию в динамическую конфигурацию мастер‑сервера forbid_list_node_creation
, запрещающую создание новых узлов‑списков.
Начиная с версии 24.2 эта опция включена по умолчанию. Поэтому, если ваш кластер введён в эксплуатацию начиная с версии 24.2, вероятно, никаких действий не потребуется.
Чтобы проверить, создают ли ваши процессы узлы‑списки, включите опцию forbid_list_node_creation
:
$ yt set //sys/@config/cypress_manager/forbid_list_node_creation %true
В предстоящем релизе 25.2 мастер‑сервер будет выдавать предупреждение при загрузке снапшота, в котором содержатся узлы‑списки.
В одном из последующих релизов поддержка узлов‑списков будет полностью прекращена: кластер не запустится, если в их снапшотах останутся объекты типа list_node
.