Changeset 4623


Ignore:
Timestamp:
2011-02-03 13:55:57 (2 years ago)
Author:
bruno
Message:

Make it possible to configure the initial setting for maxFileSize and memStoreFlushSize per created HBase table (via tables.xml).
Upgrade to newer Kauri snapshot to make use of improved Conf API (allow null as default value).

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/cr/process/server/conf/general/tables.xml

    r4612 r4623  
    2323      <regionCount>20</regionCount> 
    2424      <splitKeys></splitKeys> 
     25 
     26      <!-- Maximum file size in bytes --> 
     27      <!-- 
     28      <maxFileSize>67108864</maxFileSize> 
     29      --> 
     30 
     31      <!-- Memstore flush size in bytes --> 
     32      <!-- 
     33      <memStoreFlushSize>33554432</memStoreFlushSize> 
     34      --> 
    2535    </splits> 
    2636  </table> 
  • trunk/cr/process/server/general-module/src/main/java/org/lilyproject/server/modules/general/TableConfigBuilder.java

    r4611 r4623  
    2121            byte[] splitKeyPrefixBytes = splitKeyPrefix != null ? Bytes.toBytesBinary(splitKeyPrefix) : null; 
    2222 
     23            Long maxFileSize = table.getChild("maxFileSize").getValueAsLong(null); 
     24            Long memStoreFlushSize = table.getChild("memStoreFlushSize").getValueAsLong(null); 
     25 
    2326            TableConfig config = new TableConfig(regionCount, splitKeys, splitKeyPrefixBytes); 
     27            config.setMaxFileSize(maxFileSize); 
     28            config.setMemStoreFlushSize(memStoreFlushSize); 
    2429 
    2530            result.put(new ByteArrayKey(tableName), config); 
  • trunk/global/hbase-util/src/main/java/org/lilyproject/util/hbase/HBaseTableFactory.java

    r4621 r4623  
    2424    TableConfig getTableConfig(byte[] tableName); 
    2525     
     26    void configure(HTableDescriptor tableDescriptor); 
     27 
    2628    /** 
    2729     * 
  • trunk/global/hbase-util/src/main/java/org/lilyproject/util/hbase/HBaseTableFactoryImpl.java

    r4621 r4623  
    6363 
    6464            try { 
     65                // Make a deep copy, we don't want to touch the original 
     66                tableDescriptor = new HTableDescriptor(tableDescriptor); 
     67                configure(tableDescriptor); 
     68 
    6569                int regionCount = splitKeys == null ? 1 : splitKeys.length + 1; 
    6670                log.info("Creating '" + tableDescriptor.getNameAsString() + "' table using " 
    67                         + regionCount + " initial region" + (regionCount > 1 ? "s.": ".")); 
     71                        + regionCount + " initial region" + (regionCount > 1 ? "s." : ".")); 
    6872                admin.createTable(tableDescriptor, splitKeys); 
    6973            } catch (TableExistsException e2) { 
     
    7680 
    7781        return new LocalHTable(configuration, tableDescriptor.getName()); 
     82    } 
     83 
     84    public void configure(HTableDescriptor tableDescriptor) { 
     85        Long maxFileSize = getTableConfig(tableDescriptor.getName()).getMaxFileSize(); 
     86        if (maxFileSize != null) 
     87            tableDescriptor.setMaxFileSize(maxFileSize); 
     88 
     89        Long memStoreFlushSize = getTableConfig(tableDescriptor.getName()).getMemStoreFlushSize(); 
     90        if (memStoreFlushSize != null) 
     91            tableDescriptor.setMemStoreFlushSize(memStoreFlushSize); 
    7892    } 
    7993     
  • trunk/global/hbase-util/src/main/java/org/lilyproject/util/hbase/TableConfig.java

    r4611 r4623  
    99    private String splitKeysAsString; 
    1010    private byte[] splitKeyPrefix; 
     11    private Long maxFileSize; 
     12    private Long memStoreFlushSize; 
    1113 
    1214    public TableConfig() { 
     
    2426        this.splitKeysAsString = splitKeys; 
    2527        this.splitKeyPrefix = splitKeyPrefix == null ? new byte[0] : splitKeyPrefix; 
     28    } 
     29 
     30    public Long getMaxFileSize() { 
     31        return maxFileSize; 
     32    } 
     33 
     34    public void setMaxFileSize(Long maxFileSize) { 
     35        this.maxFileSize = maxFileSize; 
     36    } 
     37 
     38    public Long getMemStoreFlushSize() { 
     39        return memStoreFlushSize; 
     40    } 
     41 
     42    public void setMemStoreFlushSize(Long memStoreFlushSize) { 
     43        this.memStoreFlushSize = memStoreFlushSize; 
    2644    } 
    2745 
  • trunk/global/hbaseindex/src/main/java/org/lilyproject/hbaseindex/IndexManager.java

    r4611 r4623  
    103103        table.addFamily(family); 
    104104 
     105        tableFactory.configure(table); 
     106 
    105107        if (splitKeys == null) { 
    106108            splitKeys = tableFactory.getSplitKeys(table.getName()); 
  • trunk/pom.xml

    r4609 r4623  
    3333    <!-- The following properties are all Kauri-related, and should be brought in sync with 
    3434         Kauri when moving to a new Kauri version. --> 
    35     <version.kauri>0.4-r1771</version.kauri> 
     35    <version.kauri>0.4-r1835</version.kauri> 
    3636    <version.spring>2.5.6</version.spring> 
    3737    <version.jaxrs>1.0</version.jaxrs> 
Note: See TracChangeset for help on using the changeset viewer.