Tasks can use the local disk on machines as a scratch pad, but we have several cluster
storage options for permanent storage (and even scratch space will eventually move
to the cluster storage model). These are comparable to Lustre and the Hadoop Dis‐
tributed File System (HDFS), which are both open source cluster filesystems.
The storage layer is responsible for offering users easy and reliable access to the stor‐
age available for a cluster. As shown in Figure 2-3, storage has many layers:
1. The lowest layer is called D(for disk, although D uses both spinning disks and
flash storage). D is a fileserver running on almost all machines in a cluster. How‐
ever, users who want to access their data don’t want to have to remember which
machine is storing their data, which is where the next layer comes into play.
2. A layer on top of D called Colossuscreates a cluster-wide filesystem that offers
usual filesystem semantics, as well as replication and encryption. Colossus is the
successor to GFS, the Google File System [Ghe03].
3. There are several database-like services built on top of Colossus:
- Bigtable [Cha06]is a NoSQL database system that can handle databases that
are petabytes in size. A Bigtable is a sparse, distributed, persistent multidi‐
mensional sorted map that is indexed by row key, column key, and timestamp;
each value in the map is an uninterpreted array of bytes. Bigtable supports
eventually consistent, cross-datacenter replication.
- Spanner [Cor12]offers an SQL-like interface for users that require real con‐
sistency across the world.
- Several other database systems, such as Blobstore, are available. Each of these
options comes with its own set of trade-offs (see Chapter 26).