Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Accumulo >> mail # user >> Programmatically Gettting a TServer address for ThriftUtil.getClient?


Copy link to this message
-
Programmatically Gettting a TServer address for ThriftUtil.getClient?
I have some code that totals the number of entries in each tablet will
the end goal of find the average number of entries per tablet;
basically for a hotspot report. My code is working on my single-node
Accumulo but not on the edge node of my Accumulo cluster. On my edge
node, the TServer list has zero entries.

  1) Any idea why the multi-node cluster is not reporting the set of TServers?
  2) Is there a different, better, recommended, way to accomplish my goal?
  LiveTServerSet tserverSet = new LiveTServerSet(instance, new
DoNothingLiveTServerSetCallback());
  tserverSet.scanServers();
  Set<TServerInstance> tserverList = tserverSet.getCurrentServers();
  if (tserverList.size() == 0) {
    throw new RuntimeException("NO TSERVERS!");
  }
  TServerInstance tServerInstance (TServerInstance) tserverList.toArray()[0];
  InetSocketAddress tserverAddress AddressUtil.parseAddress(tServerInstance.host() + ":" +
tServerInstance.port(), -1);

  List<TabletStats> tsStats = new ArrayList<TabletStats>();

  TableClientService.Iface client = ThrifUtil.getClient(new
TabletClientService.Client.Factory(), tserverAddress,
ServerConfiguration.getSystemConfiguration());
  for (String tableId : mmi.tableMap.keySet()) {
    tsStats.addAll(client.getTabletStats(null,
SecurityConstants.getSystemCredentials(), tableId));
  }

  long totalEntries = 0;
  long tabletCount = 0;
  for (TableStats info : tsStats) {
    totalEntries += info.numEntries;
    tabletCount++;
  }