A tool to mount HDFS as a local Linux file system
Перейти к файлу
clchen 5b2e0d31de support readonly mount
fix unittests
2017-08-07 16:27:47 -07:00
submodules Update submodule to latest master 2017-03-15 10:20:07 -07:00
.gitignore Add code coverage report file for codecov 2017-06-20 21:49:05 -07:00
.gitmodules Update .gitmodules 2016-09-28 14:05:27 -07:00
.travis.yml Allow Travis failure with Go-1.5 in case of some uncompatible APIs 2017-06-20 21:49:05 -07:00
Attrs.go Remove the MaxFileSizeForWrite limitation 2017-04-14 17:57:59 -07:00
Clock.go Implemented expiration of cached metadata/attributes 2015-11-13 16:53:50 -08:00
Clock_test.go Exponential backoff on retry 2015-11-13 16:53:51 -08:00
Dir.go Chown support (#18) 2017-03-28 10:33:24 -07:00
Dir_test.go support readonly mount 2017-08-07 16:27:47 -07:00
FaultTolerantHdfsAccessor.go Remove the MaxFileSizeForWrite limitation 2017-04-14 17:57:59 -07:00
FaultTolerantHdfsAccessor_test.go Experimental write support (merging vlivan/staged-writes branch) 2016-01-29 16:40:39 -08:00
FaultTolerantHdfsReader.go Closing unused connections. (#27) 2017-06-22 17:52:27 -07:00
FaultTolerantHdfsReader_test.go Refactoring: HdfsReader interface -> ReadSeekCloser 2016-01-19 20:23:07 -08:00
FaultTolerantHdfsWriter.go Refactoring: making all retry logic testable and consolidating into FaultTolerant*.go files 2015-11-13 16:53:51 -08:00
File.go Chown support (#18) 2017-03-28 10:33:24 -07:00
FileFragment.go Refactoring: HdfsReader interface -> ReadSeekCloser 2016-01-19 20:23:07 -08:00
FileHandle.go Leveled log information (#15) 2017-03-10 14:31:38 -08:00
FileHandleAsReadSeekCloser.go Added FileHandleAsReadSeekCloser - a ReadSeekCloser adapter to FileHandle 2016-01-19 20:54:55 -08:00
FileHandleReader.go Leveled log information (#15) 2017-03-10 14:31:38 -08:00
FileHandleReader_test.go support readonly mount 2017-08-07 16:27:47 -07:00
FileHandleWriter.go Closing unused connections. (#27) 2017-06-22 17:52:27 -07:00
FileHandleWriter_test.go support readonly mount 2017-08-07 16:27:47 -07:00
FileSystem.go support readonly mount 2017-08-07 16:27:47 -07:00
FileSystem_test.go support readonly mount 2017-08-07 16:27:47 -07:00
HdfsAccessor.go Address comments 2017-07-31 13:13:05 -07:00
HdfsReader.go Refactoring: hdfsReaderImpl -> HdfsReader 2016-01-19 20:24:46 -08:00
HdfsWriter.go Experimental write support (merging vlivan/staged-writes branch) 2016-01-29 16:40:39 -08:00
Int32Min.go Initial implementation for basic R/O scenarios + build and test harness 2015-11-13 16:53:29 -08:00
LICENSE Initial implementation for basic R/O scenarios + build and test harness 2015-11-13 16:53:29 -08:00
Log.go Add License info to files 2017-04-17 10:00:32 -07:00
Makefile Add version and built info 2017-06-21 17:27:51 -07:00
MockReadSeekCloserWithPseudoRandomContent_test.go Follow-ups for CR from alexeyk 2016-01-20 16:08:39 -08:00
README.md Update Ci info in README 2016-10-27 12:29:39 -07:00
RandomAccessReader.go Add License info to files 2017-04-17 10:00:32 -07:00
RandomAccessReader_test.go Using FileHandleReader as a backend data provider for RandomAccessReader instead of HdfsReader. This allows to leverage all optimizations for sequential reads for zip archives 2016-01-20 15:45:20 -08:00
ReadSeekCloser.go Using FileHandleReader as a backend data provider for RandomAccessReader instead of HdfsReader. This allows to leverage all optimizations for sequential reads for zip archives 2016-01-20 15:45:20 -08:00
ReadSeekCloserFactory.go Using FileHandleReader as a backend data provider for RandomAccessReader instead of HdfsReader. This allows to leverage all optimizations for sequential reads for zip archives 2016-01-20 15:45:20 -08:00
ReaderStats.go Refactoring 2016-01-15 23:53:17 -08:00
RetryPolicy.go Leveled log information (#15) 2017-03-10 14:31:38 -08:00
RetryPolicy_test.go Exponential backoff on retry 2015-11-13 16:53:51 -08:00
Version.go Add version and built info 2017-06-21 17:27:51 -07:00
ZipDir.go Leveled log information (#15) 2017-03-10 14:31:38 -08:00
ZipFile.go ZipFile: Add logging if error opening Zipfile 2017-06-20 21:49:05 -07:00
ZipFileHandle.go Added -expandsZip feature: automatic expansion of ZIP archives 2015-11-26 22:58:06 -08:00
Zip_test.go support readonly mount 2017-08-07 16:27:47 -07:00
main.go support readonly mount 2017-08-07 16:27:47 -07:00
test.zip Added -expandsZip feature: automatic expansion of ZIP archives 2015-11-26 22:58:06 -08:00

README.md

hdfs-mount

Build Status

Allows to mount remote HDFS as a local Linux filesystem and allow arbitrary applications / shell scripts to access HDFS as normal files and directories in efficient and secure way.

Features (Planned)

  • High performance
    • directly interfacing Linux kernel for FUSE and HDFS using protocol buffers (requires no JavaVM)
    • designed and optimized for throughput-intensive workloads (throughput is traded for latency whenever possible)
    • full streaming and automatic read-ahead support
    • concurrent operations
    • In-memory metadata caching (very fast ls!)
  • High stability and robust failure-handling behavior
    • automatic retries and failover, all configurable
    • optional lazy mounting, before HDFS becomes available
  • Support for both reads and writes
    • support for random writes [slow, but functionally correct]
    • support for file truncations
  • Optionally expands ZIP archives with extracting content on demand
    • this provides an effective solution to "millions of small files on HDFS" problem
  • CoreOS and Docker-friendly
    • optionally packagable as a statically-linked self-contained executable

Current state

"Alpha", under active development. Basic R/O scenarios, key R/O throughout optimizations and ZIP support are implemented and outperform existing HDFS/FUSE solutions. If you want to use the component - come back in few weeks If you want to help - contact authors

Building

Ensure that you cloned the git repository recursively, since it contains submodules. Run 'make' to build and 'make test' to run unit test. Please use Go version at least 1.6beta2. This version contains bugfix for handling zip64 archives necessary for hdfs-mount to operate normally.

Other Platforms

It should be relatively easy to enable this working on MacOS and FreeBSD, since all underlying dependencies are MacOS and FreeBSD-ready. Very few changes are needed to the code to get it working on those platforms, but it is currently not a priority for authors. Contact authors if you want to help.