Слышал ли про erasure coding в HDFS?

«Слышал ли про erasure coding в HDFS?» — вопрос из категории Hadoop и HDFS, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Erasure Coding (EC) — это метод обеспечения отказоустойчивости в HDFS, альтернативный классической репликации. Вместо хранения полных копий данных (реплик) EC разбивает данные на фрагменты, кодирует их с добавлением избыточных блоков четности. Это позволяет восстановить данные при потере части блоков.

Сравнение с репликацией (factor=3):

  • Репликация: Хранит 3 полные копии. Эффективность использования диска: 33%.
  • Erasure Coding (схема RS-6-3): Разбивает данные на 6 блоков, добавляет 3 блока четности. Позволяет пережить потерю любых 3 блоков. Эффективность использования диска: 6/(6+3) = 67%.

Преимущества EC:

  • Значительная экономия дискового пространства (часто в 2 раза и более) при сопоставимом уровне отказоустойчивости.
  • Идеально подходит для холодных или редко читаемых данных (архивы, бэкапы, большие наборы данных для ML).

Недостатки / Ограничения EC:

  • Вычислительные накладные расходы: Кодирование и декодирование требуют CPU.
  • Латентность: Восстановление данных при отказе и чтение (особенно при деградации) медленнее, чем при чтении локальной реплики.
  • Не подходит для горячих данных или файлов, которые часто перезаписываются (EC в HDFS поддерживает только append).

Настройка в HDFS:

# Установка политики EC для директории
hdfs ec -setPolicy -policy RS-6-3-1024k -path /data/archive