Файлы

В данном разделе содержится информация об объектах системы 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 к джобу. Нет

Все файлы являются владельцами чанков, поэтому получают соответствующие атрибуты.

Следующая