MetaDataNode/DataNode handle uploads MetaDataNode/DataNode handle downloads DataNode dynamically registers with MetaDataNode DataNode tells MetaDataNode its blocks on startup MetaDataNode persists file->blocklist map DataNode pipelines uploads to other DataNodes MetaDataNode can restart and DataNode will re-register (heartbeats) Tell DataNodes to re-register if MetaDataNode doesn't recognize them