The Hadoop Distributed File System (HDFS) stores files from gigabytes to petabytes reliably across commodity machines expected to fail regularly. HDFS achieves this by splitting each file into 128MB blocks, distributing those blocks across DataNodes, and replicating each block three times across different nodes and racks. The architecture is optimised for write-once, read-many sequential access, where large files are scanned rather than randomly accessed — the dominant access pattern for batch analytics workloads.
Data locality is HDFS's key performance principle: move computation to the data rather than the data to the computation. When a MapReduce job needs a block, the framework schedules the mapper on a node that already holds it locally, eliminating network transfer entirely. In a cluster where network bandwidth is a shared resource, processing 128MB at local disk speed is orders of magnitude more efficient than transferring the block across the network first. This is why HDFS and MapReduce were designed as a co-located system rather than independent services.