Кодирование стирания Hadoop 3.0: влияние на производительность чтения файлов?

Я пытаюсь понять, какое влияние может оказать кодирование стирания на производительность чтения файла.

Перед этим краткий обзор кодирования стирания Hadoop 3.0 с использованием метода Рида-Соломона. Если файл, разбитый на k блоков, закодирован в p блоков четности, то из k + p блоков по крайней мере любые k блоков должны быть доступны для воссоздания файла. В Hadoop 2.0 репликация по умолчанию была 3, поэтому для файла из 10 блоков требуется 30 блоков пространства в кластере. Hadoop 3.0 заявляет, что он обеспечивает сокращение пространства на 50%, поэтому для тех же 10 блоков, когда они хранятся в версии 3.0, потребуется только 15 блоков, т.е. дополнительные 5 блоков можно использовать в качестве блоков четности.

В Hadoop 3.0 - файл (file1) с 10 блоками приведет к 5 блокам четности (принимая улучшение данных с EC в 3.0 до 50%). Скажем, исходные 10 блоков данных хранятся в узлах с n0 по n9, а 5 блоков четности хранятся на узлах с n10 по n14. Теперь операция чтения этого файла должна определенно извлекать данные из первых 10 узлов, т.е. от n0 до n9. Поскольку извлечение данных из узлов с блоками четности может потребовать больше времени, так как оно включает декодирование (верно??).

Далее допустимое количество отказов узлов для этого файла - 5.

Если узлы n10 - n14 выходят из строя (это узлы с блоками четности). Производительность операции чтения (из-за сбоя узлов) не будет затронута, и производительность будет такой же, как в сценарии выше.

Но если узлы с n5 по n9 выходят из строя, я предполагаю, что производительность чтения в этом случае будет ниже, чем производительность в вышеупомянутых случаях.

Но в 2.0 вы можете ожидать одинаковую производительность независимо от того, какие узлы вышли из строя, если число отказов узлов меньше, чем ReplicationFactor-1.

Вопрос заключается в следующем: стоит ли добавлять вышеуказанный фактор (кодирование стирания) также к набору факторов, которые могут повлиять на производительность чтения в 3.0

0 ответов

Вы смотрели эти презентации?

https://fr.slideshare.net/HadoopSummit/debunking-the-myths-of-hdfs-erasure-coding-performance

https://fr.slideshare.net/HadoopSummit/hdfs-erasure-coding-in-action

EC будет медленнее, чем репликация, как только появятся плохие блоки. EC будет оказывать большее давление на ЦП на пути записи, но меньше на ввод-вывод. Менее ясно, как EC влияет на производительность чтения в реальной жизни, когда ваши задания Spark или Hadoop не охватывают весь кластер и страдают от отсутствия локальности данных. Я ожидал, что Replication 3 даст больше возможностей для оптимизации локализации данных в неидеальной конфигурации по сравнению с EC, но мне не удается собрать отзывы по этому поводу.

Другие вопросы по тегам