Quantcast File System
C++ C Shell Makefile Python HTML Other
Latest commit 7c08166 Jul 30, 2017 @mikeov mikeov Test scripts: create endurance test directory structure under current…
… directory if /mnt/data[0123] directories don't exist.
Failed to load latest commit information.
benchmarks/mstress Merge branch 'master' into topic/multimaster Jan 13, 2017
cmake/Modules Cmake and Kerberos library: make kerberos features detection backward… Mar 4, 2017
conf Meta server: normalize fsck parameter names. Keep old parameter names… Jul 31, 2017
contrib/plugins Monitor plugin: fix log path prepare: remove incorrect use of operato… Feb 9, 2017
examples Merge branch 'master' into topic/multimaster Jan 13, 2017
ext Gf-complete: eliminate older GCC warnings by adding cast to char 8. Feb 13, 2017
scripts Scripts: report expected and actual sha1 if tar download fails. Feb 12, 2017
src Test scripts: create endurance test directory structure under current… Jul 31, 2017
travis Travis CI: update centos 5 epel url (moved to archive after centos 5 … Apr 12, 2017
webui Meta server web UI: fix configuration file parsing by using type appr… Jul 31, 2017
wiki Wiki: fix admin guide formatting. May 22, 2017
.appveyor.yml Appveyor: turn off test for now. May 2, 2017
.gitignore Cleanup gitignore, leave only build and mac os specific directories. Jan 14, 2017
.ratignore Travis: create code coverage script in .tmp directory to get around r… Jan 17, 2017
.travis.yml Travis CI: fix deploy condition: do not deploy debug version, and ver… May 2, 2017
CHANGELOG.md Update change log: use release notes wiki page for now. May 22, 2017
CMakeLists.txt Cmake and Kerberos library: make kerberos features detection backward… Mar 4, 2017
LICENSE.txt QFS files - initial commite Aug 31, 2012
Makefile Make file: allow to override cmake binary / command name. Feb 12, 2017
README.md Wiki: fix formatting. Apr 10, 2017


QFS version 2.0.

The code in the master branch is currently being tested in Quantcast production cluster.

Meta server replication is the major new feature in this release. Meta server replication provides automatic meta server fail over. With meta server replication configured QFS does not have single point of failure.

Release notes for this release are available here.

Quantcast File System

Quantcast File System (QFS) is a high-performance, fault-tolerant, distributed file system developed to support MapReduce processing, or other applications reading and writing large files sequentially.

QFS servers have been tested on 64-bit CentOS 6 extensively and run on Linux variants. The QFS client tools work on OS X and Cygwin as well.

Platform Build Status
Mac OS X Build Status
Ubuntu 14.04 Build Status
CentOS 6 Build Status
CentOS 7 Build Status

The implementation details and features of QFS are discussed in detail in the project wiki.

Getting QFS

QFS is available through various channels.

  • BigTop: QFS packages for rpm and debian based systems are available through the BigTop project.
  • Binary Distributions: There are various binary distributions packaged as tarballs available on the Binary Distributions Page.
  • Compile from source: QFS can be compiled on Linux variants, Mac OS X, and Cygwin. See the wiki for more information on how to build QFS yourself.

Trying QFS

Once you have aquired QFS through one of the methods above, you can take QFS for a quick test drive. Setting up a single node configuration to familiarize yourself with QFS is very easy.

  1. Extract the distribution tarball.

     $ tar -xzf qfs.tgz && cd qfs
  2. Set up a single node QFS instance. This will create a workspace in ~/qfsbase, start two chunk servers and one metaserver.

     $ ./examples/sampleservers/sample_setup.py -a install
     Binaries presence checking - OK.
     Setup directories - OK.
     Setup config files - OK.
     Started servers - OK.
  3. Add tools binary path toPATH

     $ PATH=${PWD}/bin/tools:${PATH}
  4. Make a temporary directory on the file system

     $ qfsshell -s localhost -p 20000 -q -- mkdir /qfs/tmp
  5. Create a file containing "Hello World", Reed-Solomon encoded, with replication 1.

     $ echo 'Hello World' | cptoqfs -s localhost -p 20000 -S -k /qfs/tmp/helloworld -d -
  6. Cat the file content.

     $ qfscat -s localhost -p 20000 /qfs/tmp/helloworld
  7. Stat the file to see encoding (RS or not), replication level, and mtime.

     $ qfsshell -s localhost -p 20000 -q -- stat /qfs/tmp/helloworld
  8. Copy the file locally to the current directory.

     $ cpfromqfs -s localhost -p 20000 -k /qfs/tmp/helloworld -d ./helloworld
  9. Remove the file from QFS.

     $ qfsshell -s localhost -p 20000 -q -- rm /qfs/tmp/helloworld
  10. Stop the servers.

     $ ./examples/sampleservers/sample_setup.py -a stop
  11. Uninstall the single node instance.

     $ ./examples/sampleservers/sample_setup.py -a uninstall

Benchmarking QFS

A performance comparison between QFS and HDFS 1.0.2 shows QFS is faster both at reading and writing 20 TB of uncompressed data on our test system, a heterogeneous cluster with 6,500 disk drives. See more information regarding this in our wiki.

Contributing to QFS

We welcome contributions to QFS in the form of enhancement requests, patches, additional tests, bug reports, new ideas, and so on. Please submit issues using our JIRA instance and refer to the QFS code contribution policy when contributing code.

Have Questions?

Join the QFS Developer mailing list or search the archives at the Google Group.

Post comments or questions to qfs-devel@googlegroups.com.


QFS is released under the Apache 2.0 license.