I'm the author of LZ4.
Since it is mentionned in this issue, i feel compelled to provide some more information.
There are in fact two container modes created for LZ4, but i only cared publishing the first one (stream mode), since there was very little interest expressed in the second one (seekable mode).
The seekable mode has these properties :
- Selectable block size (as a power of 2, from 512 bytes to 16 MB; extension reserved up to 1GB)
- Handle uncompressed blocks
- Blocks can be forced to start at aligned positions (2 bytes, 4 bytes, 8 bytes, etc.)
- Compressed file starts with an array which provides the start position of each block
- Array value can be stored as direct position or block size (the second solution can reduce the size of array)
- Automatic sizing of array values (16, 32 or 64 bits).
- File size limited to 256 TB
Since the array must be written at the beginning of the compressed file, it is not compatible with "pipe mode".
The only use-case for seekable mode so far has been compressed ISO. So i've not spent much time on it.
I'm a bit surprised it would be usefull for Hadoop since i expect Handle to handle its own container format, and a probably much adapted one.
Anyway, since r35 is out, i would advise to use something like 64KB blocks. This way, each block is independant, and can be fetched/stored/duplicated/decoded independantly, in its own thread, CPU, machine or cluster.
Hope this helps