use of org.apache.accumulo.core.master.thrift.BulkImportStatus in project accumulo by apache.
the class ServerBulkImportStatus method updateBulkImportStatus.
public void updateBulkImportStatus(List<String> files, BulkImportState state) {
for (String file : files) {
BulkImportStatus initial = new BulkImportStatus(System.currentTimeMillis(), file, state);
status.putIfAbsent(file, initial);
initial = status.get(file);
if (initial != null) {
initial.state = state;
}
}
}
use of org.apache.accumulo.core.master.thrift.BulkImportStatus in project accumulo by apache.
the class GetMasterStats method main.
public static void main(String[] args) throws Exception {
MasterClientService.Iface client = null;
MasterMonitorInfo stats = null;
Instance instance = HdfsZooInstance.getInstance();
AccumuloServerContext context = new AccumuloServerContext(instance, new ServerConfigurationFactory(instance));
while (true) {
try {
client = MasterClient.getConnectionWithRetry(context);
stats = client.getMasterStats(Tracer.traceInfo(), context.rpcCreds());
break;
} catch (ThriftNotActiveServiceException e) {
// Let it loop, fetching a new location
sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
} finally {
if (client != null)
MasterClient.close(client);
}
}
out(0, "State: " + stats.state.name());
out(0, "Goal State: " + stats.goalState.name());
if (stats.serversShuttingDown != null && stats.serversShuttingDown.size() > 0) {
out(0, "Servers to shutdown");
for (String server : stats.serversShuttingDown) {
out(1, "%s", server);
}
}
out(0, "Unassigned tablets: %d", stats.unassignedTablets);
if (stats.badTServers != null && stats.badTServers.size() > 0) {
out(0, "Bad servers");
for (Entry<String, Byte> entry : stats.badTServers.entrySet()) {
out(1, "%s: %d", entry.getKey(), (int) entry.getValue());
}
}
out(0, "Dead tablet servers count: %s", stats.deadTabletServers.size());
for (DeadServer dead : stats.deadTabletServers) {
out(1, "Dead tablet server: %s", dead.server);
out(2, "Last report: %s", new SimpleDateFormat().format(new Date(dead.lastStatus)));
out(2, "Cause: %s", dead.status);
}
out(0, "Bulk imports: %s", stats.bulkImports.size());
for (BulkImportStatus bulk : stats.bulkImports) {
out(1, "Import directory: %s", bulk.filename);
out(2, "Bulk state %s", bulk.state);
out(2, "Bulk start %s", bulk.startTime);
}
if (stats.tableMap != null && stats.tableMap.size() > 0) {
out(0, "Tables");
for (Entry<String, TableInfo> entry : stats.tableMap.entrySet()) {
TableInfo v = entry.getValue();
out(1, "%s", entry.getKey());
out(2, "Records: %d", v.recs);
out(2, "Records in Memory: %d", v.recsInMemory);
out(2, "Tablets: %d", v.tablets);
out(2, "Online Tablets: %d", v.onlineTablets);
out(2, "Ingest Rate: %.2f", v.ingestRate);
out(2, "Query Rate: %.2f", v.queryRate);
}
}
if (stats.tServerInfo != null && stats.tServerInfo.size() > 0) {
out(0, "Tablet Servers");
long now = System.currentTimeMillis();
for (TabletServerStatus server : stats.tServerInfo) {
TableInfo summary = TableInfoUtil.summarizeTableStats(server);
out(1, "Name: %s", server.name);
out(2, "Ingest: %.2f", summary.ingestRate);
out(2, "Last Contact: %s", server.lastContact);
out(2, "OS Load Average: %.2f", server.osLoad);
out(2, "Queries: %.2f", summary.queryRate);
out(2, "Time Difference: %.1f", ((now - server.lastContact) / 1000.));
out(2, "Total Records: %d", summary.recs);
out(2, "Lookups: %d", server.lookups);
if (server.holdTime > 0)
out(2, "Hold Time: %d", server.holdTime);
if (server.tableMap != null && server.tableMap.size() > 0) {
out(2, "Tables");
for (Entry<String, TableInfo> status : server.tableMap.entrySet()) {
TableInfo info = status.getValue();
out(3, "Table: %s", status.getKey());
out(4, "Tablets: %d", info.onlineTablets);
out(4, "Records: %d", info.recs);
out(4, "Records in Memory: %d", info.recsInMemory);
out(4, "Ingest: %.2f", info.ingestRate);
out(4, "Queries: %.2f", info.queryRate);
out(4, "Major Compacting: %d", info.majors == null ? 0 : info.majors.running);
out(4, "Queued for Major Compaction: %d", info.majors == null ? 0 : info.majors.queued);
out(4, "Minor Compacting: %d", info.minors == null ? 0 : info.minors.running);
out(4, "Queued for Minor Compaction: %d", info.minors == null ? 0 : info.minors.queued);
}
}
out(2, "Recoveries: %d", server.logSorts.size());
for (RecoveryStatus sort : server.logSorts) {
out(3, "File: %s", sort.name);
out(3, "Progress: %.2f%%", sort.progress * 100);
out(3, "Time running: %s", sort.runtime / 1000.);
}
out(3, "Bulk imports: %s", stats.bulkImports.size());
for (BulkImportStatus bulk : stats.bulkImports) {
out(4, "Import file: %s", bulk.filename);
out(5, "Bulk state %s", bulk.state);
out(5, "Bulk start %s", bulk.startTime);
}
}
}
}
use of org.apache.accumulo.core.master.thrift.BulkImportStatus in project accumulo by apache.
the class BulkImportResource method getTables.
/**
* Generates bulk import and tserver bulk imports with the information from the Monitor
*
* @return JSON object with BulkImport information
*/
@GET
public BulkImport getTables() {
BulkImport bulkImport = new BulkImport();
// Generating Bulk Import and adding it to the return object
for (BulkImportStatus bulk : Monitor.getMmi().bulkImports) {
bulkImport.addBulkImport(new BulkImportInformation(bulk.filename, bulk.startTime, bulk.state));
}
// Generating TServer Bulk Import and adding it to the return object
for (TabletServerStatus tserverInfo : Monitor.getMmi().getTServerInfo()) {
int size = 0;
long oldest = 0L;
List<BulkImportStatus> stats = tserverInfo.bulkImports;
if (stats != null) {
size = stats.size();
oldest = Long.MAX_VALUE;
for (BulkImportStatus bulk : stats) {
oldest = Math.min(oldest, bulk.startTime);
}
if (oldest == Long.MAX_VALUE) {
oldest = 0L;
}
}
bulkImport.addTabletServerBulkImport(new TabletServerBulkImportInformation(tserverInfo, size, oldest));
}
return bulkImport;
}
use of org.apache.accumulo.core.master.thrift.BulkImportStatus in project accumulo by apache.
the class TabletServerInformationTest method testFromThrift.
@Test
public void testFromThrift() {
TabletServerStatus ts = new TabletServerStatus();
ts.setBulkImports(Collections.singletonList(new BulkImportStatus()));
ts.setDataCacheHits(11);
ts.setDataCacheRequest(22);
ts.setFlushs(33);
ts.setHoldTime(44);
ts.setIndexCacheHits(55);
ts.setIndexCacheRequest(66);
ts.setLastContact(77);
RecoveryStatus recoveries = new RecoveryStatus();
recoveries.setName("testRecovery");
recoveries.setProgress(0.42);
recoveries.setRuntime(4);
ts.setLogSorts(Collections.singletonList(recoveries));
ts.setLookups(88);
ts.setName("tServerTestName:1234");
ts.setOsLoad(1.23);
ts.setResponseTime(99);
ts.setSyncs(101);
TableInfo tableInfo = new TableInfo();
tableInfo.tablets = 202;
tableInfo.ingestRate = 2.34;
tableInfo.queryRate = 3.45;
tableInfo.ingestByteRate = 4.56;
tableInfo.queryByteRate = 5.67;
tableInfo.scans = new Compacting(301, 401);
tableInfo.recs = 502;
tableInfo.majors = new Compacting(501, 601);
tableInfo.minors = new Compacting(701, 801);
ts.setTableMap(Collections.singletonMap("tableId0", tableInfo));
ts.setVersion("testVersion");
TabletServerInformation tsi = new TabletServerInformation(ts);
assertEquals("tServerTestName:1234", tsi.server);
assertEquals("tServerTestName:1234", tsi.hostname);
// can only get within a small distance of time, since it is computed from "now" at time of object creation
assertTrue(Math.abs((System.currentTimeMillis() - 77) - tsi.lastContact) < 500);
assertEquals(99, tsi.responseTime);
assertEquals(1.23, tsi.osload, 0.001);
assertEquals("testVersion", tsi.version);
CompactionsTypes compactions = tsi.compactions;
assertEquals(501, compactions.major.running.intValue());
assertEquals(601, compactions.major.queued.intValue());
assertEquals(701, compactions.minor.running.intValue());
assertEquals(801, compactions.minor.queued.intValue());
assertEquals(301, compactions.scans.running.intValue());
assertEquals(401, compactions.scans.queued.intValue());
assertEquals(202, tsi.tablets);
assertEquals(2.34, tsi.ingest, 0.001);
assertEquals(3.45, tsi.query, 0.001);
assertEquals(4.56, tsi.ingestMB, 0.001);
assertEquals(5.67, tsi.queryMB, 0.001);
assertEquals(301, tsi.scans.intValue());
// can't test here; this comes from MasterMonitorInfo
assertEquals(0.0, tsi.scansessions, 0.001);
assertEquals(tsi.scansessions, tsi.scanssessions, 0.001);
assertEquals(44, tsi.holdtime);
assertEquals("tServerTestName:1234", tsi.ip);
assertEquals(502, tsi.entries);
assertEquals(88, tsi.lookups);
assertEquals(55, tsi.indexCacheHits);
assertEquals(66, tsi.indexCacheRequests);
assertEquals(11, tsi.dataCacheHits);
assertEquals(22, tsi.dataCacheRequests);
assertEquals(55 / 66.0, tsi.indexCacheHitRate, 0.001);
assertEquals(11 / 22.0, tsi.dataCacheHitRate, 0.001);
RecoveryStatusInformation rec = tsi.logRecoveries.get(0);
assertEquals("testRecovery", rec.name);
assertEquals(0.42, rec.progress, 0.001);
assertEquals(4, rec.runtime.intValue());
}
Aggregations