[ 
https://issues.apache.org/jira/browse/HBASE-13260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14517632#comment-14517632
 ] 

Enis Soztutar commented on HBASE-13260:
---------------------------------------

Thanks [~mbertozzi] for pursuing this. Pushed the code that I am running at 
https://github.com/enis/hbase/tree/hbase-13260-review. Committed your test as 
TestProcedureStorePerf. 

{code}
mvn test -Dtest=TestProcedureStorePerf
{code}
Results from my MBP. Maybe it is because of the relatively fast SSD in my 
laptop? Let me try a linux box without SSDs. 
{code}
  TestProcedureStorePerf.runTestWith10ThreadsAndProcV2Wal:225->runTest:207 
Wrote 1000000 procedures with 10 threads with useProcV2Wal=true hsync=false in 
36.8390sec (36.839sec)
  TestProcedureStorePerf.runTestWith10ThreadsAndRegionStore:250->runTest:207 
Wrote 1000000 procedures with 10 threads with useProcV2Wal=false hsync=false in 
17.1810sec (17.181sec)
  TestProcedureStorePerf.runTestWith30ThreadsAndProcV2Wal:230->runTest:207 
Wrote 1000000 procedures with 30 threads with useProcV2Wal=true hsync=false in 
22.3340sec (22.334sec)
  TestProcedureStorePerf.runTestWith30ThreadsAndRegionStore:255->runTest:207 
Wrote 1000000 procedures with 30 threads with useProcV2Wal=false hsync=false in 
25.1180sec (25.118sec)
  TestProcedureStorePerf.runTestWith4ThreadsAndProcV2Wal:220->runTest:207 Wrote 
1000000 procedures with 5 threads with useProcV2Wal=true hsync=false in 
53.6920sec (53.692sec)
  TestProcedureStorePerf.runTestWith50ThreadsAndProcV2Wal:235->runTest:207 
Wrote 1000000 procedures with 50 threads with useProcV2Wal=true hsync=false in 
20.8590sec (20.859sec)
  TestProcedureStorePerf.runTestWith50ThreadsAndRegionStore:260->runTest:207 
Wrote 1000000 procedures with 50 threads with useProcV2Wal=false hsync=false in 
19.1450sec (19.145sec)
  TestProcedureStorePerf.runTestWith5ThreadsAndRegionStore:245->runTest:207 
Wrote 1000000 procedures with 5 threads with useProcV2Wal=false hsync=false in 
15.8760sec (15.876sec)
{code}

> Bootstrap Tables for fun and profit 
> ------------------------------------
>
>                 Key: HBASE-13260
>                 URL: https://issues.apache.org/jira/browse/HBASE-13260
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Enis Soztutar
>            Assignee: Enis Soztutar
>             Fix For: 2.0.0, 1.1.0
>
>         Attachments: hbase-13260_bench.patch, hbase-13260_prototype.patch
>
>
> Over at the ProcV2 discussions(HBASE-12439) and elsewhere I was mentioning an 
> idea where we may want to use regular old regions to store/persist some data 
> needed for HBase master to operate. 
> We regularly use system tables for storing system data. acl, meta, namespace, 
> quota are some examples. We also store the table state in meta now. Some data 
> is persisted in zk only (replication peers and replication state, etc). We 
> are moving away from zk as a permanent storage. As any self-respecting 
> database does, we should store almost all of our data in HBase itself. 
> However, we have an "availability" dependency between different kinds of 
> data. For example all system tables need meta to be assigned first. All 
> master operations need ns table to be assigned, etc. 
> For at least two types of data, (1) procedure v2 states, (2) RS groups in 
> HBASE-6721 we cannot depend on meta being assigned since "assignment" itself 
> will depend on accessing this data. The solution in (1) is to implement a 
> custom WAL format, and custom recover lease and WAL recovery. The solution in 
> (2) is to have the table to store this data, but also cache it in zk for 
> bootrapping initial assignments. 
> For solving both of the above (and possible future use cases if any), I 
> propose we add a "boostrap table" concept, which is: 
>  - A set of predefined tables hosted in a separate dir in HDFS. 
>  - A table is only 1 region, not splittable 
>  - Not assigned through regular assignment 
>  - Hosted only on 1 server (typically master)
>  - Has a dedicated WAL. 
>  - A service does WAL recovery + fencing for these tables. 
> This has the benefit of using a region to keep the data, but frees us to 
> re-implement caching and we can use the same WAL / Memstore / Recovery 
> mechanisms that are battle-tested. 
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to