A tale of two erasure codes in HDFS
Mingyuan Xia, Mohit Chandra Saxena, Mario Blaum, David Pease · 2015
Distributed storage systems are increasingly transition-ing to the use of erasure codes since they offer higher reliability at significantly lower storage costs than data replication. However, these codes tradeoff recovery per-formance as they require multiple disk reads and network transfers for reconstructing an unavailable data block. As a result, most existing systems use an erasure code either optimized for storage overhead or recovery performance. In this paper, we present HACFS, a new erasure-coded storage system that instead uses two different erasure codes and dynamically adapts to workload changes. It uses a fast code to optimize for recovery performance and a compact code to reduce the storage overhead. A novel conversion mechanism is used to efficiently up-code and downcode data blocks between fast and com-pact codes. We show that HACFS design techniques are generic and successfully apply it to two different code families: Product and LRC codes. We have implemented HACFS as an extension to the Hadoop Distributed File System (HDFS) and experimen-tally evaluate it with five different workloads from pro-duction clusters. The HACFS system always maintains a low storage overhead and significantly improves the re-covery performance as compared to three popular single-code storage systems. It reduces the degraded read la-tency by up to 46%, and the reconstruction time and disk/network traffic by up to 45%. 1