A web crawler needs to manage URLs to visit (URL Frontier), download pages (Fetcher), extract links and content (Parser), filter URLs to avoid duplicates or unwanted sites (URL Filter), and store the data (Storage).
Partitioning URLs by domain and distributing queues allows parallel processing and avoids a single bottleneck, making the system scalable.
Respecting politeness means adding delays between requests to the same site, which reduces crawling speed but avoids overloading servers or getting banned.
Using hash functions like MD5 or SHA on page content allows quick comparison to detect duplicates without storing full content multiple times.
1 billion pages × 500 KB = 10^9 × 500 × 10^3 bytes = 5 × 10^14 bytes. 5 × 10^14 / 10^12 = 500 TB.
