System Design Space

    Глава 29

    Обновлено: 16 февраля 2026 г. в 03:00

    Distributed File System (GFS/HDFS)

    Прогресс части0/21

    Классическая задача: master/data nodes, block replication, metadata management, recovery и high throughput I/O.

    Paper

    The Google File System

    Классическая работа Google о проектировании distributed file system для больших данных.

    Открыть публикацию

    Distributed File System - базовый строительный блок для data-платформ. Идея GFS/HDFS: разделять крупные файлы на большие блоки, реплицировать их по кластеру и держать metadata отдельно от data path. Это упрощает горизонтальное масштабирование и делает систему устойчивой к постоянным hardware-сбоям.

    Требования

    Функциональные

    • Хранение очень больших файлов (гигабайты/терабайты) поверх кластера commodity-серверов.
    • Последовательные append/read операции для batch и аналитических workload'ов.
    • Репликация блоков между узлами и автоматическое восстановление после сбоев.
    • Метаданные файловой системы: namespace, mapping файл -> блоки -> реплики.
    • Background процессы: ребалансировка, re-replication, garbage collection orphan-блоков.

    Нефункциональные

    Durability: 11+ nines (практически)

    Потеря отдельных дисков/нод не должна приводить к потере данных.

    Throughput: Высокий aggregate I/O

    Оптимизация под большие sequential read/write, а не под мелкие random IO.

    Scalability: Линейное горизонтальное

    Добавление DataNode должно увеличивать и capacity, и bandwidth.

    Availability: Работа при частичных сбоях

    Система деградирует, но остаётся доступной для majority сценариев.

    High-Level Architecture

    Architecture Map

    DFS high-level structure (GFS/HDFS style)

    Control Plane

    Master
    namespace + block map
    Metadata Journal
    edits + checkpoints
    Replication Manager
    repair replicas
    Cluster Balancer
    hotspot rebalance

    Data Plane

    Client
    append/read API
    DataNode A
    block replicas
    DataNode B
    block replicas
    DataNode C
    block replicas
    Общий контур DFS: metadata plane отдельно от data plane, плюс фоновые control-процессы.
    Metadata and data paths are separated
    Direct client-to-DataNode I/O
    Background repair and balancing

    Ключевой паттерн: metadata plane и data plane разделены. Master управляет размещением и namespace, но сами байты текут напрямую между client и data nodes.

    Read/Write Flow

    Read/Write Path Explorer

    Переключай path и прогоняй шаги, как это сделано в object-storage flow.

    1
    Client
    request block allocation
    2
    Master
    placement + lease
    3
    Primary DataNode
    stream chunk
    4
    Replica Pipeline
    DN2 -> DN3 + ack chain
    5
    Journal Commit
    metadata + version
    Write path: стартуйте Play, чтобы увидеть pipeline записи блока и commit метаданных.

    Write Path: operational notes

    • Клиент запрашивает у master выделение нового блока и список целевых DataNode.
    • Master выбирает узлы по placement policy (rack-aware, free space, load).
    • Клиент стримит chunk в pipeline DataNode1 -> DataNode2 -> DataNode3.
    • ACK возвращается цепочкой назад; блок помечается committed после успешной записи всех реплик.
    • Метаданные о блоке и версии фиксируются в journal/snapshot контуре master.

    Read Path: operational notes

    • Клиент получает у master карту блоков и список доступных реплик.
    • Для каждого блока выбирается ближайшая реплика (rack/locality aware).
    • Чтение идёт напрямую с DataNode, без проксирования payload через master.
    • При checksum mismatch клиент переключается на другую реплику.
    • Master участвует только в metadata plane, что уменьшает bottleneck.

    Failure Handling

    • DataNode timeout: master помечает ноду dead и планирует re-replication её блоков.
    • Corrupted block: детектируется по checksum; запускается repair из здоровой реплики.
    • Master crash: восстановление из journal + checkpoint, затем replay edits.
    • Network partition: quorum/HA-механика для active/standby master (в современных реализациях).
    • Hot file/block: read replicas и cache tiers уменьшают hotspots на популярных данных.

    GFS vs HDFS (коротко)

    АспектGFSHDFS
    Основной use-caseBig data processing внутри Google экосистемыHadoop analytics экосистема в enterprise
    Block sizeБольшие chunks (классически 64MB)Большие blocks (обычно 128MB+)
    Consistency modelRelaxed, append-heavy semanticsWrite-once-read-many (классически)
    Master HAВнутренние HA-стратегии GoogleNameNode HA (active/standby + journal quorum)

    Что обсудить на интервью

    • Почему large block size уменьшает metadata overhead и повышает throughput.
    • Как placement policy балансирует locality, fault domains и network cost.
    • Почему single-master исторически проще, и как эволюционировать к HA.
    • Как проверять целостность: checksums, scrubbing, background repair.
    • Где граница DFS vs Object Storage и как они сочетаются в data platform.

    Связанные главы

    Reference

    HDFS Architecture Guide

    Официальное описание дизайна HDFS: NameNode, DataNode, replication и отказоустойчивость.

    Открыть документацию