All Projects → sanketplus → PyDFS

sanketplus / PyDFS

Licence: MIT license
Tiny distributed file system like HDFS (and of-course GFS)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to PyDFS

chicon-rs
A file abstraction system for Rust
Stars: ✭ 55 (-19.12%)
Mutual labels:  filesystem
AsyncSocket
Asynchronous socket (client+server) continues communications
Stars: ✭ 26 (-61.76%)
Mutual labels:  client-server
wsapix
Next generation Websocket framework for nodejs
Stars: ✭ 17 (-75%)
Mutual labels:  rpc
imgui
Dear ImGui Addons Branch = plain unmodified dear imgui plus some extra addon.
Stars: ✭ 348 (+411.76%)
Mutual labels:  filesystem
linux-apfs-rw
APFS module for linux, with experimental write support
Stars: ✭ 190 (+179.41%)
Mutual labels:  filesystem
tarfs
An implementation of the FileSystem interface for tar files.
Stars: ✭ 50 (-26.47%)
Mutual labels:  filesystem
go-fsimpl
Go io/fs.FS filesystem implementations for various URL schemes
Stars: ✭ 225 (+230.88%)
Mutual labels:  filesystem
loggedfs-python
Filesystem monitoring with Fuse and Python
Stars: ✭ 21 (-69.12%)
Mutual labels:  filesystem
rpc ts
Remote Procedure Calls in TypeScript made simple 🤞
Stars: ✭ 71 (+4.41%)
Mutual labels:  rpc
AsyncIO
.NET library for handling asynchronous file system operations
Stars: ✭ 20 (-70.59%)
Mutual labels:  filesystem
cannon
Lightning fast data serialization and RPC for Crystal
Stars: ✭ 56 (-17.65%)
Mutual labels:  rpc
itree
Interactive tree command for file system navigation
Stars: ✭ 18 (-73.53%)
Mutual labels:  filesystem
node-clouddrive
Node SDK and CLI for Amazon's Cloud Drive
Stars: ✭ 74 (+8.82%)
Mutual labels:  filesystem
react-express-jwt
Example NodeJS, Express, Mongoose, React app with JWT auth for beginners WITHOUT redux.
Stars: ✭ 51 (-25%)
Mutual labels:  client-server
SwiftFSWatcher
A simple easy to use / extend File System watcher using Swift
Stars: ✭ 35 (-48.53%)
Mutual labels:  filesystem
core
An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...
Stars: ✭ 100 (+47.06%)
Mutual labels:  filesystem
server
Implement the JSON-RPC 2.0 server specification for @laravel.
Stars: ✭ 154 (+126.47%)
Mutual labels:  rpc
webfuse
websocket filesystem based on libfuse
Stars: ✭ 23 (-66.18%)
Mutual labels:  filesystem
PS-HDD-Tools
PS3 and PS4 HDD tools
Stars: ✭ 28 (-58.82%)
Mutual labels:  filesystem
minicon
Minimization of the filesystem for containers
Stars: ✭ 70 (+2.94%)
Mutual labels:  filesystem

The (simplified) code presented at SRECon is located under srecon branch.


PyDFS

Simple (~200 lines) distributed file system like HDFS (and of-course GFS). It consists of one Master (NameNode) and multiple Minions (DataNode). And a client for interation. It will dump metadata/namespace when given SIGINT and reload it when fired up next time. Replicate data the way HDFS does. It will send data to one minion and that minion will send it to next one and so on. Reading done in similar manner. Will contact first minion for block, if fails then second and so on. Uses RPyC for RPC.

Blog: Simple Distributed File System in Python : PyDFS

Requirements:

  • rpyc (Really! That's it.)

How to run.

  1. Edit dfs.conf for setting block size, replication factor and list minions (minionid:host:port)
  2. Fire up master and minions.
  3. To store and retrieve a file:
$ python client.py put sourcefile.txt sometxt
$ python client.py get sometxt
Stop it using Ctll + C so that it will dump the namespace.

TODO:

  1. Implement Delete
  2. Use better algo for minion selection to put a block (currently random)
  3. Dump namespace periodically (maybe)
  4. Minion heartbeats / Block reports
  5. Add entry in namespace only after write succeeds.
  6. Use proper datastructure(tree-like eg. treedict) to store namespace(currently simple dict)
  7. Logging
  8. Expand this TODO
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].