Proposal is to add an implementation for a Simulated Data Node.
- allow one to test certain parts of the system (especially the Name Node, protocols) much more easily and efficiently.
- allow one to run performance benchmarks on the Name node without having a large cluster.
- Inject faults for testing (e.g. one can add random faults based probability parameters).
The idea is that the Simulated Data Node will
- discard any data written to blocks (but remember the blocks and their sizes)
- generate fixed data on the fly when blocks are read (e.g. block is fixed set of bytes or repeated sequence of strings).
The Simulated Data Node can also be used for fault injection.
The data node can be parameterized with probabilities that allow one to control:
- Delays on reads and writes, creates, etc
- IO Exceptions
- Loss of blocks