use of org.apache.accumulo.tserver.TabletServerResourceManager.TabletResourceManager in project accumulo by apache.
the class TabletServer method splitTablet.
private TreeMap<KeyExtent, TabletData> splitTablet(Tablet tablet, byte[] splitPoint) throws IOException {
long t1 = System.currentTimeMillis();
TreeMap<KeyExtent, TabletData> tabletInfo = tablet.split(splitPoint);
if (tabletInfo == null) {
return null;
}
log.info("Starting split: {}", tablet.getExtent());
statsKeeper.incrementStatusSplit();
long start = System.currentTimeMillis();
Tablet[] newTablets = new Tablet[2];
Entry<KeyExtent, TabletData> first = tabletInfo.firstEntry();
TabletResourceManager newTrm0 = resourceManager.createTabletResourceManager(first.getKey(), getTableConfiguration(first.getKey()));
newTablets[0] = new Tablet(TabletServer.this, first.getKey(), newTrm0, first.getValue());
Entry<KeyExtent, TabletData> last = tabletInfo.lastEntry();
TabletResourceManager newTrm1 = resourceManager.createTabletResourceManager(last.getKey(), getTableConfiguration(last.getKey()));
newTablets[1] = new Tablet(TabletServer.this, last.getKey(), newTrm1, last.getValue());
// roll tablet stats over into tablet server's statsKeeper object as
// historical data
statsKeeper.saveMajorMinorTimes(tablet.getTabletStats());
// lose the reference to the old tablet and open two new ones
synchronized (onlineTablets) {
onlineTablets.remove(tablet.getExtent());
onlineTablets.put(newTablets[0].getExtent(), newTablets[0]);
onlineTablets.put(newTablets[1].getExtent(), newTablets[1]);
}
// tell the master
enqueueMasterMessage(new SplitReportMessage(tablet.getExtent(), newTablets[0].getExtent(), new Text("/" + newTablets[0].getLocation().getName()), newTablets[1].getExtent(), new Text("/" + newTablets[1].getLocation().getName())));
statsKeeper.updateTime(Operation.SPLIT, start, 0, false);
long t2 = System.currentTimeMillis();
log.info("Tablet split: {} size0 {} size1 {} time {}ms", tablet.getExtent(), newTablets[0].estimateTabletSize(), newTablets[1].estimateTabletSize(), (t2 - t1));
return tabletInfo;
}
use of org.apache.accumulo.tserver.TabletServerResourceManager.TabletResourceManager in project accumulo by apache.
the class TabletResourceManagerTest method setUp.
@Before
public void setUp() throws Exception {
tsrm = createMock(TabletServerResourceManager.class);
extent = createMock(KeyExtent.class);
conf = createMock(TableConfiguration.class);
trm = tsrm.new TabletResourceManager(extent, conf);
}
use of org.apache.accumulo.tserver.TabletServerResourceManager.TabletResourceManager in project accumulo by apache.
the class TabletTest method correctValuesSetForProperties.
@Test
public void correctValuesSetForProperties() {
TableConfiguration tableConf = EasyMock.createMock(TableConfiguration.class);
CompactionPlan plan = EasyMock.createMock(CompactionPlan.class);
WriteParameters writeParams = EasyMock.createMock(WriteParameters.class);
plan.writeParameters = writeParams;
DatafileManager dfm = EasyMock.createMock(DatafileManager.class);
TabletTime time = EasyMock.createMock(TabletTime.class);
TabletServer tserver = EasyMock.createMock(TabletServer.class);
TabletResourceManager tserverResourceManager = EasyMock.createMock(TabletResourceManager.class);
TabletMemory tabletMemory = EasyMock.createMock(TabletMemory.class);
KeyExtent extent = EasyMock.createMock(KeyExtent.class);
ConfigurationObserver obs = EasyMock.createMock(ConfigurationObserver.class);
Tablet tablet = new Tablet(time, "", 0, new Path("/foo"), dfm, tserver, tserverResourceManager, tabletMemory, tableConf, extent, obs);
long hdfsBlockSize = 10000l, blockSize = 5000l, indexBlockSize = 500l;
int replication = 5;
String compressType = "snappy";
EasyMock.expect(tableConf.iterator()).andReturn(Collections.emptyIterator());
EasyMock.expect(writeParams.getHdfsBlockSize()).andReturn(hdfsBlockSize).times(2);
EasyMock.expect(writeParams.getBlockSize()).andReturn(blockSize).times(2);
EasyMock.expect(writeParams.getIndexBlockSize()).andReturn(indexBlockSize).times(2);
EasyMock.expect(writeParams.getCompressType()).andReturn(compressType).times(2);
EasyMock.expect(writeParams.getReplication()).andReturn(replication).times(2);
EasyMock.replay(tableConf, plan, writeParams);
AccumuloConfiguration aConf = tablet.createTableConfiguration(tableConf, plan);
EasyMock.verify(tableConf, plan, writeParams);
Assert.assertEquals(hdfsBlockSize, Long.parseLong(aConf.get(Property.TABLE_FILE_BLOCK_SIZE)));
Assert.assertEquals(blockSize, Long.parseLong(aConf.get(Property.TABLE_FILE_COMPRESSED_BLOCK_SIZE)));
Assert.assertEquals(indexBlockSize, Long.parseLong(aConf.get(Property.TABLE_FILE_COMPRESSED_BLOCK_SIZE_INDEX)));
Assert.assertEquals(compressType, aConf.get(Property.TABLE_FILE_COMPRESSION_TYPE));
Assert.assertEquals(replication, Integer.parseInt(aConf.get(Property.TABLE_FILE_REPLICATION)));
}
Aggregations