Файлы
В данном разделе содержится информация об объектах системы YTsaurus, которые предназначены для хранения больших бинарных данных. Также, бинарные данные можно хранить в таблицах.
Общие сведения
Файл — это узел Кипариса, имеющий тип file и предназначенный для хранения больших бинарных данных в системе.
Бинарные данные можно хранить не только в файлах, но и в таблицах.
Иногда необходимо из джобов сохранять бинарные данные. Очевидное решение заключается в том, чтобы записывать из каждого джоба файл в Кипарис. Однако данный способ имеет ряд недостатков:
- Создается высокая нагрузку на прокси-сервер;
- Появляется большое количество объектов в Кипарисе, что негативно сказывается на эффективности работы с ними.
В качестве решения предлагается другой способ — писать бинарные данные в одну таблицу.
Использование
Файлы поддерживают операцию записи в конец: команда write_file
. При этом запись производится путем добавления чанков, поэтому делать много мелких записей не рекомендуется.
Для чтения файлов используется команда read_file
. Можно читать файл либо целиком, либо указав диапазон чтения в виде смещений в байтах. Для этого используйте селектор offset
языка YPath.
Каждое чтение требует запроса метаданных мастер-сервера, поэтому не рекомендуется делать много чтений.
Использование в джобах
Одно из применений файлов — доставка одних и тех же данных, например, справочников, для джобов. При этом чанки файла скачиваются в локальный кэш на каждом узле, где потребовался файл.
Когда файл состоит из двух и более чанков или для него задан compression_codec
, из чанков формируется оригинальный файл в кэше. Такой файл называется артефактом. Существует два способа доставки артефакта в файл в sandbox
джоба — специальную директорию, созданную для каждого джоба:
-
По умолчанию в
sandbox
джоба будет создана ссылка на артефакт. Такое поведение является предпочтительным, так как работает быстрее и создает меньше IO-нагрузки на жесткие диски. -
Если в спецификации указана опция
copy_file
, файл будет скопирован вsandbox
. Такое поведение стоит использовать, только если требуется смонтировать весьsandbox
в tmpfs.
Если для файла атрибут executable
имеет значение true
, в sandbox
джоба он будет исполняемым. По умолчанию атрибут имеет значение false
.
С помощью атрибута file_name
можно контролировать имя файла или ссылки, созданных в sandbox
. При отсутствии этого атрибута используется имя файла из Кипариса.
Системные атрибуты
Любой файл имеет атрибуты, представленные в таблице ниже.
Количество байт в файле содержится в атрибуте uncompressed_data_size
, который есть у всех владельцев чанков.
Атрибут | Тип | Описание | Обязательный |
---|---|---|---|
executable |
bool |
Является ли файл исполнимым. | Нет |
file_name |
string |
Имя файла при перемещении его в sandbox к джобу. |
Нет |
Все файлы являются владельцами чанков, поэтому получают соответствующие атрибуты.