Подключение к Ozone через CLI

Обзор

Ozone предоставляет CLI-инструмент, позволяющий получить доступ к некоторым функциям, которые нельзя выполнить другими способами. Обычно такие команды решают одноразовые административные задачи во время настройки, например, создание тома (volume) или работа с ACL.

Общий вид команды Ozone shell представлен ниже:

$ ozone sh <object> <action> [params]

где:

  • <object> — объект Ozone, например, корзина (bucket), ключ, префикс, снепшот, пользователь, токен или том.

  • <action> — действие, которое можно произвести с объектом. Например, для создания тома соответствующим действием является create.

  • [params] — дополнительные параметры, которые необходимы для выполнения некоторых действий.

CLI-инструмент предоставляет руководство как для объектов, так и для действий. Чтобы увидеть список действий, доступных для объекта, выполните команду:

$ ozone sh <object> --help

А чтобы увидеть параметры, необходимые для выполнения действия, запустите команду:

$ ozone sh <object> <action> --help
ПРИМЕЧАНИЕ

На данный момент нет онлайн-документации для объектов и действий, доступных в Ozone shell. Для получения списка доступных опций используйте руководство внутри самого инструмента.

Примеры

Работа с томами

CLI включает в себя некоторые уникальные функции, среди которых — создание томов с квотами. Чтобы воспользоваться данной функцией, запустите следующую команду:

$ ozone sh volume create <volume_name> --quota=<quota_in_bytes>

Чтобы проверить, что том создался правильно с нужной квотой, выведите список всех томов:

$ ozone sh volume ls

Эта команда возвращает информацию обо всех томах:

[ {
  "metadata" : { },
  "name" : "vol1",
  "admin" : "sergei",
  "owner" : "sergei",
  "quotaInBytes" : 1073741824,
  "quotaInNamespace" : -1,
  "usedNamespace" : 0,
  "creationTime" : "2025-01-13T13:20:43.173Z",
  "modificationTime" : "2025-01-13T13:20:43.173Z",
  "acls" : [ {
    "type" : "USER",
    "name" : "sergei",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
  }, {
    "type" : "GROUP",
    "name" : "sergei",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
  } ],
  "refCount" : 0
} ]

Работа с корзинами

Ниже приведен пример создания корзины с ключами шифрования:

$ ozone sh bucket create -k <key_name> <URI>

где:

  • <key_name> — название ключа шифрования, созданного при помощи команды hadoop key create.

  • <URI> — название корзины, включающее название тома (например, /vol1/bucket1).

Также с помощью CLI можно управлять настройками репликации корзины:

$ ozone sh bucket set-replication-config -t=<type> -r=<replication> <value>

где:

  • <type> — тип репликации. Поддерживаемые типы: RATIS и EC.

  • <replication> — определение репликации. Валидные значения зависят от типа репликации. Для RATIS подойдут ONE или THREE. В то время как для EC должен соблюдаться формат CODEC-DATA-PARITY-CHUNK_SIZE, например rs-3-2-1024k.

  • <value> — URI корзины.

Ниже приведен пример команды и изменений в конфигурации корзины:

$ ozone sh bucket set-replication-config -t=RATIS -r=ONE vol1/bucket1
"replicationConfig" : {
  "replicationFactor" : "ONE",
  "requiredNodes" : 1,
  "replicationType" : "RATIS"
}

Управление списками контроля доступа

CLI-инструмент позволяет добавлять и удалять списки контроля доступа (ACL) для томов и корзин. Ниже приведен пример команды, добавляющей ACL для тома:

$ ozone sh volume addacl -s=<URI> -a=<type>:<entity>:<permissions> <value>

где:

  • <store> — тип хранилища: OZONE или S3.

  • <type> — вид системной сущности: user или group.

  • <entity> — пользователь или группа, для которых устанавливаются права доступа.

  • <permissions> — набор букв, определяющий уровни доступа сущности. Доступны следующие составляющие:

    • r — чтение данных из ресурса.

    • w — запись данных в ресурс.

    • c — создание объектов в ресурсе.

    • d — удаление объектов из ресурса.

    • l — перечисление объектов, хранящихся в ресурсе.

    • x — чтение списка контроля доступа к ресурсу.

    • y — изменение списка контроля доступа к ресурсу.

    • a — все вышеперечисленное.

    • n — никаких прав.

  • <value> — URI тома/корзины.

Пусть есть следующий том до добавления нового ACL:

[ {
  "metadata" : { },
  "name" : "vol1",
  "admin" : "s_tikhomirov_krb1",
  "owner" : "s_tikhomirov_krb1",
  "quotaInBytes" : -1,
  "quotaInNamespace" : -1,
  "usedNamespace" : 0,
  "creationTime" : "2025-01-22T21:23:28.796Z",
  "modificationTime" : "2025-01-22T21:23:28.796Z",
  "acls" : [ {
    "type" : "USER",
    "name" : "s_tikhomirov_krb1",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
  } ],
  "refCount" : 0
} ]

В нем присутствует ACL только для пользователя, создавшего этот том. Вызов команды addacl с опцией -a=user:sergei:rwcdlxy добавляет следующий ACL:

[ {
  "metadata" : { },
  "name" : "vol1",
  "admin" : "s_tikhomirov_krb1",
  "owner" : "s_tikhomirov_krb1",
  "quotaInBytes" : -1,
  "quotaInNamespace" : -1,
  "usedNamespace" : 0,
  "creationTime" : "2025-01-22T21:23:28.796Z",
  "modificationTime" : "2025-01-22T21:53:56.260Z",
  "acls" : [ {
    "type" : "USER",
    "name" : "s_tikhomirov_krb1",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
  }, {
    "type" : "USER",
    "name" : "sergei",
    "aclScope" : "ACCESS",
    "aclList" : [ "READ", "WRITE", "CREATE", "LIST", "DELETE", "READ_ACL", "WRITE_ACL" ]
  } ],
  "refCount" : 0
} ]

Удалить список контроля доступа можно с помощью команды removeacl:

$ ozone sh volume removeacl -s=OZONE -a=user:sergei:rwcdlxy vol1
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней