[ 
https://issues.apache.org/jira/browse/HBASE-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell updated HBASE-2387:
----------------------------------

    Description: 
FUSE: http://fuse.sourceforge.net/

Create a FUSE translator that mounts exported tablespaces into the Linux 
filesystem namespace. Should run in either of two modes:

1) Map the exported tablespace under the mount point.
    - If backing with Stargate this is a 1:1 map of resource paths to 
filesystem paths.
    - Via Thrift or Avro connector, should have the same mapping but 
implementation will be more involved. 

2) Emulate a filesystem, like s3fs 
(http://code.google.com/p/s3fs/wiki/FuseOverAmazon)
    - Translate paths under the mount point to row keys for good load 
spreading, {{/a/b/c/file.ext}} becomes {{file.ext/c/b/a}}
    - Consider borrowing from Tom White's Hadoop S3 FS (HADOOP-574), and store 
file data as blocks. 
        -- After fetching the inode can stream all blocks, e.g. via a multiget 
if available. This would support arbitrary file sizes. Otherwise there is a 
practical limit somewhere around 20-50 MB with default regionserver heaps. 
        -- So,  {{file.ext/c/b/a}} gets the inode. Blocks would be keyed using 
the SHA-1 hash of their contents. 
        -- Use multiversioning on the inode to get snapshots for free: A path 
in the filesystem like {{/a/b/c/file.ext;timestamp}} gets file contents on or 
before _timestamp_.
        -- Because new writes produce new blocks with unique hashes, this is 
like a dedup filesystem. Use ICV to maintain use counters on blocks.

If backing with Stargate, support its multiuser mode. 


  was:
FUSE: http://fuse.sourceforge.net/

Create a FUSE translator that mounts exported tablespaces into the Linux 
filesystem namespace. Should run in either of two modes:

1) Map the exported tablespace under the mount point.
    - When using stargate this is a 1:1 map of URL paths to filesystem paths.
    - Via Thrift should have the same mapping but implementation will be more 
involved. 

2) Emulate a filesystem, like s3fs 
(http://code.google.com/p/s3fs/wiki/FuseOverAmazon)
    - Translate paths under the mount point to row keys for good load 
spreading, {{/a/b/c/file.ext}} becomes {{file.ext/c/b/a}}
    - Consider borrowing from Tom White's Hadoop S3 FS (HADOOP-574), and store 
file data as blocks. 
        -- After fetching the inode can stream all blocks, e.g. via a Stargate 
multiget. This would support arbitrary file sizes. Otherwise there is a 
practical limit somewhere around 20-50 MB with default regionserver heaps. 
        -- So,  {{file.ext/c/b/a}} gets the inode. Blocks would be keyed using 
the SHA-1 hash of their contents. 
        -- Use multiversioning on the inode to get snapshots for free: A path 
in the filesystem like {{/a/b/c/file.ext;timestamp}} gets file contents on or 
before _timestamp_.
        -- Because new writes produce new blocks with unique hashes, this is 
like a dedup filesystem. Use ICV to maintain use counters on blocks.
    - Stargate multiget and multiput operations can help performance. I don't 
think Thrift has a comparable multi-op capability. 

Support Stargate multiuser mode. 

        Summary: FUSE module for mounting exported tablespaces  (was: 
[stargate] FUSE module for mounting exported tablespaces)

> FUSE module for mounting exported tablespaces
> ---------------------------------------------
>
>                 Key: HBASE-2387
>                 URL: https://issues.apache.org/jira/browse/HBASE-2387
>             Project: Hadoop HBase
>          Issue Type: New Feature
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>            Priority: Minor
>
> FUSE: http://fuse.sourceforge.net/
> Create a FUSE translator that mounts exported tablespaces into the Linux 
> filesystem namespace. Should run in either of two modes:
> 1) Map the exported tablespace under the mount point.
>     - If backing with Stargate this is a 1:1 map of resource paths to 
> filesystem paths.
>     - Via Thrift or Avro connector, should have the same mapping but 
> implementation will be more involved. 
> 2) Emulate a filesystem, like s3fs 
> (http://code.google.com/p/s3fs/wiki/FuseOverAmazon)
>     - Translate paths under the mount point to row keys for good load 
> spreading, {{/a/b/c/file.ext}} becomes {{file.ext/c/b/a}}
>     - Consider borrowing from Tom White's Hadoop S3 FS (HADOOP-574), and 
> store file data as blocks. 
>         -- After fetching the inode can stream all blocks, e.g. via a 
> multiget if available. This would support arbitrary file sizes. Otherwise 
> there is a practical limit somewhere around 20-50 MB with default 
> regionserver heaps. 
>         -- So,  {{file.ext/c/b/a}} gets the inode. Blocks would be keyed 
> using the SHA-1 hash of their contents. 
>         -- Use multiversioning on the inode to get snapshots for free: A path 
> in the filesystem like {{/a/b/c/file.ext;timestamp}} gets file contents on or 
> before _timestamp_.
>         -- Because new writes produce new blocks with unique hashes, this is 
> like a dedup filesystem. Use ICV to maintain use counters on blocks.
> If backing with Stargate, support its multiuser mode. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to