Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Lucene-hadoop Wiki" for 
change notification.

The following page has been changed by JimKellerman:
http://wiki.apache.org/lucene-hadoop/Hbase/HbaseArchitecture

------------------------------------------------------------------------------
    * [#ipcclientmaster Client to Master Messages]
    * [#ipcclienttablet Client to Tablet Server Messages]
    * [#ipcmastertablet Master to Tablet Server Messages]
+   * [#ipctabletmaster Tablet Server to Master Messages]
   * [#clientlib Client Library]
    * [#api API]
   * [#other Other]
@@ -300, +301 @@

     * When a tablet is "brand new", all reads can be satisfied from the 
memtable.
     * When the memtable gets too large ''(how large?)'', the memtable is 
written to a new SSTable. This is a ''minor'' compaction. 
  
-   ''Since this is not a tablet split, this implies that information about the 
new SSTable is not written to the METADATA table. Is this correct? Maybe not 
because a minor compaction does write a new redo point into the METADATA table 
and the redo point could contain a pointer to the new SSTable.''
+   ''Minor and merging compactions write a new redo point into the METADATA 
table. The redo point contains information about the new SSTables.''
  
   * Reads
    * Checks that the request is well-formed
@@ -331, +332 @@

    * Block Cache: caches blocks read from the SSTables
   * Bloom Filter
    * Optional in-memory structure that reduces disk access by
-  * API
- {{{
-    LoadTablet()
- }}}
  
  [[Anchor(sstable)]]
  = SSTable =
@@ -378, +375 @@

    * Root tablet stores the location of all tablets in a METADATA table
    * The "root tablet" is just the first tablet in the METADATA table, it is 
never split
  
-   ''I really don't like this definition (and I know it is from the Bigtable 
paper). Aside from the fact that it is never split, the root tablet is special 
in another way: it is the metadata table for the METADATA table.'' ''It 
'''does''' however have the same format as the rest of the METADATA table.''
+    ''I really don't like this definition (and I know it is from the Bigtable 
paper). Aside from the fact that it is never split, the root tablet is special 
in another way: it is the metadata table for the METADATA table.'' ''It 
'''does''' however have the same format as the rest of the METADATA table.''
  
   * The row key is a combination of the table name, column or map name and the 
__'''first row key'''__ of the tablet.
  
@@ -388, +385 @@

     1. ''If the first key in a tablet is stored instead, the minimum value 
could be represented as the empty string "" and a simple string comparison 
between a key and the first key would result in key > first key.'' If you 
represented the maximum row key as the empty string, that would require a 
special case instead of just a simple compare.''
  
     1. ''If the keys go from 1 to n, when the tablet is split, the first 
tablet still has the row key "" as its first key and the second tablet has a 
first row key of n/2. So if a key is presented and its value is < n/2, you know 
that if it exists, it is in the first tablet and if the value >= n/2 it is in 
the second tablet.''
+ 
+   ''If it turns out that there is a good reason that the last row key should 
be stored instead of the first row key, then this can be changed in the 
future.''
  
   * The "location" map has the ''InMemory'' tuning parameter set
   * Each row stores approximately 1KB of data in memory
@@ -456, +455 @@

  [[Anchor(ipcclienttablet)]]
  == Client to TabletServer Messages ==
  
+  * read (row-key, column-name, [column-key (for maps)], [timestamp]) returns 
value
+   * for maps, if no column-key is specified, returns the entire map for the 
specified row key
+   * ''Question: Is there a need to split up large return values into multiple 
messages?''
+   * The table name is implied since this message is sent directly to the 
tablet server for the specified row-key
+ 
+  * scan (starting-row-key, column-name, [starting-timestamp]) returns a 
tablet block size of data for the specified column and starting point.
+ 
+  * write (row-key, column-name, [column-key (for maps)], timestamp, value)
+ 
+  * batchUpdate (row-key, List<parameters>, timestamp)
+   * batchUpdates can only be used when updating multiple values in a map for 
a specific row key or if the tablets for all the specified columns are all 
served by the same tablet server.
+   * the parameter list consists of column name - value pairs (for columns) or 
column-name - column-key - value triples (for maps)
+ 
+  * incrementCounter (row-key, column-name, timestamp, increment)
+ 
  [[Anchor(ipcmastertablet)]]
  == Master to Tablet Server Messages ==
+ 
+  * ''Note: the master uses the client API to read METADATA tablets, so no 
special messages are required for this activity.''
+ 
+  * "Are you ok?"
+   * response (indicates tablet server alive)
+    * if the tablet server is serving any tablets, the response will also 
include a list of tablets being served.
+ 
+  * start serving tablets (list-of-tablets-to-serve)
+   * response indicates tablets being served and any that it failed to start 
serving
+ 
+  * major compaction (tablet)
+   * response indicates compaction complete
+ 
+  * stop serving tablets (list-of-tablets-to-stop-serving)
+   * response indicates that tablets are no longer being served
+ 
+  * shut down
+   * response indicates that shutdown was successful
+ 
+ [[Anchor(ipctabletmaster)]]
+ == Tablet Server to Master Messages ==
+ 
+  * tablet split (old-tablet, new-tablet-1, new-tablet-2)
  
  [[Anchor(clientlib)]]
  = Client Library =

Reply via email to