Size Matters: Improving the Performance of Small Files in Hadoop In: (Pp
Total Page:16
File Type:pdf, Size:1020Kb
http://www.diva-portal.org Preprint This is the submitted version of a paper presented at Middleware’18. ACM, Rennes, France. Citation for the original published paper: Niazi, S. (2018) Size Matters: Improving the Performance of Small Files in Hadoop In: (pp. 14-). N.B. When citing this work, cite the original published paper. Permanent link to this version: http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-238597 Size Matters: Improving the Performance of Small Files in Hadoop y∗ z y∗ y∗ Salman Niazi Mikael Ronström Seif Haridi Jim Dowling y z ∗ KTH - Royal Institute of Technology Oracle AB Logical Clocks AB {smkniazi,haridi,jdowling}@kth.se [email protected] Experimentation and Deployment Paper Abstract reading/writing small files would save a round-trip to the block The Hadoop Distributed File System (HDFS) is designed to handle servers, as metadata server(s) would now fully manage the small massive amounts of data, preferably stored in very large files. The files. Such an architecture should also be able to scale out byadding poor performance of HDFS in managing small files has long been a new metadata servers and storage devices. bane of the Hadoop community. In many production deployments A distributed, hierarchical file system that could benefit from of HDFS, almost 25% of the files are less than 16 KB in size andas such an approach is the Hadoop Distributed File System (HDFS) [6]. much as 42% of all the file system operations are performed on these HDFS is a popular file system for storing large volumes of dataon small files. We have designed an adaptive tiered storage using in- commodity hardware. In HDFS, the file system metadata is managed memory and on-disk tables stored in a high-performance distributed by a metadata server, which stores the entire metadata in-memory database to efficiently store and improve the performance ofthe on the heap of a single JVM process called the namenode. The file small files in HDFS. Our solution is completely transparent, andit data is replicated and stored as file blocks (default size 128 MB)on does not require any changes in the HDFS clients or the applications block servers called the datanodes. Such an architecture is more using the Hadoop platform. In experiments, we observed up to suitable for providing highly parallel read/write streaming access 61 times higher throughput in writing files, and for real-world to large files where the cost of the metadata operations, such asfile workloads from Spotify our solution reduces the latency of reading open and close operations, is amortized over long periods of data and writing small files by a factor of 3.15 and 7.39 respectively. streaming to/from the datanodes. Best practices for Hadoop dictate storing data in large files in ACM Reference Format: y∗ z y∗ y∗ HDFS [7]. Despite this, a significant portion of the files in many Salman Niazi Mikael Ronström Seif Haridi Jim Dowling . 2018. Size Matters: Improving the Performance of Small Files in Hadoop. In Proceedings production deployments of HDFS are small. For example, at Yahoo! of Middleware’18. ACM, Rennes, France, Article 3, 14 pages. https://doi:org/ and Spotify, who maintain some of the world’s biggest Hadoop https://doi:org/10:1145/3274808:3274811 clusters, 20% of the files stored in HDFS are less than 4 KB, and a significant amount of file system operations are performed onthese 1 Introduction small files. In Logical Clocks’ administered Hadoop cluster majority Distributed hierarchical file systems typically separate metadata of the files are small, that is, 68% of the files are less than 4 KB (see from data management services to provide a clear separation of Figure 1a. and section 2). Small files in HDFS affect the scalability concerns, enabling the two different services to be independently and performance of the file system by overloading the namenode. managed and scaled [1–5]. While this architecture has given us In HDFS the scalability and performance of the file system is limited multi-petabyte file systems, it also imposes high latency onfile by the namenode architecture, which limits the capacity of the file ≈ read/write operations that must first contact the metadata server(s) system to 500 million files [8]. Storing the data in small files not to process the request and then the block server(s) to read/write only reduces the overall capacity of the file system but also causes a file’s contents. With the advent of lower cost main memory performance problems higher up the Hadoop stack in data parallel and high-performance Non-Volatile Memory Express solid-state processing frameworks [9]. The latency for reading/writing small drives (NVMe SSDs) a more desirable architecture would be a files is relatively very high as the clients have to communicate with tiered storage architecture where small files are stored at meta- namenode and datanodes in order to read a very small amount of data servers either in-memory or on NVMe SSDs, while larger files data, described in detail in section 3.2. are kept at block servers. Such an architecture would mean that The problem with adding a tiered storage layer, that stores small files in the metadata service layer (namenode) of HDFS is thatit Permission to make digital or hard copies of part or all of this work for personal or would overload the already overloaded namenode. However, a new classroom use is granted without fee provided that copies are not made or distributed 1 for profit or commercial advantage and that copies bear this notice and the full citation open-source distribution of HDFS, HopsFS [8, 10], has been intro- on the first page. Copyrights for third-party components of this work must be honored. duced as a drop-in replacement for HDFS that stores file system For all other uses, contact the owner/author(s). metadata in a highly available, in-memory, distributed relational Middleware’18, December 2018, Rennes, France © 2018 Copyright held by the owner/author(s). ACM ISBN 978-1-4503-5702-9/18/12. https://doi:org/https://doi:org/10:1145/3274808:3274811 1HopsFS Source Code: https://github.com/hopshadoop/hops Middleware’18, December 2018, Rennes, France S. Niazi et al. 1 1 Yahoo HDFS File Distribution Spotify HDFS File Ops Distribution Spotify HDFS File Distribution LC HopsFS File Ops Distribution 0.8 LC HopsFS File Distribution 0.8 0.6 0.6 CDF CDF 0.4 0.4 0.2 0.2 0 1 KB 4 KB 5 KB 6 KB 8 KB 16 KB 32 KB 64 KB 100 KB 512 KB 1 MB 8 MB 64 MB 256 MB 1 GB 128 GB 0 1 KB 4 KB 5 KB 6 KB 8 KB 16 KB 32 KB 64 KB 100 KB 512 KB 1 MB 8 MB 64 MB 256 MB 1 GB 128 GB File Size File Size a. File Size Distribution b. File Operations Distribution 1 1 Read File Read File Create File Create File 0.8 Stat File 0.8 Stat File List File List File 0.6 0.6 CDF 0.4 CDF 0.4 0.2 0.2 0 0 1 KB 4 KB 5 KB 6 KB 8 KB 16 KB 32 KB 64 KB 100 KB 512 KB 1 MB 8 MB 64 MB 256 MB 1 GB 128 GB 1 KB 4 KB 5 KB 6 KB 8 KB 16 KB 32 KB 64 KB 100 KB 512 KB 1 MB 8 MB 64 MB 256 MB 1 GB 128 GB File Size File Size c. Breakdown of File System Operations at Spotify d. Breakdown of File System Operations at Logical Clocks Figure 1: These figures show the distribution of the files and operations according to different file sizes in Yahoo!,Spotify, and Logical Clocks’ Hadoop clusters. Figure a. shows the cumulative distribution of files according to different file sizes. At Yahoo! and Spotify ≈20% of the files are less than 4 KB. For Logical Clocks’ Hadoop cluster ≈68% of the files are less than 4 KB. Figure b. shows the cumulative distribution of file system operations performed on files. In both clusters, ≈80% of all the file system operations are performed on files. At Spotify, and Logical Clocks ≈42% and ≈18% of all the file system operations are performed on files less than 16 KB files, respectively. Figure c. and Figure d. show the breakdown of different filesystem operations performed on files. At Spotify ≈64% of file read operations are performed on files less than 16 KB. Similarly, at Logical Clocks, ≈50% of file stat operations are performed on files less than 16KB. database. HopsFS supports multiple stateless namenodes with con- the need for enough main memory in database servers to store all current access to file system metadata. As HopsFS significantly the blocks of the small files. The architecture is also future-proof, increases both the throughput and capacity of the metadata layer as higher-performance non-volatile memory (NVM), such as Intel’s in HDFS, it is a candidate platform for introducing tiered storage 3D XPoint (OptaneTM), instead of NVMe disks, could be used to for small files. store small files’ data. The metadata layer can also easily be scaled In this paper, we introduce HopsFS++, the latest version of out online by adding new namenodes, database nodes, and storage HopsFS, which uses a new technique for optimizing the file system disks to improve throughput and capacity of the small file storage operations on small files by using inode stuffing while maintaining layer. full compatibility with the HDFS clients.