Erasure coding

Обзор

Erasure coding (EC) — это механизм обеспечения сохранности редко используемых данных, в котором применяется шифрование вместо репликации. Он позволяет снизить потребление ресурсов для «теплых» и «холодных» данных при сохранении отказоустойчивости.

Фактор репликации, равный трем, позволяет HDFS выдержать два сбоя данных и продолжать работу. При использовании репликации отказоустойчивость гарантируется за счет дискового пространства. С фактором репликации три — это 200% накладных расходов. Erasure coding обеспечивает такой же уровень отказоустойчивости или выше, но стоит значительно меньше: например, файл с политикой ЕС RS-3-2-1024k выдержит так же два сбоя данных, но потребует лишь 50% накладных расходов.

Когда к файлу применяется политика erasure coding, он разделяется на небольшие блоки, называемые stiping cell. Затем HDFS использует алгоритмы шифрования на паре блоков stiping cells чтобы создать контрольный блок (parity block). Если блок stiping cell поврежден или утерян, parity-блок и сохранившиеся блоки stiping cell можно использовать для восстановления отсутствующих. Этот процесс называется расшифровкой (decoding).

Erasure coding требует дополнительных вычислительных ресурсов и использования сети: данные необходимо шифровать во время операций записи и расшифровывать для операций чтения, если целостность данных потеряна.

ПРИМЕЧАНИЕ

Поскольку erasure coding является альтернативой репликации, любые операции, связанные с фактором репликации (например, команда -setrep), не затронут файлы, для которых действует политика erasure coding.

Более подробную информацию о репликации можно получить в статье Фактор репликации.

Политики

Политика erasure coding определяет выбор алгоритма шифрования данных и степень отказоустойчивости. Название политики выглядит как RS-10-4-1024k и содержит следующую информацию:

  • Тип кодека: Reed-Solomon (RS) или XOR.

  • Количество блоков данных (stiping cell).

  • Количество parity-блоков.

  • Размер блока stiping cell.

На данный момент поддерживаются пять встроенных политик: RS-3-2-1024k, RS-6-3-1024k, RS-10-4-1024k, RS-LEGACY-6-3-1024k, XOR-2-1- 1024к.

Вы можете также использовать собственную политику. Для этого необходимо создать XML-файл user_ec_policies.xml, описывающий настройки политики, и добавить новую политику, использовав команду hdfs ec -addPolicies.

Для получения дополнительной информации о том, как создать этот файл, можно обратиться к примеру user_ec_policies.xml.template.

Требования

Erasure coding предъявляет дополнительные требования к аппаратному обеспечению и архитектуре кластеров:

  • CPU. Шифрование и расшифровка данных создает нагрузку на CPU как на HDFS-клиентах, так и на DataNodes.

  • DataNodes. Для erasure coding необходимо минимальное количество DataNodes, равное сумме блоков stiping cell и parity-блоков. Например, для политики RS-3-2-1024k минимальное количество DataNodes будет 5 (3 stiping cell и 2 parity-блока). Это обеспечивает корректную работу политики EC. Если кластер не удовлетворяет этому требованию, HDFS все равно позволит установить политику, но она не будет работать.

  • Стойки. Erasure coding может использовать информацию о расположении DataNodes по стойкам (rack awareness). Желательно, чтобы количество стоек было больше или равно количеству parity-блоков. Для кластеров с меньшим количеством стоек HDFS не сможет поддерживать отказоустойчивость стойки, но все равно попытается распределить parity-блоки по нескольким DataNodes. По этой причине рекомендуется устанавливать стойки с одинаковым количеством узлов данных. Для получения дополнительной информации о rack awareness можно обратиться к статье Rack awareness.

Управление EC

Erasure coding можно применить только к директории. После применения политики изменения затронут только новые файлы, добавленные в директорию. Это позволяет файлам с разными политиками EC и реплицированным файлам находиться в одном каталоге.

Установка или изменение политики для файла требует перезаписи его данных. Если вы хотите применить EC к существующим файлам, создайте новый каталог, установите для него политику EC и скопируйте туда файлы с помощью команды distcp.

Для управления erasure coding используйте команды hdfs ec.

Например, чтобы установить политику XOR-2-1-1024k для директории:

  1. Убедитесь, что политика включена, выполнив команду:

    $ hdfs ec -listPolicies

    Пример вывода команды:

    ErasureCodingPolicy=[Name=RS-10-4-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=10, numParityUnits=4]], CellSize=1048576, Id=5], State=DISABLED
    ErasureCodingPolicy=[Name=RS-3-2-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=3, numParityUnits=2]], CellSize=1048576, Id=2], State=DISABLED
    ErasureCodingPolicy=[Name=RS-6-3-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=1], State=ENABLED
    ErasureCodingPolicy=[Name=RS-LEGACY-6-3-1024k, Schema=[ECSchema=[Codec=rs-legacy, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=3], State=DISABLED
    ErasureCodingPolicy=[Name=XOR-2-1-1024k, Schema=[ECSchema=[Codec=xor, numDataUnits=2, numParityUnits=1]], CellSize=1048576, Id=4], State=DISABLED

    Прежде чем применить политику, ее необходимо включить. Политика RS-6-3-1024k включена по умолчанию.

  2. Чтобы включить политику XOR-2-1-1024k, используйте команду:

    $ hdfs ec -enablePolicy -policy XOR-2-1-1024k
  3. Чтобы установить включенную политику для директории tmp, используйте команду:

    $ hdfs ec -setPolicy -path /tmp -policy XOR-2-1-1024k
  4. Проверьте политику каталога:

    $ hdfs ec -getPolicy -path /tmp

    Вывод команды должен быть таким:

XOR-2-1-1024k
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней