Summary: | The Hadoop Distributed Filesystem (HDFS) is the storage layer of Hadoop, scaling to support tens of petabytes of data at companies such as Facebook and Yahoo. One wellknown limitation of HDFS is that its metadata has been stored inmemory on a single node, called the NameNode. To overcome NameNode’s limitations, a distributed file system concept based on HDFS, called KTHFS, was proposed in which NameNode’s metadata are stored on an inmemory replicated distributed database, MySQL Cluster. In this thesis, we show how to store the metadata of HDFS NameNode in an external distributed database while maintaining strong consistency semantics of HDFS for both filesystem operations and primitive HDFS operations. Our implementation supports MySQL Cluster, to store the metadata, although it only supports a readcommitted transaction isolation model. As a readcommitted isolation model cannot guarantee strong consistency, we needed to carefully design how metadata is read and written in MySQL Cluster to ensure our system preserves HDFS’s consistency model and is both deadlock free and highly performant. We developed a transaction model based on taking metadata snapshotting and the careful ordering of database operations. Our model is general enough to support any database providing at least readcommitted isolation level. We evaluate our model and show how HDFS can scale, while maintaining strong consistency, to terabytes of metadata.
|