Ответ
Стандартный и рекомендуемый коэффициент репликации в HDFS — 3. Это означает, что каждый блок данных (обычно размером 128 МБ или 256 МБ) хранится в трех идентичных копиях на разных DataNode кластера.
Влияние на ключевые аспекты системы:
- Отказоустойчивость: Система может пережить одновременный отказ двух узлов из трех, хранящих копии одного блока, без потери данных. NameNode отслеживает состояние реплик и инициирует создание новой копии, если их количество падает ниже заданного порога.
- Доступность данных: Чтение данных может быть перенаправлено на любую из доступных реплик. Если один узел недоступен или перегружен, клиент автоматически читает с другого.
- Локализация данных и производительность: HDFS старается размещать реплики с учетом топологии сети:
- Первая реплика: на том же узле, где запущен клиент (если это DataNode), или на случайном узле в той же стойке.
- Вторая реплика: на другом узле в той же стойке (rack).
- Третья реплика: на узле в другой стойке. Такая стратегия балансирует между быстрым чтением в пределах стойки (меньшая сетевая задержка) и устойчивостью к отказу всей стойки.
- Накладные расходы: Коэффициент репликации 3 увеличивает требования к дисковому пространству в 3 раза. Это классический компромисс между надежностью и стоимостью хранения.
Пример настройки в hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication factor.</description>
</property>
</configuration>
Это значение можно переопределить для конкретного файла при его создании через API или командную строку: hdfs dfs -D dfs.replication=2 -put data.txt /user/input/.